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

     屏幕适配的问题,我相信很多大牛的经验远比我丰富,在此就简单的分享一下我所做的的屏幕适配方案,当然我说的是安卓方面的啦,嘿嘿,屏幕适配我们一般用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/xiaowangba/p/6314909.html