一直想谢谢关于安卓屏幕适配的问题,今天在网上收集总整理了一下,有以下几点建议,大家共勉
1.使用wrap_content、match_parent、weight;
2.使用相对布局,尽量不使用绝对布局;
3.使用限定符,如:layout_large/xxx.xml,这样大屏幕设备就会自动使用该布局;
4.使用最小宽度限定符,如layout_sw700dp/xxx.xml,这样当屏幕宽度超过700dp时就会使用该布局;
5.针对不同的分辨率,提供具体的布局,如:res/layout_800x480/xxx.xml;
6.使用布局别名,如layout下面有个布局mylayout.xml,在layout_large/xxx.xml
- <resources>
- <item name="mainlayout" type="layout">@layout/mylayout</item>
- </resources>
8、使用dp,sp而不是px来作为长度单位;
9、提供大小不同的位图,如:mdpi,hdpi等目录下面要有相对应的位图;
10、判断加载的布局来决定走不同的流程,如下
- setContentView(R.layout.main_layout);//此处会根据屏幕大小加载不同的布局
- Button btn1 = (Button)findViewById(R.id.btn1);//其中一个布局没有该按钮
- if(btn1 == null){
- ...
- }else{
- ...
- }
1、dp与Px的换算规则:以160dpi(密度)为基准,1dp=1px,若密度是320dpi,则1dp=2px,以此类推。
2、mdpi,hdpi等目录并不需要全部都放上图片,这样会使apk占用的存储空间变大,建议对那些比较重要的图片提供多个分辨率,不很重要的只提供一张即可。