Android 屏幕适配
App 全面屏适配
1 | <!--刘海屏适配--> |
其他
像素-px;一个小黑点就是一个像素
屏幕尺寸;对角线的长度
屏幕分辨率;宽高两者的像素值之积
像素密度-dpi;每英寸中的像素数,分辨率长或宽/屏幕长或宽(单位;英寸),对应于DisplayMetrics类中属性densityDpi的值
密度-density;每平方英寸中的像素数,dpi/160,对应于DisplayMetrics类中属性density的值,可用于转换;dp=px/density
设备独立像素-dip-dp;不同设备有不同的显示效果,不依赖像素。
dp=px/density
dp=px/(dpi/160)
dpi(像素密度)为160的设备上,1dp=1px
放大像素-sp;用于字体显示,会跟随设备字体字号而改变大小。
dp转px;
public static int dp2px(Context mContext,int dp){
return (int) (dp * mContext.getResources().getDisplayMetrics().density + 0.5);
}
px转dp;
public static int px2dp(Context mContext,int px){
return (int)(px/mContext.getResources().getDisplayMetrics().density+0.5);
}
注;0.5是为了避免损失精度。
常见设备的关系;
ldpi;
切图;只看大概界面样式和布局,具体实现自己把控
图片适配;
drawable-ldpi;低分辨率(一般不在用)
drawable-mdpi;中分辨率
drawable-hdpi;高分辨率
drawable-xdpi;较高分辨率
drawable-xxdpi;超级高分辨率(推荐,可以向下和向上兼容,节省资源)
drawable-xxxdpi;顶级分辨率
图标使用svg格式,图片使用png,svg大小约是png的1/4
布局适配;
比如;layout-800480
layout-1280720
根据手机大小使用不同布局,但使用情况非常少,因为占用资源太多。
权重适配;
当布局占满屏幕宽或高时,或有固定宽或高时,子布局可以使用权重适配,常见于LinearLayout线性布局中。
尺寸适配;(dimens适配)
values-400320;创建dimens.xml文件
values-800480;创建dimens.xml文件
代码中;R.dimen.x2
布局中;@dimen/x2
代码适配
Button btn=new Button(this);
// Button btn=(Button) findViewById(R.id.btn);
// 获取手机屏幕的宽高
int widthPixels=getResources().getDisplayMetrics().widthPixels;
int heightPixels=getResources().getDisplayMetrics().heightPixels;
// 给Button设置宽高
ViewGroup.LayoutParams params=new ViewGroup.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
// ViewGroup.LayoutParams params=btn.getLayoutParams();
params.width=widthPixels/2;
params.height=heightPixels/2;
btn.setLayoutParams(params);
https://mp.weixin.qq.com/s/BwFnIh7FBqjAYuO5zEQtWw
https://mp.weixin.qq.com/s/6LJj28V3uiUtzI0LFHzj8A
https://mp.weixin.qq.com/s/6CeizbnQl8bmpEiZcbhFqw
https://mp.weixin.qq.com/s/xrIlX7JMouyogTsc5oFeXw
备注
欢迎关注微信公众号:非也缘也