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

Android获取手机的屏幕分辨率和密度

2015-03-04 10:14 483 查看
关于手机屏幕尺寸和适应性在上一篇已经讲到,这里只是负责给出代码,获得屏幕正确的分辨率。

XML文件

<span style="font-size:18px;"><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:orientation="vertical"
tools:context="com.example.displaymetricsdemo.MainActivity" >

<TextView
android:id="@+id/show"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>

</LinearLayout>
</span>

Activity代码
<span style="font-size:18px;">package com.example.displaymetricsdemo;

import android.app.Activity;
import android.os.Bundle;
import android.util.DisplayMetrics;
import android.widget.TextView;

public class MainActivity extends Activity {
TextView show;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 获取手机屏幕密度
DisplayMetrics displayMetrics = new DisplayMetrics();
// 获取手机窗口的Display来初始化DisplayMetrics对象
getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);
// 得到屏幕的宽高信息
// 获取手机的屏幕密度
float density = displayMetrics.density;
// 获取手机屏幕密度Dpi
int densityDpi = displayMetrics.densityDpi;
String showMessage = "手机屏幕分辨率: " + displayMetrics.widthPixels + " * "
+ displayMetrics.heightPixels + "\n手机屏幕密度: " + density
+ "\n手机屏幕密度Dpi: " + densityDpi;
show = (TextView) findViewById(R.id.show);
show.setTextSize(20);
show.setText(showMessage);
}
}</span>

要想在一个低密度的手机上仅仅写出上面的代码获取的手机屏幕分辨率是有一定的误差的。若没有设定多分辨率支持的话,Android系统会将240x320的低密度(120)尺寸转换为中等密度(160)对应的尺寸。所以我们还需要在AndroidManifest.xml文件中添加如下代码。
<span style="font-size:18px;"> <supports-screens
android:smallScreens="true"
android:normalScreens="true"
android:largeScreens="true"
android:resizeable="true"
android:anyDensity="true"/></span>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息