why:
最近在做一个APP的不同项目,不同屏幕的适配工作,发现我们以前自己写的代码,确实是不具备通用和可移植性,所以写下了下面的这些,希望以后写的代码具有更好的匹配性,能支持不同的屏幕,有更好的效果。
How:
1.为不同屏幕提供不同的图片
res/drawable
res/drawable-xhdpi res/drawable-xhdpi-1280×720 (特定的屏幕1280*720)
res/drawable-hdpi res/drawable-hdpi-960×540 (特定的屏幕960*540)
res/drawable-mdpi
res/drawable-ldpi
res/drawable-land (横屏图片)
res/drawable-land-ldpi (横屏图片)
2.为不同屏幕提供不同的布局文件
res/layout
res/layout-xhdpi res/layout-xhdpi-1280×720 (特定的屏幕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-1280×720/dimens.xml (特定的屏幕1280*720)
res/values-hdpi/dimens.xml res/values-hdpi-960×540/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-854×480):
<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-854×480):
android:layout_marginTop=”@dimen/konka_text_callerLoc_margintop“
Dialpad_fragment.xml (res\layout-xhdpi-1280×720):
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, 单位考虑使用dp
2.布局尽量使用相对布局( RelativeLayout),不要使用绝对布局(AbsoluteLayout)
3.在代码中,不要使用 hard-coded pixel 值。
eg:
myView.getWidth()
参考资料:
1.http://developer.android.com/guide/practices/screens_support.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/37606.html