android中获取屏幕相关信息

来源:互联网 发布:矩阵逆matlab 编辑:程序博客网 时间:2024/06/05 00:59

在实际应用中经常要获取屏幕的相关信息,比如高度、宽度、密度以及dp/dip和px之间的转换等等,下面这个示例简单介绍一下,代码如下:

GetSreenInfoActivity:

[java] view plaincopy
  1. package com.home.getscreeninfo;  
  2.   
  3. import android.app.Activity;  
  4. import android.content.Context;  
  5. import android.os.Bundle;  
  6. import android.view.View;  
  7. import android.view.View.OnClickListener;  
  8. import android.widget.Button;  
  9. import android.widget.EditText;  
  10.   
  11. public class GetSreenInfoActivity extends Activity {  
  12.   
  13.     @Override  
  14.     protected void onCreate(Bundle savedInstanceState) {  
  15.         super.onCreate(savedInstanceState);  
  16.         setContentView(R.layout.main);  
  17.         Button getBtn = (Button) findViewById(R.id.main_btn);  
  18.         final EditText widthPxText = (EditText) findViewById(R.id.main_et_width_px);  
  19.         final EditText heightPxText = (EditText) findViewById(R.id.main_et_height_px);  
  20.         final EditText densityText = (EditText) findViewById(R.id.main_et_density);  
  21.         final EditText densityDpiText = (EditText) findViewById(R.id.main_et_density_dpi);  
  22.         final EditText widthDipText = (EditText) findViewById(R.id.main_et_width_dip);  
  23.         final EditText heightDipText = (EditText) findViewById(R.id.main_et_height_dip);  
  24.         getBtn.setOnClickListener(new OnClickListener() {  
  25.   
  26.             @Override  
  27.             public void onClick(View v) {  
  28.                 // 屏幕宽度(px)  
  29.                 int widthPx = GetSreenInfoActivity.this.getResources()  
  30.                         .getDisplayMetrics().widthPixels;  
  31.                 // 屏幕高度(px)  
  32.                 int heightPx = GetSreenInfoActivity.this.getResources()  
  33.                         .getDisplayMetrics().heightPixels;  
  34.                 widthPxText.setText(widthPx + "");  
  35.                 heightPxText.setText(heightPx + "");  
  36.                 // 屏幕密度:指每平方英寸中的像素数,在DisplayMetrics类中,该密度值为dpi/160  
  37.                 float density = GetSreenInfoActivity.this.getResources()  
  38.                         .getDisplayMetrics().density;  
  39.                 // 屏幕密度(dpi):指每英寸中的像素数  
  40.                 float densityDpi = GetSreenInfoActivity.this.getResources()  
  41.                         .getDisplayMetrics().densityDpi;  
  42.                 densityText.setText(density + "");  
  43.                 densityDpiText.setText(densityDpi + "");  
  44.                 // 屏幕宽度(dip)  
  45.                 int widthDip = pxToDip(GetSreenInfoActivity.this, widthPx);  
  46.                 // 屏幕高度(dip)  
  47.                 int heightDip = pxToDip(GetSreenInfoActivity.this, heightPx);  
  48.                 widthDipText.setText(widthDip + "");  
  49.                 heightDipText.setText(heightDip + "");  
  50.             }  
  51.         });  
  52.   
  53.     }  
  54.   
  55.     /** 
  56.      * px值向dip值转换 
  57.      *  
  58.      * @param context 
  59.      * @param pxValue 
  60.      * @return 
  61.      */  
  62.     private int pxToDip(Context context, float pxValue) {  
  63.         float scale = context.getResources().getDisplayMetrics().density;  
  64.         return (int) (pxValue / scale + 0.5f);  
  65.     }  
  66.   
  67.     /** 
  68.      * dip值向px值转换 
  69.      *  
  70.      * @param context 
  71.      * @param dipValue 
  72.      * @return 
  73.      */  
  74.     public int dipToPx(Context context, float dipValue) {  
  75.         float scale = context.getResources().getDisplayMetrics().density;  
  76.         return (int) (dipValue * scale + 0.5f);  
  77.     }  
  78. }  
布局xml:
[html] view plaincopy
  1. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  2.     android:layout_width="match_parent"  
  3.     android:layout_height="match_parent"  
  4.     android:orientation="vertical" >  
  5.   
  6.     <LinearLayout  
  7.         android:layout_width="match_parent"  
  8.         android:layout_height="wrap_content" >  
  9.   
  10.         <TextView  
  11.             android:layout_width="wrap_content"  
  12.             android:layout_height="wrap_content"  
  13.             android:text="屏幕密度:" />  
  14.   
  15.         <EditText  
  16.             android:id="@+id/main_et_density"  
  17.             android:layout_width="match_parent"  
  18.             android:layout_height="wrap_content"  
  19.             android:layout_marginLeft="10dp"  
  20.             android:editable="false"  
  21.             android:singleLine="true" />  
  22.     </LinearLayout>  
  23.   
  24.     <LinearLayout  
  25.         android:layout_width="match_parent"  
  26.         android:layout_height="wrap_content" >  
  27.   
  28.         <TextView  
  29.             android:layout_width="wrap_content"  
  30.             android:layout_height="wrap_content"  
  31.             android:text="屏幕密度(dpi):" />  
  32.   
  33.         <EditText  
  34.             android:id="@+id/main_et_density_dpi"  
  35.             android:layout_width="match_parent"  
  36.             android:layout_height="wrap_content"  
  37.             android:layout_marginLeft="10dp"  
  38.             android:editable="false"  
  39.             android:singleLine="true" />  
  40.     </LinearLayout>  
  41.   
  42.     <LinearLayout  
  43.         android:layout_width="match_parent"  
  44.         android:layout_height="wrap_content" >  
  45.   
  46.         <TextView  
  47.             android:layout_width="wrap_content"  
  48.             android:layout_height="wrap_content"  
  49.             android:text="屏幕宽度(px):" />  
  50.   
  51.         <EditText  
  52.             android:id="@+id/main_et_width_px"  
  53.             android:layout_width="match_parent"  
  54.             android:layout_height="wrap_content"  
  55.             android:layout_marginLeft="10dp"  
  56.             android:editable="false"  
  57.             android:singleLine="true" />  
  58.     </LinearLayout>  
  59.   
  60.     <LinearLayout  
  61.         android:layout_width="match_parent"  
  62.         android:layout_height="wrap_content" >  
  63.   
  64.         <TextView  
  65.             android:layout_width="wrap_content"  
  66.             android:layout_height="wrap_content"  
  67.             android:text="屏幕高度(px):" />  
  68.   
  69.         <EditText  
  70.             android:id="@+id/main_et_height_px"  
  71.             android:layout_width="match_parent"  
  72.             android:layout_height="wrap_content"  
  73.             android:layout_marginLeft="10dp"  
  74.             android:editable="false"  
  75.             android:singleLine="true" />  
  76.     </LinearLayout>  
  77.   
  78.     <LinearLayout  
  79.         android:layout_width="match_parent"  
  80.         android:layout_height="wrap_content" >  
  81.   
  82.         <TextView  
  83.             android:layout_width="wrap_content"  
  84.             android:layout_height="wrap_content"  
  85.             android:text="屏幕宽度(dip):" />  
  86.   
  87.         <EditText  
  88.             android:id="@+id/main_et_width_dip"  
  89.             android:layout_width="match_parent"  
  90.             android:layout_height="wrap_content"  
  91.             android:layout_marginLeft="10dp"  
  92.             android:editable="false"  
  93.             android:singleLine="true" />  
  94.     </LinearLayout>  
  95.   
  96.     <LinearLayout  
  97.         android:layout_width="match_parent"  
  98.         android:layout_height="wrap_content" >  
  99.   
  100.         <TextView  
  101.             android:layout_width="wrap_content"  
  102.             android:layout_height="wrap_content"  
  103.             android:text="屏幕高度(dip):" />  
  104.   
  105.         <EditText  
  106.             android:id="@+id/main_et_height_dip"  
  107.             android:layout_width="match_parent"  
  108.             android:layout_height="wrap_content"  
  109.             android:layout_marginLeft="10dp"  
  110.             android:editable="false"  
  111.             android:singleLine="true" />  
  112.     </LinearLayout>  
  113.   
  114.     <Button  
  115.         android:id="@+id/main_btn"  
  116.         android:layout_width="wrap_content"  
  117.         android:layout_height="wrap_content"  
  118.         android:text="获取屏幕信息" />  
  119.   
  120. </LinearLayout>  
附上图片效果:

原创粉丝点击