`
zhy20045923
  • 浏览: 157356 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

android资源适配解析及资源适配优先级规则

阅读更多
1.sw的值是怎么计算得来的

sw = width *  DisplayMetrics.DENSITY_DEFAULT / densityDPI

width是指屏幕的宽度

DisplayMetrics.DENSITY_DEFAULT是指google的标准值,一般是160

densityDPI是指屏幕密度(每寸像素数)

计算方法如下:
DisplayMetrics dm = new DisplayMetrics();  
		dm = getResources().getDisplayMetrics();  
		  
		float density  = dm.density;        // 屏幕密度(像素比例:0.75/1.0/1.5/2.0)  
		int densityDPI = dm.densityDpi;     // 屏幕密度(每寸像素:120/160/240/320)  
		float xdpi = dm.xdpi;             
		float ydpi = dm.ydpi;  
		  
		int screenWidth  = dm.widthPixels;      // 屏幕宽(像素,如:480px)  
		int screenHeight = dm.heightPixels;

2.sw的值是如何适配的
sw是指smallest width,就是说最小限度,如你的手机sw计算结果是320,你的资源配置有drawable-sw320dp,drawable-sw600dp,drawable-sw720dp,那么将适配到drawable-sw320dp;如果你的手机sw计算是640,那么将适配到drawable-sw600dp

下面列出可用的资源值修饰符:

1.Mobile Country Code(MCC 移动国家编码) 和 Mobile Newwork Code(MNC 移动网络编码)

    国家和可选择的网络取决于你当前所使用的SIM卡,MCC:mcc+3个代表国家的数字编码,MNC:mnc+2个代表网络的数字编码,举个例子:mcc234-mnc20,你可以找到这些编码在http://en.wikipedia.org/wiki/MobileNetworkCode.

2.语言和区域

    语言根据ISO 639-1 指定2个小写字母作为代表,紧接着可选择的区域先以r开头(region)然后根据ISO 3166-1-alpha-2 语言编码,也是2个字母不过是大写,还是举个例子吧:

    en(英语),en-rUS(美国英语),en-rGB(GB不知道是哪个国家~。~,大家可以去查找通过维基百科)

3.最小的屏幕宽度

    以sw<Dimention value>dp的格式(比如sw600dp,sw320dp…)来指定最小的设备尺寸(宽和高)。那为什么说是最小屏幕宽度?考虑到横竖屏,实质就是宽高的较小值。

    用在提供多个布局,安卓选择最接近但是不超过当前屏幕尺寸。

4.有效的屏幕宽度

    以w<Dimention value>dp 来表示最小的设备屏幕宽度,比如:w600dp,w320dp,w720dp等,同样也是为了支持多个布局选择,不同于最小的屏幕宽度,有效的屏幕宽度

    它跟当前的屏幕宽度做对比(比如当前是横屏的屏幕宽度),安卓选择最接近但是不超过当前屏幕尺寸。

5.有效的屏幕高度

    与有效的屏幕宽度类似,表示方法以h<Dimension value>dp.

6.屏幕尺寸

    实用大致对照表:

    屏幕             宽度          高度           尺寸               大小        密度      
    Type           (Pixels)     (Pixels)   Range (inches)     Size         Group
    QVGA            240          320        2.6 - 3.0            Small       Low
    WQVGA         240          400        3.2 - 3.5           normal     Low
    FWQVGA       240          432        3.5 - 3.8           normal     Low
    HVGA            320          480        3.0 - 3.5           normal     Medium
    WVGA           480          800        3.3 - 4.0           normal     High
    FWVGA         480          854        3.5 - 4.0           normal     High
    WVGA           480          800        4.8 - 5.5            large       Medium
    FWVGA         480          854         5.0 - 5.8           large       Medium

    大约 2~3 inch 为 small, 3~4 inch 为normal,4~6inch 为large, 大于6为xlarge

    因为每个屏幕类型都有不同的尺寸(比如QVGA可能有2~3个尺寸),在平板电脑里更常见,比较好的方式是用前面提到的最小的屏幕宽度和有效的屏幕宽度(高度)来更精确的指定,安卓在检测layout的修饰符,会优先考虑后者。

7.屏幕的方向

    port(portrait)、land(landscape)、square(square)

8.Dock Mode 所谓的底座模式?

    car(行车模式)、desk (断开底座)

9.Night Mode

    这个用来指定是否是夜间模式,night或者notnight,以此我们可以修改一个theme或者color theme来达到效果

10.屏幕像素密度(dpi)

    最佳实践方式:给ldpi(120dpi),mdpi(160dpi),hdpi(240dpi),xhdpi(320dpi) 都指定对应的图片资源。

    然而你也可以指定nodpi表示不去适配dpi。同样安卓也是选择最接近当前设备dpi的Drawables文件夹。

11.触屏类型

    notouch、stylus、finger

12.键盘有效性

    One of keysexposed, keyshidden, or keyssoft.

13.键盘输入类型

    One of nokeys, qwerty, or 12key.

14.导航键有效性

    One of navexposed or navhidden.

15.UI导航类型

    nonav,dpad,trackball,wheel

16.平台版本

    target API Level,  以v<API level>  比如v7. 用来限制资源只能跑在指定API或者更高的设备上。

你可以为任何资源指定多个修饰符,然后以- 分开,任何混合写法都是支持的,但是只能是上面列出的修饰符,还有一点就是每种修饰符只能出现1次。
0
0
分享到:
评论

相关推荐

    android缓冲解析

    在Android开发中,"android缓冲解析"是一种优化用户体验的技术,主要应用于处理网络资源,特别是图片加载,以确保页面能够快速地展示,同时不影响后续的图片加载。这种技术的核心是利用缓存机制,先显示本地数据或者...

    CMDN CLUB#14期:Android系统资源访问机制的探讨

    Android系统的资源访问机制是构建和管理应用程序资源的重要组成部分,它确保了应用程序的布局、样式、图片、字符串等资源可以被有效管理和访问。本部分内容将详细探讨Android系统资源访问机制,包括资源的概念、资源...

    Android 闹钟app 源码 可以自己设定时间 ,适配android 8,9,10,11

    本资源提供的"Android 闹钟app 源码"是一个适用于Android 8到11版本的源代码,非常适合学习和实践Android应用开发。以下是基于该源码可能涉及的主要知识点的详细解析: 1. **AlarmManager**: Android中的...

    android notification完全解析Demo

    本文将深入解析Android Notification的工作原理、设计模式以及如何创建一个完整的Demo。 一、Notification概述 Notification是Android系统提供的一种通知用户的应用程序事件的方式,它可以在状态栏中显示图标、文字...

    Android11.0最新Framework解析

    7. **折叠屏设备支持**:随着折叠屏设备的出现,Android 11为这类设备提供了更好的适配和支持,确保应用在不同屏幕尺寸间平滑切换。 8. **通知流优化**:Android 11的的通知系统进行了改进,将对话通知单独分类,使...

    android notifaication官方demo适配AS3.0的

    在Android Studio 3.0及以后版本,`build.gradle`文件中`dependencies`块的`google()`和`jcenter()`仓库的顺序可能会影响依赖的解析。通常,将`google()`放在`jcenter()`之前可以确保优先从Google的Maven仓库下载...

    Android Framework 开发揭秘

    同时,也会涉及如何适配不同Android版本,确保应用的兼容性和稳定性。 除此之外,本书还会涵盖以下几个重要主题: - **系统启动流程**:介绍Android系统的启动过程,包括Zygote进程的创建、System Server的初始化...

    最新最全的Android开发笔记

    Android的通知系统也得到了详尽的解释,包括如何创建通知,设置通知优先级,以及利用Notification Channels实现Oreo及以上版本的兼容性。 最后,笔记还涵盖了Android的权限管理,特别是针对Android 6.0及以上版本的...

    Android Volley框架完全解析

    **Android Volley 框架完全解析** Android Volley 是 Google 推出的一款强大的网络请求库,专为 Android 应用设计,旨在提供轻量级、高效、快速的网络通信方案。Volley 主要针对 JSON 类型的数据进行优化,适用于...

    安卓(Android)期末课程设计-复习题库

    - 多屏幕适配:掌握dp、sp单位,以及使用dimen资源进行不同分辨率屏幕的适配。 4. **数据存储** - SharedPreferences:用于保存轻量级配置信息。 - SQLite数据库:学习创建、查询、更新和删除数据的基本操作。 ...

    Android可编程计算器 src

    这可能通过自定义的解析器和计算类实现,处理加减乘除、括号、优先级等运算规则。如果计算器具有编程功能,可能还需要支持变量、函数等高级特性。 6. **Java/Kotlin语言**:Android应用主要用Java或Kotlin编写。...

    android触屏计算器源码

    - **运算符优先级**:理解并正确处理乘除先于加减的运算规则,以及括号内的运算优先级。 - **错误处理**:考虑无效输入,如连续的运算符、未闭合的括号等,需要有恰当的错误处理机制。 5. **资源管理**: 图标、...

    android 开发 事例

    最后,考虑到Android设备的多样性,适配不同屏幕尺寸和分辨率的UI设计也是挑战之一。使用布局权重、可折叠布局(如CollapsingToolbarLayout)和响应式设计(如PercentRelativeLayout或ConstraintLayout)是实现这一...

    android lib的使用例子

    在实际操作中,我们还可以利用Android Library的资源映射机制,让外壳项目中的资源优先级高于库项目,从而实现资源的差异化。例如,库项目中定义了一个默认的背景颜色,而在外壳项目中,我们可以提供一个同名但颜色...

    Android9.0开发手册-官方更新

    本文将基于“Android 9.0开发手册—官方更新”这一核心资料,深入剖析其在功能特性、开发指南及适配策略等方面的关键知识点。 #### 二、新功能特性介绍 1. **自适应电池(Adaptive Battery)** - 通过机器学习技术...

    安卓Android源码——实现Notification的通知栏常驻.rar

    在Android API 26及以上版本,通知被分为多个优先级,例如`PRIORITY_MIN`, `PRIORITY_DEFAULT`, `PRIORITY_HIGH`, 和 `PRIORITY_MAX`。常驻通知通常需要设置为至少`PRIORITY_DEFAULT`,因为更低的优先级可能会导致...

    安卓巴士推荐android开发书籍

    安卓巴士推荐的Android开发书籍是一份宝贵的资源,旨在帮助开发者提升技能,了解最新的开发技术和最佳实践。以下是一些核心的知识点,涵盖Android开发的各个方面: 1. **基础概念与环境搭建**: - Android SDK:...

    android计算器标准版

    2. 运算逻辑:在解析出表达式后,计算器运用运算优先级规则进行计算。例如,先处理括号内的运算,再处理乘除,最后处理加减。对于浮点数运算,需要考虑到浮点误差问题,确保结果尽可能精确。 三、用户界面 一个...

    android面试 题

    以下是一些重要的Android面试题及相关的知识点解析,帮助你准备面试,提升专业能力。 1. **Activity生命周期**:了解Activity的创建、运行、暂停、恢复和销毁等状态,以及在不同状态间的转换方法。例如,onCreate()...

    java mail for android

    Java Mail for Android 是一个专为Android平台设计的邮件处理库,它使得在Android应用中实现邮件发送和接收变得更加便捷。这个库包含三个重要的JAR文件:mail.jar、activation.jar和additionnal.jar,它们各自承载了...

Global site tag (gtag.js) - Google Analytics