指令汇B新闻客户端开发(六) 浅谈屏幕适配解决方案

本文分享了一种适用于Android开发的屏幕适配方案,包括图片适配、布局适配、权重适配、代码适配及尺寸适配等内容。通过遵循不用AbsoluteLayout、多用相对布局和线性布局、使用dp单位等原则,实现跨分辨率屏幕的一致性体验。

     屏幕适配的问题,我相信很多大牛的经验远比我丰富,在此就简单的分享一下我所做的的屏幕适配方案,当然我说的是安卓方面的啦,嘿嘿,屏幕适配我们一般用1280*720的屏幕作为我们的主流开发屏,当然现在AndroidStudio上面可以直接看到所有种类的屏幕,大大方便了我们的开发。

    我们遵循的原则是不用AbsoluteLayout(绝对布局),多用相对布局&线性布局(权重), 要用dp,不用px。

    开发后期, 在不同分辨率屏幕上测试(480*800,1920*1080), 如果没出现太大问题(影响正常使用), 就可以上线。

1、图片适配:不是很常用

2、布局适配:不是很常用,  layout-800x480 专门适配480*800的屏幕

3、 权重适配:android:weightSum="3"

4、代码适配:获取屏幕宽高,动态计算控件

int width=getWindowManager

().getDefaultDisplay().getWidth

();
		
		

slidingMenu.setBehindOffset

(width*200/320);// 设置预留屏幕的

宽度
5、尺寸适配:

    dp和px的关系: dp = px/设备密度


float density = getResources().getDisplayMetrics().density;

           320*240(0.75), 480*320(1),480*800(1.5),1280*720(2)

括号后面的就是计算出来的屏幕密度。
我们可以在values->dimens.xml  中设置大小

然后再新建一个文件夹:values-1280x720,当屏幕是1280*720的时候就优先加载这个文件夹的。


public class DensityUtils {

	/**
	 * dp转px
	 */
	public static int dp2px(Context ctx, float dp) {
		float density = ctx.getResources().getDisplayMetrics().density;
		int px = (int) (dp * density + 0.5f);// 四舍五入

		return px;
	}

	public static float px2dp(Context ctx, int px) {
		float density = ctx.getResources().getDisplayMetrics().density;
		float dp = px / density;

		return dp;
	}
}


转载于:https://www.cnblogs.com/sdksdk0/p/5585119.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值