为了更好的让应用程序的界面能适应不同手机的屏幕大小,有时候我们在开发中使用相对于屏幕实际大小的方法来设定布局中各个空间的位置跟大小,通过下面的方法可以获得Android手机实际屏幕分辨率大小。
首先我们需要用到的是DisplayMetrics这个类,它可以为我们获得手机屏幕属性,这里将其所在类导入。
import android.util.DisplayMetrics;
得到实例对象。
DisplayMetrics dm = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm);
得到手机屏幕高度:
dm.heightPixels;
得到手机屏幕宽度:
dm.widthPixels;
得到以上手机屏幕的高度跟宽度后,即可以通过这两个值按照比例还设定程序布局中空间的大小。
=========================
实现的程序如下:
在布局文件main.xml中添加一个TextView对象,一个Button对象。其中TextView对象用来显示获得的分辨率值,Button对象是当点击时获取分辨率。main.xml的代码如下:
- <?xmlversion="1.0"encoding="utf-8"?>
- <LinearLayoutxmlns:Android="http://schemas.android.com/apk/res/android"
- Android:orientation="vertical"
- Android:layout_width="fill_parent"
- Android:layout_height="fill_parent"
- >
- <TextView
- Android:id="@+id/tv"
- Android:layout_width="fill_parent"
- Android:layout_height="wrap_content"
- Android:text="手机分辨率为:"/>
- <Button
- Android:id="@+id/btnOK"
- Android:layout_width="fill_parent"
- Android:layout_height="wrap_content"
- Android:text="获取手机分辨率"/>
- </LinearLayout>
在TestActivity中的代码如下:
- publicclassTestActivityextendsActivity{
- privateTextViewtv;
- privateButtonbtn;
- //获取手机屏幕分辨率的类
- privateDisplayMetricsdm;
- publicvoidonCreate(BundlesavedInstanceState){
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- tv=(TextView)findViewById(R.id.tv);
- btn=(Button)findViewById(R.id.btnOK);
- btn.setOnClickListener(newView.OnClickListener(){
- publicvoidonClick(Viewv){
- dm=newDisplayMetrics();
- getWindowManager().getDefaultDisplay().getMetrics(dm);
- //获得手机的宽度和高度像素单位为px
- StringstrPM="手机屏幕分辨率为:"+dm.widthPixels+"*"+dm.heightPixels;
- tv.setText(strPM);
- }
- });
- }
- }
运行程序后,当我们点击Button按钮时,可以看到下面的效果图: