您的位置:首页 > 移动开发

一个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, 单位考虑使用dp

2.布局尽量使用相对布局( RelativeLayout),不要使用绝对布局(AbsoluteLayout)

3.在代码中,不要使用 hard-coded pixel 值。

eg:

myView.getWidth()

参考资料:

1.http://developer.android.com/guide/practices/screens_support.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: