获取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;
}
}
我也是处于安卓开发的初期,对安卓不是特别的懂,
大家如果有什么更好的处理,也希望能够与我分享一下。
但是换成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;
}
}
我也是处于安卓开发的初期,对安卓不是特别的懂,
大家如果有什么更好的处理,也希望能够与我分享一下。
相关文章推荐
- Android中的手机屏幕像素的几种获取方式
- 【Android基础】获取手机分辨率、状态栏、标题栏高度
- 【Android基础】获取手机分辨率、状态栏、标题栏高度
- Android教程(十二)-- 使用DisplayMetrics获取手机分辨率
- [置顶] 获取android手机的屏幕分辨率 android开发
- android 获取手机屏幕分辨率和setRequestedOrientation设置屏幕方向
- 【小功能2】android获取手机信息(号码,内存,CPU,分辨率,MAC,IP,SD卡,IMEI,经纬度,信号强度等等)
- Android 代码获取手机屏幕分辨率的代码
- Android 不同手机分辨率适配(xml方式)
- Android 获取手机分辨率
- android手机屏幕分辨率获取异常
- android获取手机分辨率
- android手机两种方式获取IP地址
- Android 创建菜单项Menu及获取手机分辨率
- Android编程获取手机屏幕分辨率大小的方法
- android手机两种方式获取IP地址
- 理解Android中dpi和分辨率的关系,谈谈Android做成适应全部手机的UI方式
- android获取屏幕分辨率的两种方式
- 老邓的android学习笔记(2)-Android 获取屏幕的分辨率的N种方式
- 【小功能2】android获取手机信息(号码,内存,CPU,分辨率,MAC,IP,SD卡,IMEI,经纬度,信号强度等等)