Android分辨率适配心得

  关于Android分辨率适配,这个是Android开发很头疼的一个问题,也需要花费相当一部分开发时间处理的一个问题,往往一个界面怎么适配就得想半天,特别是新手,也经常有人问我是怎么适配分辨率的,我也不能几句话说清楚,自己也在研究中。

  其实,我觉得分辨率适配,不只是研发单方面的事情,与产品、UI设计师也有很大关联。首先产品必须了解一点Android布局以及分辨率适配的知识,设计的界面布局可以尽量简洁一点,效果图界面显示效果尽量稀疏一点,考虑到各个尺寸的手机每个界面的显示情况。其次,UI设计师设计时,也最好先定义一些级别的尺寸,例如一个应用的所有文字大小只有6个级别,所有界面的设计都尽量在这6个级别中选取,不要每个界面文字都不同,这样终端如果在配置文件里配置文字大小,就只需要6个配置了,另外,按钮背景等的切图,能不使用颜色渐变就不使用颜色渐变,这样终端可以使用.9.png的图片,既减小apk的尺寸,又节约应用内存。

  分辨率适配必须了解的知识:

  Supporting Multiple Screens :http://wiki.eoeandroid.com/Supporting_Multiple_Screens

  Providing Resources :http://wiki.eoeandroid.com/Providing_Resources

  

  我觉得分辨率适配的主要的几种方式:

  1、通过配置文件适配分辨率:

  控件尺寸,我觉得可以以屏幕宽度作为参考,一般手机屏幕比例差不多是320*480,如果一个控件的高度大约是屏幕总高度的0.1,就就差不多是宽度的0.1*1.5倍。

  例如,文字大小,可以以屏幕宽度做参考,定义几个级别的大小(sw为屏幕宽度):

  textsize1 = 23    (0.036*sw,列表3级)

  textsize2 = 32    (0.050*sw,列表2级)

  textsize3 = 37    (0.058*sw,列表1级)

  textsize4 = 45    (0.070*sw,标题)

  textsize5 = 56    (0.088*sw,特大)

  然后应用中尽量使用这几个文字大小。

  

  配置文件,可以定义以下几个配置文件:

  values-small(可以当做sw300计算)

  values-normal(可以当做sw320计算)

  values-large(可以当做sw480计算)

  values-xlarge(可以当做sw720计算)

  values-sw300dp(sw=300dp,以下相同)

  values-sw320dp

  values-sw340dp

  values-sw360dp

  values-sw400dp

  values-sw480dp

  values-sw520dp

  values-sw600dp

  values-sw720dp

  前4个是兼容api13以前的手机,api13以后就支持sw属性了,sw320dp附近的大小间隔可以精细点,因为大多数屏幕宽度都是320dp-360dp范围内,基本按照这个配置读取到的屏幕宽度和实际屏幕宽度相差很小了。

  定义这些比例,以及计算所有文件夹得配置大小,需要比较多的时间,但是只要配置完了,以后开发分辨率适配就会快速容易很多了。

  参考配置:

    <dimen name="screen_h_0_02">9.6dp</dimen>
    <dimen name="screen_h_0_04">19.2dp</dimen>
    <dimen name="screen_h_0_06">28.8dp</dimen>
    <dimen name="screen_h_0_08">38.4dp</dimen>
    <dimen name="screen_h_0_1">48dp</dimen> <!-- sw*0.15 -->
    <dimen name="screen_h_0_2">96dp</dimen>
    <dimen name="screen_h_0_3">144dp</dimen>
    <dimen name="screen_h_0_4">192dp</dimen>
    <dimen name="screen_h_0_5">240dp</dimen>
    <dimen name="screen_h_0_6">288dp</dimen>
     <dimen name="screen_h_0_7">336dp</dimen>
    <dimen name="screen_h_0_8">384dp</dimen>

    <dimen name="screen_w_0_1">32dp</dimen>
    <dimen name="screen_w_0_2">64dp</dimen>
    <dimen name="screen_w_0_3">96dp</dimen>
    <dimen name="screen_w_0_4">128dp</dimen>
    <dimen name="screen_w_0_5">160dp</dimen>
    <dimen name="screen_w_0_6">162dp</dimen>
    <dimen name="screen_w_0_7">224dp</dimen>
    <dimen name="screen_w_0_8">256dp</dimen>
    <dimen name="screen_w_0_9">288dp</dimen>
    <dimen name="screen_w">320dp</dimen>

   <!-- 文字 -->
    <!-- 0.030*sw,列表3级 -->
    <dimen name="com_textsize_small">9.6dp</dimen>
    <!-- 0.042*sw,列表2级 -->
    <dimen name="com_textsize_medium_small">13.4dp</dimen>
    <!-- 0.049*sw,列表1级 -->
    <dimen name="com_textsize_medium">15.7dp</dimen>
    <!-- 0.059*sw,标题 -->
    <dimen name="com_textsize_medium_large">18.9dp</dimen>
    <!-- 0.074*sw,特大 -->
    <dimen name="com_textsize_large">23.7dp</dimen>

    <!-- 按钮 -->
    <!-- 0.081*sw,纯文字 -->
    <dimen name="com_btn_h_medium_small">26dp</dimen>
    <!-- 0.100*sw,短按钮 -->
    <dimen name="com_btn_h_medium">32dp</dimen>
    <!-- 0.125*sw,长按钮 -->
    <dimen name="com_btn_h_medium_large">40dp</dimen>
    <!-- 0.144*sw,特大 -->
    <dimen name="com_btn_h_large">46dp</dimen>

   <!-- 间距 -->
    <!-- 0.025*sw -->
    <dimen name="com_padding_small">8dp</dimen>
    <!-- 0.031*sw,activity padding -->
    <dimen name="com_padding_medium_small">10dp</dimen>
    <!-- 0.050*sw,上边距 -->
    <dimen name="com_padding_medium">16dp</dimen>
    <!-- 0.069*sw,模块间距 -->
    <dimen name="com_padding_medium_large">22.1dp</dimen>
    <!-- 0.094*sw,特大 -->
    <dimen name="com_padding_large">30.1dp</dimen>

  ......

  2.代码控制

  级根据控件实际可申请到的空间大小,以及内容多少,进行代码控制大小。

  例如一个文字自适应的开源控件:https://github.com/grantland/android-autofittextview

  

  先分享这么多,以后发现有更好的适配方式,再分享。

  如果大家有更好的适配方法,欢迎讨论指教。

时间: 2024-10-12 12:50:22

Android分辨率适配心得的相关文章

Android分辨率适配

Android的分辨率适配问题一直是Android所让人诟病的主要问题,这里参考了官方的开发文档和实际开发中的一些处理分辨率的技巧来和大家交流一下. 官方的关于分辨率适配的文档"SupportingMultiple Screens" Overview of Screens Support Screen size:屏幕尺寸 Screen density:屏幕密度 Orientation:方向 Resolution:分辨率 Density-independent pixel (dp or

android 分辨率适配

Android设备的碎片化众所周知,分辨率.长宽比千变万化,让设计师与开发者头疼不已.由于工作需要,可乐橙对其简略分析了一下,希望对自己与广大设计师和开发者们的工作有帮助. AD: Android设备的碎片化众所周知,分辨率.长宽比千变万化,让设计师与开发者头疼不已.由于工作需要,可乐橙对其简略分析了一下,希望对自己与广大设计师和开发者们的工作有帮助.

【Android】Android中不同手机分辨率适配问题

在项目开发的过程中,同一个布局对应不同的手机会显示出不同的效果.导致这个现象产生的原因是不同手机的分辨率不同.在android sdk提供的帮助文档中,我们可以看到各种手机的分辨率和对应的屏大小.QVGA (240x320),WQVGA400(240x400),WQVGA432 (240x432),HVGA (320x480),WVGA800 (480x800),WVGA854 (480x854). 目前android手机的分辨率大致就是帮助文档中描述的几种,我们可以用两种方式进行不同手机的适配

Android屏幕适配(分辨率适配)

对于刚接触Android的新人和刚走上Android技术岗位的开发者们来说,在熟悉了相关之后,在项目完成后,就会面临着一个重大的挑战,那么就是屏幕适配的问题.当然我们所说的屏幕适配指的是适配各种手机不同的分辨率.当然,如果你熟悉官网的话(网址:developer.android.com),那么你会发现官网上其实已经为你讲解了怎么做. 当然,首先你要知道如何打开网址,由于大天朝的制度,你想直接进Android开发者的官网,那么真的很难了.这时候就需要借助一点小工具了.比如:FreeDoor.海贝等

Android 屏幕适配问题分析

一.屏幕分辨率.大小及相关单位介绍 Android categorizes device screens using two general properties: size and density.There are four generalized sizes: small, normal, large, xlarge:And four generalized densities: low (ldpi 0.75), medium (mdpi 1.0 baseline), high (hdpi

android屏幕适配详解

android屏幕适配详解 官方地址:http://developer.android.com/guide/practices/screens_support.html 一.关于布局适配建议 1.不要使用绝对布局 2.尽量使用match_parent 而不是fill_parent . 3.能够使用权重的地方尽量使用权重(android:layout_weight) 4.如果是纯色背景,尽量使用android的shape 自定义. 5.如果需要在特定分辨率下适配,可以在res目录上新建layout

Android屏幕适配原理

大纲 1.android中res目录下的文件夹所对应屏幕尺寸 2.用dp表示尺寸的原理 3.对于720p尺寸的适配需要注意什么 4.ui切图按什么尺寸给最好 参考:http://www.360doc.com/content/12/0301/17/5087210_190881395.shtml 几个概念: 1) 屏幕密度(dpi) :dot per inch,即每英寸像素数. ldpi(120),mdpi(160),hdpi(240),xhdpi(320) 计算方法: 以480x854,4.0in

Android屏幕适配

1.基本概念 屏幕大小(screen size) —— 屏幕的实际大小,用屏幕对角线长度来衡量(比如3.4寸,3.8寸).android把屏幕分为以下4种:small,normal,large,extra large 屏幕密度(Screen Density) ——  一块实际的屏幕区域有多少个像素,一般用dpi衡量(每英寸有多少个点).相比起medium.high屏幕密度的设备,在一块确定大小的屏幕区域l密度为low的屏幕拥有的像素更少.android把屏幕密度分为4种:low,medium,h

【转】Android屏幕适配全攻略(最权威的官方适配指导)

Android的屏幕适配一直以来都在折磨着我们这些开发者,本篇文章以Google的官方文档为基础,全面而深入的讲解了Android屏幕适配的原因.重要概念.解决方案及最佳实践,我相信如果你能认真的学习本文,对于Android的屏幕适配,你将有所收获! Android屏幕适配出现的原因 重要概念 屏幕尺寸 屏幕分辨率 屏幕像素密度 dpdipdpisppx mdpihdpixdpixxdpi 解决方案 支持各种屏幕尺寸 使用wrap_contentmatch_parentweight 使用相对布局