android屏幕适配
来源:互联网 发布:应力张量不变量 知乎 编辑:程序博客网 时间:2024/05/29 07:47
现在主流屏幕:1280*720; 测试屏幕(480*800,1920*1080)
如何适配:
遵循原则: 不用AbsoluteLayout(绝对布局), 多用相对布局和线性布局(权重), 用dp,不用px
1)图片适配(不是很常用)
drawable文件夹有ldpi、mdpi、hdpi、xhdpi、xxhdpi等。dpi指像素/英寸,而ldpi指120,mdpi指160,hdpi指240,xhdpi指320,xxhdpi指480(3:4:6:8:12);程序自动选择:平方相加,开放,除以屏幕尺寸;
缺点:图片对,akp大
后续版本:一组图,系统自动拉伸
2)布局适配(不是很常用)
layout 、 layout-800x480
3)尺寸适配
dp和px的关系: dp = px/设备密度
float density = getResources().getDisplayMetrics().density;//设备密度
System.out.println("设备密度:" + density);
320*240(0.75), 480*320(1),480*800(1.5),1280*720(2)
values->dimens.xml values-1280x720
DisplayMetrics displaymetrics = new DisplayMetrics();((WindowManager) BaseApplication.getContext().getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay().getMetrics(displaymetrics);float density = displaymetrics.density;// 3.0 1.0int densityDpi = displaymetrics.densityDpi;// 480 160int heightPixels = displaymetrics.heightPixels;// 1920 752int widthPixels = displaymetrics.widthPixels;// 1080 480float dimension = getResources().getDimension(R.dimen.dp_60);
手机怎么去选着 values-w360dp:
如果:displaymetrics.widthPixels=1080 px;displaymetrics.density=3
dp = px/设备密度 =>360dp
layout下: @dimen/sss
values、values-1280x720 下的dimens :<dimen nam="">2dp</>
/** * dp转px */public static int dp2px(Context ctx, float dp){float density = ctx.getResources().getDisplayMetrics().density;int px = (int) (dp * density + 0.5f);// 4.9->5 4.4->4return px;}/** * px转dp */public static float px2dp(Context ctx, int px){float density = ctx.getResources().getDisplayMetrics().density;float dp = px / density;return dp;}
4)权重适配
线性布局中:android:layout_weight="1";//子 android:weightSum="3"//父
5)代码适配
获取屏幕宽高,动态计算控件大小;LayoutParams
int w = getWindowManager().getDefaultDisplay().getWidth();int h = getWindowManager().getDefaultDisplay().getHeight();LinearLayout.LayoutParams lpLayoutParams= new LinearLayout.LayoutParams(w/3,h*2);tv.setLayoutParams(lpLayoutParams);
1 0
- 【Android】屏幕适配
- android屏幕适配
- android屏幕适配
- android 屏幕适配
- Android屏幕适配
- Android屏幕适配
- Android屏幕适配
- Android屏幕适配
- android 屏幕适配
- Android屏幕适配
- Android屏幕适配
- Android 屏幕适配
- android屏幕适配
- Android屏幕适配
- Android屏幕适配
- Android 屏幕适配
- android屏幕适配
- Android屏幕适配
- CMake的交叉编译问题(Linux x86 - Linux arm11)
- @GeneratedValue
- Eclipse方便的管理Tomcat (Eclipse + WTP + Tomcat 配置 )
- hbase分页查询
- 九度考研真题 2003-2华科1186:打印日期
- android屏幕适配
- 收集到的一些java方面的博客文章
- IOS--错误集锦--切换wifi后模拟器不能联网的问题
- 协议[I2C]_I2C子系统之at24c02简介
- 九度考研真题 2008-上交1043:Day of Week 日期
- mysql 参数作用域
- Git详解之三:Git分支
- HDU_5504 GT and sequence
- HBase中多Filter查询示例