一个APP在不同的项目中适配的一些笔记(支持多种屏幕)
2013-07-17 12:48
351 查看
why:
最近在做一个APP的不同项目,不同屏幕的适配工作,发现我们以前自己写的代码,确实是不具备通用和可移植性,所以写下了下面的这些,希望以后写的代码具有更好的匹配性,能支持不同的屏幕,有更好的效果。How:
1.为不同屏幕提供不同的图片res/drawable
res/drawable-xhdpi res/drawable-xhdpi-1280x720 (特定的屏幕1280*720)
res/drawable-hdpi res/drawable-hdpi-960x540 (特定的屏幕960*540)
res/drawable-mdpi
res/drawable-ldpi
res/drawable-land (横屏图片)
res/drawable-land-ldpi (横屏图片)
2.为不同屏幕提供不同的布局文件
res/layout
res/layout-xhdpi res/layout-xhdpi-1280x720 (特定的屏幕1280*720)
res/layout-hdpi res/layout-hdpi-960x 540 (特定的屏幕960*540)
res/layout-mdpi
res/layout-ldpi
res/layout-land (横屏布局文件)
res/layout-land-ldpi (横屏布局文件)
3.为不同屏幕提供不同的value,特别是dimens.xml的运用
res/values
res/values-xhdpi /dimens.xml res/values-xhdpi-1280x720/dimens.xml (特定的屏幕1280*720)
res/values-hdpi/dimens.xml res/values-hdpi-960x540/dimens.xml (特定的屏幕960*540)
res/values-mdpi /dimens.xml
res/values-ldpi /dimens.xml
res/values-land/dimens.xml (横屏values)
res/values-land-ldpi /dimens.xml (横屏values)
使用样例:
(1)字体大小匹配
Dimens.xml (res\values-hdpi):
<dimen name="dialpad_fragment_cancel_text_size">45sp</dimen>
Dimens.xml (res\values-hdpi-854x480):
<dimen name="dialpad_fragment_cancel_text_size">25sp</dimen>
代码读取:
float size = getResources().getDimensionPixelSize(R.dimen.dialpad_fragment_cancel_text_size);
(2)间距匹配
Dialpad_fragment.xml (res\layout-hdpi-854x480):
android:layout_marginTop="@dimen/konka_text_callerLoc_margintop"
Dialpad_fragment.xml (res\layout-xhdpi-1280x720):
android:layout_marginTop="@dimen/konka_text_callerLoc_margintop"
Dimens.xml (res\values):
<dimen name="konka_text_callerLoc_margintop">45dip</dimen>
Dimens.xml (res\values-hdpi):
<dimen name="konka_text_callerLoc_margintop">33dip</dimen>
Best Practices:
1.在布局文件中合理使用 wrap_content, fill_parent, 单位考虑使用dp2.布局尽量使用相对布局( RelativeLayout),不要使用绝对布局(AbsoluteLayout)
3.在代码中,不要使用 hard-coded pixel 值。
eg:
myView.getWidth()
参考资料:
1.http://developer.android.com/guide/practices/screens_support.html相关文章推荐
- 如何让自己开发的android支持多种不同的手机屏幕(supporting Multiple Screens)
- 笔记:Xcode的一些技巧、IOS APP 新项目的基本配置(一)
- iOS- <项目笔记>iOS6 & iOS7屏幕图片适配
- android中如何使用一张图片适配不同屏幕尺寸的APP启动引导页
- 两个超级酷的屏幕保护程序下载: 其中一个支持不同windows操作系统
- Google示例APP,教你如何写出适配多种屏幕的新闻阅读器
- android 布局如何支持多种不同屏幕尺寸
- APP兼容不同的设备之适配不同的屏幕
- 在 Adobe AIR 中为不同屏幕尺寸的多种设备提供支持
- 如何让一个应用更好的适配不同分辨率的屏幕
- 【Android Training - 02】适配不同的屏幕[Lesson 1 - 支持不同的屏幕大小]
- 一个网页适应多种不同屏幕的移动wap开发
- 在 Adobe AIR 中为不同屏幕尺寸的多种设备提供支持
- app锁定屏幕方向,某一个界面支持屏幕旋转~
- [AIR] 在 Adobe AIR 中为不同屏幕尺寸的多种设备提供支持
- django学习笔记二:一个项目多个App项目搭建
- 安卓学习笔记---获取屏幕的宽高以及屏幕密度,最小宽度等同时可以可以获取屏幕的不同dimens进行适配
- 在 Adobe AIR 中为不同屏幕尺寸的多种设备提供支持
- 在weblogic11g上发布项目遇到的一个错误(不支持web-app_3_0)
- django为了解决同一个项目不同app下Templates冲突的解决方法