Android适配总结

安卓开发 之小白养成-Android适配 手机适配的应用和使用场景 使android应用程序适用于不同的国家语言、型号、尺寸和SDK版本等手机环境中,其主要功能和界面风格保持不变。 手机适配主要包括三个方面:语言适配、屏幕适配、SDK平台的适配 最复杂最麻烦的是屏幕适配。 语言适配 要用于文本内容的国际化。如按钮的标题、输入提示信息等 当把app装中不同的语言环境中的手机中,app应该能够适应不同的手机来显示不同的语言。例如:安装... 阅读详情

做Android适配的同学们头疼的一件事就是机型的适配了,因为Android系统开源的缘故,市面上有太多太多的手机型号,厂商私自定制rom,不同的屏幕尺寸,不同的屏幕分辨率,不同的系统版本不同的API,都给Android工程师们带了五花八门的适配难题。本文尝试对常见的适配问题及解决方案做一个归纳总结。

系统版本适配

这应该是相对最好解决的一类适配问题。因为Android系统的演进,有些旧的API过时了被丢弃,而又有些新的API被引入进来。如果开发中不注意,比如,app目标最低sdk版本是14,但是其中调用了level 23才引入的API,则会造成app崩溃。

解决这类问题的办法也很简单,判断Android系统版本,针对不同的版本调用不同level的API。Build类中的

Build.VERSION.SDK_INT可以获取当前系统的版本,将它与期望的目标版本标即可。

ROM适配

因为Android是一个开源的系统,所以很多厂商机会都会对rom进行深度定制,这又给做Android app开发的同学们带了很多烦恼。你加班加点的要解决的,可能是一个在其它手机上都正常,但是在某个厂商的某个特定机型上就会崩溃的bug(同一厂商的不同机型都可能存在这样的问题……)。
因为市面上的机型如此之多,在实验室测试时是不可能涵盖所有机型的。针对rom的问题,首先需要建立app的log收集系统,在崩溃发生时记录厂商,机型,崩溃栈等信息,并上报的服务器。从统计信息中就可以通过分析log定位问题了。如果确定是只有某一特殊机型的问题,那么,要么修改代码,采用该机型可以适配的通用方案,或者,在原有方案的基础上,针对该机型增加特例方案。
Android获取厂商和设备信息的API:android.os.Build.MANUFACTURER,android.os.Build.MODEL。

屏幕适配

这将是本文的重点,也是Adroid开发中需要重点解决的适配问题。

支持不同大小的屏幕

合理使用wrap_content,match_parent。

尽可能的使用RelativeLayout。

针对不同尺寸的屏幕,使用不同的布局文件:

res/layout/main.xml

res/layout-large/main.xml

合理使用.9图片。

支持不同屏幕密度的设备

1.使用与屏幕密度无关的单位——dp,sp。
dp的定义如下:
Density-independent pixel (dp)独立像素密度。标准是160dip.即1dp对应1个pixel,计算公式如:px = dp * (dpi / 160),屏幕密度越大,1dp对应 的像素点越多。 
上面的公式中有个dpi,dpi为DPI是Dots Per Inch(每英寸所打印的点数),也就是当设备的dpi为160的时候1px=1dp;

dp在适配中的作用是:在布局文件写某个View的宽和高为160dp*160dp,这个View在任何分辨率的屏幕中,显示的尺寸大小是大约是一致的(可能不精确),大概是 1 inch * 1 inch。
dp能够让同一数值在不同的分辨率展示出大致相同的尺寸大小。但是当设备的尺寸差异较大的时候,就无能为力了。适配的问题还需要我们自己去做,于是我们可能会这么做:
<?xml version="1.0" encoding="utf-8"?>  
<resources>  
    <!-- values-hdpi 480X800 -->  
    <dimen name="imagewidth">120dip</dimen>      
</resources>  

<resources>  
    <!-- values-hdpi-1280x800 -->  
    <dimen name="imagewidth">220dip</dimen>      
</resources>  


<?xml version="1.0" encoding="utf-8"?>  
<resources>  
    <!-- values-hdpi  480X320 -->  
    <dimen name="imagewidth">80dip</dimen>      
</resources>
为了优质的用户体验,依然需要去针对不同的dpi设置,编写多套数值文件。可以看出,dp并没有能解决适配问题。

2.使用百分比

做过web开发的同学都知道,宽度,高度,margin,padding等等和尺寸有关的属性,都可以使用百分比。这样就非常灵活了,所以,web机会不存在适配的

问题(其实也存在,不同浏览器,以及不同移动设备的适配)。But,在Android不支持百分比的时候。。。实现类似百分比的功能,可能需要1、代码去动态计算;2、利用weight(weight必须依赖Linearlayout,而且并不能适用于任何场景)。

不过,目前Google也已经提供了官方的解决方案,这里有个栗子:https://github.com/JulienGenoud/android-percent-support-lib-sample。

其实,上文提到的使用match_parent,也是个百分比的例子——100%。

3. 对不同分辨率提供不同的图片

这不单可以解决适配的问题,同时能提高性能。如果对所有设备都提供一套图片,Android系统本身提供了机制,在加载图片的时候,会根据目标设备对图片进行适当的缩放,以获得最佳的显示效果。当然,如果设备尺寸差别较大,显示效果就不理想了。同时,这个缩放的过程明显是要占用cpu,gpu时间的。如果提前针对不同设备准备不同的图片,就可以尽可能的省去这个过程。当然,代码是增加了包的尺寸。空间和时间,总是一对对立的矛盾统一。

安卓适配详解 概述一直想把安卓开发过程中所有的关于不同手机类型,手机系统,及API版本的适配做一个整理,这些内容虽然简单但细节太多,所以想整理一下,以便自己的总结,由于各种原因一直被放下,现在下定决心会持续更新博客上的文章,本文将详细介绍安卓界面适配过程,后期将会整理一些安卓性能,控件等方面在不同的手机和系统版本上的适配流程,希望对大家开发安卓有所帮助,由于网上很多关于一些dp,sp,px的概念资料,所以本文不进 阅读详情

相关推荐

Android 11适配指南之系统相机拍照、打开相册,安卓app开发教程

Android 6 权限适配 Android 7 文件适配 Android 10/11 存储适配 ok,接下来以一个更换头像的小例子来讲解一下。 示例 ============================================================= 点击头像,然后弹窗,给出不同的选项,执行不同的操作。 mBinding.llImg.setOnClickListener { TakeImage 《Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目..

m0_64319000的博客 2005

android新版本适配-android13最全适配方案(参考一)

android新版本适配-android13最全适配方案

weixin_42504805的博客 6573

从KVM虚拟化到Openstack云化架构综述

目录 摘要 OpenStack的虚拟化技术 OpenStack架构介绍 Nova Swift KeyStone Neutron Glance Cinder Ceilometer Heat 摘要 这两年的工作中,接触到公有云和私有云的项目还不少。起初对于Openstack的了解,仅停留在其几大组件的交互上,如Nova、Neutron、Glance等,以及对各大云厂商功能点上...

liyunpeng229的博客 2051

Android 8.1适配规范及常见问题处理方式,让你一口吃上“奥利奥”

热文导读 | 点击标题阅读教你如何开发一款实用的完整Android App,附源码吊炸天!74款APP完整源码!一份年薪30万的Android面试宝典,附答案来源:OPPO开发者平台(ID:OPPOMOBILEOPEN)据 Android Central,谷歌在安卓开发者博客上更新文章,推出了几项新的规定,极可能会对安卓生态有新的影响。其中一条:从 2018 年 8 月开始,所有向 Play 商店

Java和Android架构 7694

CZT与FFT频谱分析方法对比:从任意频带重采样到高精度频谱分析

M = 85 % 输出点数f0 = 70 Hz % 起始频率DELF = 0.4 Hz % 频率步长频率分辨率提高到0.4 Hz分析带宽聚焦在[70, 103.6]Hz更清晰地分辨出78Hz和82Hz的频率分量。

2403_88098319的博客 1859

医药领域知识图谱快速及医药问答项目(项目全过程)

该项目是中科院软件所刘焕勇老师在github上的开源项目,基于知识图谱的医药领域问答项目 Github项目地址:mirrors / liuhuanyong / qasystemonmedicalkg · GitCode 一、项目环境搭建 该部分要十分注意,由于版本升级的问题,一些用法及格式已经不兼容了。 python3.8 下载地址:Python Release Python 3.8.10 | Python.orght...

qq_52062182的博客 9916

Android 11 适配——整理总结篇

适配安卓11(API30)记录、整理以及总结分享。

wzj_what_why_how的博客 2272

手把手教你用XC7A35T FPGA搭建低成本机器视觉系统(含开发板选型指南)

本文详细介绍了如何利用AMD(原Xilinx)Artix-7系列中的XC7A35T FPGA芯片,搭建一套低成本的机器视觉系统。内容涵盖从芯片选型深度剖析、开发板(如黑金AX7035B)对比指南,到使用Vivado创建工程、编写图像处理模块(如RGB转灰度),以及资源优化和与上位机(如OpenCV)协同工作的完整流程,旨在为开发者提供一套可实践的高性价比硬件加速视觉解决方案。

beta5的博客 353

Android屏幕适配

一、Android屏幕适配-->基本概念 1、屏幕尺寸 (英寸) 屏幕尺寸指屏幕的对角线的长度,单位是英寸(in),1英寸=2.54厘米 链接:英寸(吋)是使用于英国及其前殖民地的长度单位,一般为1in=2.54cm,在英制里,12英寸为1英尺,36英寸为1码 2、px (像素) 是英文单词pixel的缩写,意为像素,屏幕上的点。我们通常所说的分辨率如480X800就是指的像素,一般以纵...

树叶的博客 845

matlab电偶极子源码,电偶极子的MATLAB场模拟

电偶极子周围电场电势分布的MATLAB三维模拟Matlab可以用于模拟四维场的效果,本文以电偶极子的电场和电势场为例展示MATLAB在该方面领域的应用。摘要电偶极子由一个正电荷和一个负电荷组成,其电场和空间电势分布与单电荷相比具有一些重要的特性。本文将给出电场和电势场的近似表达式。这两个量的精确表达式是复杂的,不太常用,因此 MATLAB 被采用来操作精确值和绘制三维分布的远区域, 近区域和一侧区...

weixin_35135480的博客 3150

claude code desktop中出现Doesn‘t look like an Anthropic model - expected a gateway model route 解决方案

本文主要介绍了claude code desktop中出现Doesn’t look like an Anthropic model - expected a gateway model route referencing an Anthropic model和Server is busy. Retrying的解决方案,希望能对使用claude code desktop的同学们有所帮助。 文章目录 1. 问题描述 2. 解决方案

weixin_43178406的博客 9万+

Android开发中针对市面主流机型的适配方案

Android开发中常用的适配方案

mikehot的博客 1965

【Halcon-2D测量】set_metrology_object_param 函数功能(用于配置计量对象常规参数)

HALCON算子 set_metrology_object_param 是2D计量模块的核心配置工具,用于动态修改计量对象的测量区域、边缘检测和几何拟合参数。该算子需在检测前调用,支持批量或单独修改对象参数,包含三类关键参数:测量区域(如长度、间距)、边缘检测(如平滑Sigma、阈值)和几何拟合(如RANSAC阈值、最小分数)。使用时需注意参数互斥规则(如measure_distance优先于num_measures)和多线程同步要求。算子无输出参数,仅修改计量模型内部状态,需配合apply_metrolo

weixin_45590420的博客 292

android studio 适配安卓10版本

Android Studio 适配安卓10版本的步骤指南 在Android开发中,适配新的操作系统版本是必不可少的步骤,尤其是Android 10(API 29)的特性增加了许多隐私和安全方面的增强。对于一个刚入行的小白开发者来说,适配可能看起来是一个挑战,但通过系统性的步骤和代码示例,我们可以轻松克服这个问题。 流程概述...

weixin_40937850的博客 554

【XSRP软件无线电】基于软件无线电平台的FM数字接收系统设计(含有完整工程资料获取链接)

随着无线通信技术的快速发展,软件无线电(Software Defined Radio, SDR)作为一种新兴的无线通信技术,逐渐成为研究和应用的热点。传统的无线接收机通常依赖于专用硬件实现其功能,灵活性和可扩展性有限。相较之下,软件无线电利用软件来实现信号处理和调制解调功能,能够适应多种频率和调制方式,使无线通信系统更加灵活和高效。在FM(频率调制)广播中,数字接收技术的应用不仅提高了信号的抗干扰能力,还能提供更好的音质和更多的附加信息(如广播电台名称、节目内容等)。

嵌入式技术开发 1367

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Android 适配安卓9.0,适配全面屏,Dialog或DialogFragment适配全面屏

Activity适配全面屏: 重写Activt /** * 生命周期 onCreate->onStart->onResume->onAttachedToWindow * 判断是否是异形屏,必须在此方法 */ @Override public void onAttachedToWindow() { super.onAttachedToWindow(); //适配安卓Q全面屏 NotchUtil.

凌云志 2849

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

android 自动适配框架,安卓自动布局适配所有机型

一、概述安卓机型千差万别,包括手机、平板以及其它开发板,有主流的16:9也有普通的4:3、2:1等,美工在ui设计上通常是给出一套设计图,如何简单快速的适配到所有机型通常都让开发者感到困扰,不同大小的设备要能做到等比例缩放,不同比例的设备在缩放时又要保证图像不变形又要有一定的特殊变换使其美观。为了快速满足以上需求,我们定制了并开源了一套布局源码地址:https://github.com/Super...

weixin_28926205的博客 804

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

安卓Android屏幕适配,ScreenMatch插件的使用

安卓Android屏幕适配,使用ScreenMatch插件,原理通俗易懂,实践简单易上手

xiaohaha123258的博客 4399

android9适配机型,安卓9.0还未全面适配,安卓Q又来了,适配机型新增3大功能

原标题:安卓9.0还未全面适配,安卓Q又来了,适配机型新增3大功能目前手机系统最新的版本是安卓9.0,截止到目前为止,各家手机系统关于安卓9.0的适配已经接近为尾声,但是安卓9.0的适配还没有全面适配。最新消息显示,安卓Q又要来了,适配手机或者其他设备将新增3大功能。 可能大家还不明白安卓Q是什么,用通俗的话来说,其实安卓P和安卓Q就是一个递进的循环,现在的安卓P是安卓9.0,下一个就应该是安卓1...

weixin_39783360的博客 353

android10强制适配暗黑模式,安卓10(Q)暗黑模式适配

今天更新了IOS13.1正式版,基本上IOS13已经全面推送了,IOS13一个新特色就是暗黑模式DarkMode,其实就是深色主题啦。那么很多IOS开发大佬都开始适配了,那么我们安卓10一样增加了这个深色主题背景,跟上版本的脚步,一起来适配它!效果图废话不多说,先上图,正常模式APP模拟器开启深色主题适配后效果准备工作在 attrs.xml 文件中定义好我们需要的一些常用的属性复制代码然后在col...

weixin_39742958的博客 940

安卓图片适配

接着上一篇安卓适配详解之后,本篇文章介绍一下图片的适配,大致分为两个部分: deawable 文件适配 .9图片的使用 drawable 首先根据设备的dpi建立相应的文件夹,放置不同大小的图片,如下图: 这里可以看出随着手机dpi的升高,根dpi可大致分为mdpi,hdpi,xhdpi,xxhdpi,xxxdpi文件夹,按照安卓官方的适配建议需要每个文件夹中都放置相对应的图片,这牙膏一个图片就会

浅谈Android 5554

Android11适配MIUI12,安卓11版MIUI12来了,3款已适配

原标题:安卓11版MIUI12来了,3款已适配现在安卓11系统第二个测试版升级更新都已经推送了,不知道各位有没有升级更新到安卓11系统体验一下新系统。 不知道你的手机能不能升级安卓11系统,厂商有没有为你的手机适配安卓11系统,现在小米MIUI12系统已经确定小米10,小米10Pro,RedmiK30 Pro三款手机适配安卓11版MIUI12系统了。其实在安卓11系统测试版推出时小米就已经开始适配...

weixin_36084318的博客 648

android适配原理,安卓屏幕适配原理简单理解

在产品实现中,保证界面展示时适配各种分辨率各种尺寸是非常重要的。我们知道安卓屏幕大小分辨率有不同的规格,那开发者是如何在UI提供一套图片的情况下做到适配,背后的理论依据是什么呢?首先先了解以下概念:1.分辨率。分辨率是手机屏幕像素点数,单位px。常见的分辨率有480×800、720×1280、1080×1920等。720×1280表示此屏幕宽有720个像素,高有1280个像素。2.屏幕大小。屏幕大...

weixin_39604983的博客 595

Android获取相册地址适配,【Android】安卓Q适配指南-相册

碎碎念本来每次安卓版本升级都是非常期待的事情,但是开发者就吃苦了!!!尤其是从Q开始,应用采用沙盒模式,即各种公共文件的访问都会受到限制。。。所以适配Q成了当务之急,然鹅网上关于适配的资料少之又少(可能是我太菜了)主要出现的问题:根据图片的绝对路径无法正常加载图片,同时使用File.delete删除也是失效直到我看到oppo开发者平台的开发指南:AndroidQ版本应用兼容性适配指导,才解决了这...

weixin_28761725的博客 370

Android 安卓UI界面自适配

安卓机器有各种尺寸,UI界面逐个适配比较麻烦。 UI界面自动适配 示例:               示例完整源码:AndroidAutofit源码.zip 适配函数:AutoSize(View view, int w, int h, int DesignW, int DesignH) package sci.demo.androidautofit; import sci.t...

暂无内容 1861
上一篇: 适配器模式
下一篇: 桥接模式
hunter800421
博客等级 码龄22年 60粉丝 97原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值