一、屏幕參數
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的轉換。也可以通過傳入尺寸類型和尺寸大小的方法來設置控件大小