android屏幕适配

现在主流屏幕: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.0
		int densityDpi = displaymetrics.densityDpi;// 480 160
		int heightPixels = displaymetrics.heightPixels;// 1920 752
		int widthPixels = displaymetrics.widthPixels;// 1080 480
		float 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->4

		return 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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值