Android屏幕適配

一、屏幕參數

1、分辨率

分辨率指的是手機屏幕的像素點個數,如720*1080,指寬有720、高有1080個像素點。

2、每英寸像素

它是由對角線的像素點數除以屏幕的大小得到的。

3、系統屏幕密度

二、獨立像素密度dp

1dpi:mdpi:hdpi:xhdpi:xxhdpi =3:4:6:8:12

單位轉換方法

1、dp(dip) 轉 px

public ?static int ?dip2px(Context ?context,float ?dpValue){

final ? floatscale =context.getResources().getDisplayMetrics().density;

return ?(int)(dpValue*scale+0.5f);

}

或者:

public static int dp2px(Context context,int ?dpValue) {

return ?(int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dpValue, context.getResources().getDisplayMetrics());

}

2、sp 轉 px

public static int ?sp2px(Context context,float ?spValue){

final float ?fontScale =context.getResources().getDisplayMetrics().scaledDensity;

return ?(int)(spValue*fontScale+0.5f);

}

或者:

public static int sp2px(Context context,int ?spValue) {

return ?(int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_SP, spValue, context.getResources().getDisplayMetrics());

}

3、px 轉 dp(dip)

public static int px2dip(Context context,float ?pxValue){

final float scale =context.getResources().getDisplayMetrics().density;

return ?(int)(pxValue/scale+0.5f);

}

4、px 轉 sp

public static int px2sp(Context context,float ?pxValue){

final float fontScale =context.getResources().getDisplayMetrics().scaledDensity;

return ?(int)(pxValue/fontScale+0.5f);

}


三、屏幕適配之五大方式

1、圖片適配

2、布局適配

(虛擬機頁面)屏幕寬高與之對應的分辨率
可寫屏幕寬高相乘,也可以寫對應分辨率

注意:雖然限定符的寫法方式有很多種,但用的時候盡量使用同一種,否則會出現分辨率布局不匹配的現象

寫成同一種類型

3、尺寸適配

4、權重適配

5、代碼適配


四、獲取屏幕寬高

WindowManager manager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);

DisplayMetrics metrics = new DisplayMetrics();

manager.getDefaultDisplay().getMetrics(metrics);

width = metrics.widthPixels;

height =metrics.heightPixels;

或者

Display display = getWindow().getWindowManager().getDefaultDisplay();

DisplayMetrics metrics =new DisplayMetrics();

display.getMetrics(metrics);

width = metrics.widthPixels ;

height =metrics.heightPixels;

或者

getResources().getDisplayMetrics().widthPixels;


五、代碼尺寸介紹

尺寸獲取:通過Java方法獲取得到的尺寸,默認以px為單位,所以獲取到的值需要通過px2dp()方法將px到dp的轉換,得到dp,或者通過px2sp()方法將px到sp的轉換,得到sp。也可以通過以尺寸單位類型返回的方法獲取到自己想要的尺寸類型

尺寸設置:通過Java方法設置的尺寸單位,默認以px為單位,所以設置尺寸前先對尺寸的單位轉換,例如設置dp,先將值傳入dp2px()中進行dp到px的轉換,或者設置sp,先將值傳入sp2px()中進行sp到px的轉換。也可以通過傳入尺寸類型和尺寸大小的方法來設置控件大小

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容