zl程序教程

您现在的位置是:首页 >  移动开发

当前栏目

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

Android手机 处理 获取 方式 分辨率 相应
2023-09-11 14:18:52 时间

我的模拟器都是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;
    }
}

我也是处于安卓开发的初期,对安卓不是特别的懂,

大家如果有什么更好的处理,也希望能够与我分享一下。