1、關於佈局適配建議
一、不要使用絕對佈局
二、儘可能使用match_parent 而不是fill_parent 。
三、可以使用權重的地方儘可能使用權重(android:layout_weight)
四、若是是純色背景,儘可能使用android的shape 自定義。
五、若是須要在特定分辨率下適配,能夠在res目錄上新建layout-HxW.xml的文件夾。好比要適配1080*1800的屏幕(魅族MX3採用此分辨率)則新建layout-1800x1080.xml的文件夾,而後在下面定義佈局。Android系統會優先查找分辨率相同的佈局,若是不存在則換使用默認的layout下的佈局。
2、術語和概念
四種屏幕尺寸分類:: small, normal, large, and xlarge
四種密度分類: ldpi (low), mdpi (medium), hdpi (high), and xhdpi (extra high)
須要注意的是: xhdpi是從 Android 2.2 (API Level 8)纔開始增長的分類.
xlarge是從Android 2.3 (API Level 9)纔開始增長的分類.
DPI是「dot per inch」的縮寫,每英寸像素數。
通常狀況下的普通屏幕:ldpi是120,mdpi是160,hdpi是240,xhdpi是320。
3、如何作到自適應屏幕大小呢?
1)界面佈局方面
須要根據物理尺寸的大小準備5套佈局,layout(放一些通用佈局xml文件,好比界面中頂部和底部的佈局,不會隨着屏幕大小變化,相似windos窗口的title bar),layout-small(屏幕尺寸小於3英寸左右的佈局),layout-normal(屏幕尺寸小於4.5英寸左右),layout-large(4英寸-7英寸之間),layout-xlarge(7-10英寸之間)
2)圖片資源方面
須要根據dpi值準備5套圖片資源,drawable,drawalbe-ldpi,drawable-mdpi,drawable-hdpi,drawable-xhdpi
Android有個自動匹配機制去選擇對應的佈局和圖片資源
4、兩種獲取屏幕分辨率信息的方法:
DisplayMetrics metrics = new DisplayMetrics();
Display display = activity.getWindowManager().getDefaultDisplay();
display.getMetrics(metrics);
//這裏獲得的像素值是設備獨立像素dp
//DisplayMetrics metrics=activity.getResources().getDisplayMetrics(); 這樣得到的參數信息不正確,不要使用這種方式。
不能使用android.content.res.Resources.getSystem().getDisplayMetrics()。這個獲得的寬和高是空的。