一对竣、屏幕參數(shù)
1、分辨率
分辨率指的是手機(jī)屏幕的像素點(diǎn)個(gè)數(shù)榜配,如720*1080否纬,指寬有720、高有1080個(gè)像素點(diǎn)蛋褥。
2临燃、每英寸像素
它是由對(duì)角線的像素點(diǎn)數(shù)除以屏幕的大小得到的。
3烙心、系統(tǒng)屏幕密度
二膜廊、獨(dú)立像素密度dp
1dpi:mdpi:hdpi:xhdpi:xxhdpi =3:4:6:8:12
單位轉(zhuǎn)換方法
1、dp(dip) 轉(zhuǎn) 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 轉(zhuǎn) 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 轉(zhuǎn) 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 轉(zhuǎn) sp
public static int px2sp(Context context,float ?pxValue){
final float fontScale =context.getResources().getDisplayMetrics().scaledDensity;
return ?(int)(pxValue/fontScale+0.5f);
}
三匙瘪、屏幕適配之五大方式
1铆铆、圖片適配
2、布局適配
注意:雖然限定符的寫(xiě)法方式有很多種薄货,但用的時(shí)候盡量使用同一種,否則會(huì)出現(xiàn)分辨率布局不匹配的現(xiàn)象
3碍论、尺寸適配
4谅猾、權(quán)重適配
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;
五赊瞬、代碼尺寸介紹
尺寸獲认燃濉:通過(guò)Java方法獲取得到的尺寸,默認(rèn)以px為單位巧涧,所以獲取到的值需要通過(guò)px2dp()方法將px到dp的轉(zhuǎn)換薯蝎,得到dp,或者通過(guò)px2sp()方法將px到sp的轉(zhuǎn)換谤绳,得到sp占锯。也可以通過(guò)以尺寸單位類型返回的方法獲取到自己想要的尺寸類型
尺寸設(shè)置:通過(guò)Java方法設(shè)置的尺寸單位,默認(rèn)以px為單位缩筛,所以設(shè)置尺寸前先對(duì)尺寸的單位轉(zhuǎn)換消略,例如設(shè)置dp,先將值傳入dp2px()中進(jìn)行dp到px的轉(zhuǎn)換瞎抛,或者設(shè)置sp艺演,先將值傳入sp2px()中進(jìn)行sp到px的轉(zhuǎn)換。也可以通過(guò)傳入尺寸類型和尺寸大小的方法來(lái)設(shè)置控件大小