首页 > 代码库 > Android 关于资源适配

Android 关于资源适配


一. 关于图片资源


图片宽高 不要固定大小,在小屏幕和大屏幕,不同分频率上 ,采用不同的图片,这个要美工切图的。


不同的分辨率,界面的长宽比不一致,需要不同规格的图片
在drawable-hdpi,drawable-ldpi,drawable-mdpi 中放不同分辨率的图片
注:为了减小整个应用程序安装包大小,选用最高分辨率适配,特殊界面图片特殊处理


二. 关于布局适配。


 Android手机屏幕大小不一,有480x320,640x360,800x480.怎样才能让App自动适应不同的屏幕呢? 其实很简单,只需要在res目录下创建不同的layout文件夹,比如:layout-640x360,layout-800x480,所有的layout文件在编译之后都会写入R.java里,而系统会根据屏幕的大小自己选择合适的layout进行使用。




1. 尽量不要使用绝对布局


2. 尽量使用match_parent,不要使用fill_parent,在布局中设置长度的时候,最好   使用Wrap-content,match-parent,文本要使用sp,像素要使用dip/dp。


      3. 能够使用权重的地方尽量使用权重(android:layout_weight)。

      4. 如果是纯色背景,尽量使用android的shape 自定义

     5. 如果需要在特定分辨率下适配,可以在res目录上新建layout-HxW.xml的文件夹。

比如要适配1080*1800的屏幕(魅族MX3采用此分辨率)则新建layout-1800x1080.xml的文件夹,然后在下面定义布局。Android系统会优先查找分辨率相同的布局,如果不存在则换使用默认的layout下的布局。




不同分辨率,界面的字体大小,字体等需要不同的样式,且需要动态生成的情况下,
需要把不同分辨率的配置信息保存到应用中。
例子:
在RES里创建 values-480x320 values-800x400  value-1280x720
并在创建的文件夹中分别创建dimens.xml
<dimen name="Text_size">30px</dimen>
在程序中直接调用R.dimen.Text_size
int sizeOfText = (int) this.getResources().getDimension(R.dimen.Text_size); 
注:实际应用发现,字体大小适配时
比如只适配了如下屏幕字体 
values-480x320 values-800x480  value-1280x720
当出现手机屏幕分辨率为 854x480时会自动找最大字体适配 (value-1280x720)
总结:如果字体800x480以上没有适配,手机自动按最大分辨率适配.