您的位置:首页 > 移动开发 > Android开发

获取android手机分辨率及相应的处理方式

2013-09-04 09:59 274 查看
我的模拟器都是400*800的,我的布局也是按照这个来制定的。

但是换成640*960的时候就出现了问题。布局明显散了。

首先说一下分辨率的获取方式:

我把分辨率的获取封装到了一个方法中了。

protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//设置屏幕分辨率
setResolution();
//获取SP数据库
DBHelper.getDBHelper().setContext(this);
//设置界面
setContentView(new WeatherPage(this));
}
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));

调用的是下面的工具类方法:当然工具类需要提前注入分辨率的值。

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;
}
}
我也是处于安卓开发的初期,对安卓不是特别的懂,

大家如果有什么更好的处理,也希望能够与我分享一下。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: