什么是屏幕适配?
使尺寸,文字,图片,布局在不同的设备都有相应的规律的显示效果;
尺寸适配怎么做?
1.在res下新建values-XXXxXXX的文件夹,然后分别创建名为dimens.xml的文件
2.在每个dimens.xml创建dimen标签,name为app_width,然后设置宽度。
<resources>
<dimen name="app_width">
100dp
</dimen>
</resources>
3.在设置宽度的时候引用dimen/app-width
android:layout_width="@dimen/app_width"
图片适配怎么做 ?
当一个apk运行起来时,Android系统会根据其所运行的手机的屏幕密度去相对应的图片文件夹里找指定名称的图片。 注意, 先去哪个目录里找,完全是根据这个手机的屏幕密度决定的。
如果屏幕所对应的文件夹没有要找的图片,怎么办。这是很常见的,我们开发项目时一般不会去为每一个级别的屏幕去切一套图片。那样做只会让apk很大。所以一般性的图片我们只切一两个典型密度屏幕的图片。但是apk是有可能会运行在从ldpi到xxhdpi的各种级别的手机上。这个时候就需要根据一定的策略去寻找图片了。
Android系统寻找图片的步骤是这样的:
1, 去屏幕密度对应的目录去找。如果找到就拿来用。
2, 如果没找到,就去比这个密度高一级的目录里面去找,如果找到就拿来用。
3, 如果没找到就继续往上找。以此类推。
4, 如果到了xxhdpi目录还没有找到的话,就会去比自身屏幕密度低一级的目录去找,如果低一级的目录>=hdpi,找到了就拿来用。
5, 如果没找到, 就去mdpi目录去找, 如果找到了,就拿来用。
6, 如果没找到,就去默认的drawble目录里去找, 如果找到了就拿来用。
7 ,如果没找到,再去最低的ldpi目录里去找。如果找到了,就拿来用。
8, 如果没找到, 那就是没找到了, 图片无法显示。(不过一般不会出现这种现象,因为如果每个目录都没有这个图片的话,你是编译不过的)
这里有两点需要注意:
① 首先会去比自己密度高的目录里去找,这是因为因为系统相信,你在密度更高的目录里会放置分辨率更大的图片,这样的话这个图片会被缩小,但同时显示效果不会有损失,但是如果优先去低一级别的目录去找的话, 找到的图片就会被放大,这样的话这个图片就会被拉扯模糊了。
e.g. 同一张图片,你在mdpi和xxhdpi目录各放了一份, 这个应用你现在运行在hdpi的手机上, 那应用会选择哪张图片呢。答案是xxhdpi目录里的。即便hdpi离mdpi更近一点!
②,如果在mdpi里找不到是不会直接去ldpi里找的, 而是先去默认的drawble目录里找,这是drawble目录和drawble-mdpi是一个级别的。
什么是9.png图片?
可以随意拉伸而不变形的图片
文字国际化(文字适配)怎么做?
1.在 res 文件夹下新建对应语言的 values 文件夹
举例:英语环境下的,文件夹命名为:values-en
2.复制中文values目录下的strings-xml到英文目录values-en
里面的命名要和中文目录一致,把语言改掉。
如:中文目录下写<string name="btn_text">滑动</string>
英文目录下写<string name="btn_text">slide</string>
3.调用:test=@string/btn-text
横竖屏适配怎么做
app–>main–>res新建一个ddirectory命名为layout_land然后新建一个layout resource file文件,注意文件名一定要和所需要加载的activity布局文件的名字相同