但是换成640*960的时候就出现了问题。布局明显散了。
首先说一下分辨率的获取方式:
我把分辨率的获取封装到了一个方法中了。
[java]
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//设置屏幕分辨率
setResolution();
//获取SP
数据库
DBHelper.getDBHelper().setContext(this);
//设置界面
setContentView(new WeatherPage(this));
}
[java]
public void setResolution(){
DisplayMetrics dm = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm);
//获得手机的宽度和高度像素单位为px
Helper.setWidthPixelsHeightPixels(dm.widthPixels, dm.heightPixels);
}
解决方法想到了3种:
1.尽量少使用直接赋值的元素,比如LayoutParams(400,800);就可改为LayoutParams(-1,-1);
2.定义两套配置文件,需要的每个数值用对象来代替。
比如:
LayoutParams(400,800);就可改为LayoutParams(width,height);
width和height通过配置文件进行赋值。
3.获取分辨率进行数值的转换。这也是我采用的方式。
使用的时候:LayoutParams lpdogpetimg=new LayoutParams(Helper.rTgetWidth(60),Helper.rTgetHeight(60));
调用的是下面的工具类方法:当然工具类需要提前注入分辨率的值。
[java]
public class Helper {
private static Helper helper;
private static int widthPixels;
private static int heightPixels;
private Helper() {
// TODO Auto-generated constructor stub
}
public Helper getHelper(){
if(helper==null){
helper=new Helper();
}
return helper;
}
/**
* 输入参数为:分辨率的宽,分辨率的高
* 输入值的宽,输入值的高
*/
public static int rTgetHeight(int height){
double d=((double)heightPixels)/800.00;
double heightd=(double)height*d;
return (int)heightd;
}
public static int rTgetWidth(int width){
double d=((double)widthPixels)/400.00;
double widthd=(double)width*d;
return (int)widthd;
}
public static void setWidthPixelsHeightPixels(int widthPixelss,int heightPixelss){
widthPixels=widthPixelss;
heightPixels=heightPixelss;
}
}
我也是处于安卓开发的初期,对安卓不是特别的懂,
大家如果有什么更好的处理,也希望能够与我分享一下。