标签:
Android屏幕适配主要有五种方法:图片适配、布局适配、尺寸适配、权重适配、代码适配。前两种不太常用,后三种用的较多。
图片适配
布局适配
尺寸适配
dp和px的关系:dp=px/设备密度
设备密度(density)的获取:
`float density = getResources().getDisplayMetrics().density;
? ?
根据这个,我们可以写一个dp互转px的Util类,代码如下:
public static int dp2px(Context context,float dp)
{
float density=context.getResources().getDisplayMetrics().density;
return (int) (dp*density+0.5f);//+0.5 四舍五入
}
public
static float px2dp(Context context,int px){
float density=context.getResources().getDisplayMetrics().density;
return px/density;
}
? ?
当然,使用dp不能解决所有问题,比如800x480(竖屏)和1280x720(横屏),这种情况就不能只设定一个dp值了,我们可以将一般的值写在dimens.xml中,同时创建一个values-1280x720文件夹将1280x720屏幕的dp值写在这个文件夹中的dimens.xml里面。这样,当遇到1280x720的设备就会去加载values-1280x720文件夹中dimens.xml的值。
权重适配
我们知道,只有在LinearLayout布局中,才有layout_weight属性。这个属性用来控制LinearLayout布局中各个子组件按照一定比例显示。一般说来,layout_weight值越大,所占的比例就越大。计算公式是:某个组件宽度(或高度)占LinearLayout的比例是:本组件weight值 / LinearLayout内所有组件weight值的和。
代码适配
int width = getWindowManager().getDefaultDisplay().getWidth();
int height = getWindowManager().getDefaultDisplay().getHeight();
tv1.setLayoutParams(new LayoutParams((int)(width*0.5), (int)(height*0.2)));
常规做法: 如果是自定义的控件, 没有使用xml布局文件时, 可以在代码中动态设置宽高
标签:
原文地址:http://www.cnblogs.com/yxx123/p/5244877.html