你的位置:首页 > 操作系统

[操作系统]获取手机屏幕密度。


 1 package com.km.screeninfo; 2  3 import android.os.Bundle; 4 import android.support.v4.app.Fragment; 5 import android.support.v4.app.FragmentActivity; 6 import android.util.DisplayMetrics; 7 import android.view.LayoutInflater; 8 import android.view.Menu; 9 import android.view.MenuItem; 10 import android.view.View; 11 import android.view.ViewGroup; 12 import android.widget.TextView; 13  14 public class MainActivity extends FragmentActivity { 15  16   @Override 17   protected void onCreate(Bundle savedInstanceState) { 18     super.onCreate(savedInstanceState); 19     setContentView(R.layout.activity_main); 20  21     if (savedInstanceState == null) { 22       getSupportFragmentManager().beginTransaction() 23           .add(R.id.container, new PlaceholderFragment()).commit(); 24     } 25   } 26  27   @Override 28   public boolean onCreateOptionsMenu(Menu menu) { 29  30     // Inflate the menu; this adds items to the action bar if it is present. 31     getMenuInflater().inflate(R.menu.main, menu); 32     return true; 33   } 34  35   @Override 36   public boolean onOptionsItemSelected(MenuItem item) { 37     // Handle action bar item clicks here. The action bar will 38     // automatically handle clicks on the Home/Up button, so long 39     // as you specify a parent activity in AndroidManifest. 40     int id = item.getItemId(); 41     if (id == R.id.action_settings) { 42       return true; 43     } 44     return super.onOptionsItemSelected(item); 45   } 46  47   /** 48    * A placeholder fragment containing a simple view. 49   */ 50   public static class PlaceholderFragment extends Fragment { 51  52     private TextView tvModel; 53     private TextView tvScreenHeight1; 54     private TextView tvScreenHeight2; 55     private TextView tvScreenHeight3; 56     private TextView tvScreenWidth1; 57     private TextView tvScreenWidth2; 58     private TextView tvScreenWidth3; 59     private TextView tvScreenDensity2; 60     private TextView tvScreenDensityDPI2; 61     private TextView tvScreenDensity3; 62     private TextView tvScreenDensityDPI3; 63     private TextView tvScreenWidth4; 64     private TextView tvScreenHeight4; 65  66     public PlaceholderFragment() { 67     } 68  69     @Override 70     public View onCreateView(LayoutInflater inflater, ViewGroup container, 71         Bundle savedInstanceState) { 72       View rootView = inflater.inflate(R.layout.fragment_main, container,false); 73       tvModel = (TextView) rootView.findViewById(R.id.tv_model); 74       tvScreenHeight1 = (TextView) rootView.findViewById(R.id.tv_screen_height1); 75       tvScreenHeight2 = (TextView) rootView.findViewById(R.id.tv_screen_height2); 76       tvScreenHeight3 = (TextView) rootView.findViewById(R.id.tv_screen_height3); 77       tvScreenHeight4 = (TextView) rootView.findViewById(R.id.tv_screen_height4); 78        79       tvScreenWidth1 = (TextView) rootView.findViewById(R.id.tv_screen_width1); 80       tvScreenWidth2 = (TextView) rootView.findViewById(R.id.tv_screen_width2); 81       tvScreenWidth3 = (TextView) rootView.findViewById(R.id.tv_screen_width3); 82       tvScreenWidth4 = (TextView) rootView.findViewById(R.id.tv_screen_width4); 83        84       tvScreenDensity2 = (TextView) rootView.findViewById(R.id.tv_screen_density2); 85       tvScreenDensityDPI2 = (TextView) rootView.findViewById(R.id.tv_screen_densityDPI2); 86        87       tvScreenDensity3 = (TextView) rootView.findViewById(R.id.tv_screen_density3); 88       tvScreenDensityDPI3 = (TextView) rootView.findViewById(R.id.tv_screen_densityDPI3); 89        90        91       tvModel.setText(android.os.Build.MODEL); 92        93       // 获取屏幕密度(方法1)  94       int screenWidth1 = getActivity().getWindowManager().getDefaultDisplay().getWidth();    // 屏幕宽(像素,如:480px)  95       int screenHeight1 = getActivity().getWindowManager().getDefaultDisplay().getHeight();   // 屏幕高(像素,如:800p) 96  97       tvScreenHeight1.setText(screenHeight1+" px"); 98       tvScreenWidth1.setText(screenWidth1+" px"); 99       100       101       // 获取屏幕密度(方法2) 102       DisplayMetrics dm2 = getResources().getDisplayMetrics(); 103      104       float density = dm2.density;    // 屏幕密度(像素比例:0.75/1.0/1.5/2.0) 105       int densityDPI = dm2.densityDpi;   // 屏幕密度(每寸像素:120/160/240/320) 106       float xdpi = dm2.xdpi;       107       float ydpi = dm2.ydpi; 108        109       int screenWidth2 = dm2.widthPixels;   // 屏幕宽(像素,如:480px) 110       int screenHeight2 = dm2.heightPixels;   // 屏幕高(像素,如:800px) 111 112       tvScreenHeight2.setText(screenHeight2+" px");113       tvScreenWidth2.setText(screenWidth2+" px");114       tvScreenDensity2.setText(density+"");115       tvScreenDensityDPI2.setText(densityDPI+"");116       117       // 获取屏幕密度(方法3) 118       DisplayMetrics dm3 = new DisplayMetrics(); 119       getActivity().getWindowManager().getDefaultDisplay().getMetrics(dm3); 120        121       density = dm3.density;   // 屏幕密度(像素比例:0.75/1.0/1.5/2.0) 122       densityDPI = dm3.densityDpi;   // 屏幕密度(每寸像素:120/160/240/320) 123       xdpi = dm3.xdpi;      124       ydpi = dm3.ydpi; 125        126       tvScreenDensity3.setText(density+"");127       tvScreenDensityDPI3.setText(densityDPI+"");128        129       int screenWidth3 = dm3.widthPixels;     // 屏幕宽(px,如:480px) 130       int screenHeight3 = dm3.heightPixels;    // 屏幕高(px,如:800px) 131       132       tvScreenHeight3.setText(screenHeight3+" px");133       tvScreenWidth3.setText(screenWidth3+" px");134        135       float screenWidthDip = (dm3.widthPixels/density);  // 屏幕宽(dip,如:320dip) 136       float screenHeightDip = (dm3.heightPixels/density);  // 屏幕宽(dip,如:533dip) 137 138       tvScreenHeight4.setText(screenHeightDip+" dip");139       tvScreenWidth4.setText(screenWidthDip+" dip");140       return rootView;141     }142   }143 144 }

 1 <ScrollView ="http://schemas.android.com/apk/res/android" 2   ="http://schemas.android.com/tools" 3   android:layout_width="wrap_content" 4   android:layout_height="wrap_content" 5   tools:context="com.km.screeninfo.MainActivity$PlaceholderFragment" > 6  7   <LinearLayout 8     android:layout_width="match_parent" 9     android:layout_height="match_parent" 10     android:orientation="vertical" > 11  12     <LinearLayout 13       android:layout_width="match_parent" 14       android:layout_height="wrap_content" 15       android:layout_margin="2dip" 16       android:orientation="horizontal" > 17  18       <TextView 19         android:layout_width="wrap_content" 20         android:layout_height="wrap_content" 21         android:text="手机型号:" 22         android:textStyle="bold" /> 23  24       <TextView 25         android:id="@+id/tv_model" 26         android:layout_width="wrap_content" 27         android:layout_height="wrap_content" /> 28     </LinearLayout> 29  30     <TextView 31       android:layout_width="wrap_content" 32       android:layout_height="wrap_content" 33       android:layout_marginBottom="3dip" 34       android:layout_marginTop="3dip" 35       android:text="方法一:getDefaultDisplay().getH/W()" 36       android:textColor="#aa66aa" 37       android:textSize="16sp" /> 38  39     <LinearLayout 40       android:layout_width="match_parent" 41       android:layout_height="wrap_content" 42       android:layout_margin="2dip" 43       android:layout_marginTop="3dip" 44       android:orientation="horizontal" > 45  46       <TextView 47         android:layout_width="wrap_content" 48         android:layout_height="wrap_content" 49         android:text="屏幕高(一):" 50         android:textStyle="bold" /> 51  52       <TextView 53         android:id="@+id/tv_screen_height1" 54         android:layout_width="wrap_content" 55         android:layout_height="wrap_content" /> 56     </LinearLayout> 57  58     <LinearLayout 59       android:layout_width="match_parent" 60       android:layout_height="wrap_content" 61       android:layout_margin="2dip" 62       android:orientation="horizontal" > 63  64       <TextView 65         android:layout_width="wrap_content" 66         android:layout_height="wrap_content" 67         android:text="屏幕宽(一):" 68         android:textStyle="bold" /> 69  70       <TextView 71         android:id="@+id/tv_screen_width1" 72         android:layout_width="wrap_content" 73         android:layout_height="wrap_content" /> 74     </LinearLayout> 75  76     <TextView 77       android:layout_width="wrap_content" 78       android:layout_height="wrap_content" 79       android:layout_marginBottom="3dip" 80       android:layout_marginTop="3dip" 81       android:text="方法二:getResources().getDisplayMetrics().H/W" 82       android:textColor="#aa66aa" 83       android:textSize="16sp" /> 84  85     <LinearLayout 86       android:layout_width="match_parent" 87       android:layout_height="wrap_content" 88       android:layout_margin="2dip" 89       android:layout_marginTop="3dip" 90       android:orientation="horizontal" > 91  92       <TextView 93         android:layout_width="wrap_content" 94         android:layout_height="wrap_content" 95         android:text="屏幕高(二):" 96         android:textStyle="bold" /> 97  98       <TextView 99         android:id="@+id/tv_screen_height2"100         android:layout_width="wrap_content"101         android:layout_height="wrap_content" />102     </LinearLayout>103 104     <LinearLayout105       android:layout_width="match_parent"106       android:layout_height="wrap_content"107       android:layout_margin="2dip"108       android:orientation="horizontal" >109 110       <TextView111         android:layout_width="wrap_content"112         android:layout_height="wrap_content"113         android:text="屏幕宽(二):"114         android:textStyle="bold" />115 116       <TextView117         android:id="@+id/tv_screen_width2"118         android:layout_width="wrap_content"119         android:layout_height="wrap_content" />120     </LinearLayout>121 122     <LinearLayout123       android:layout_width="match_parent"124       android:layout_height="wrap_content"125       android:layout_margin="2dip"126       android:layout_marginTop="3dip"127       android:orientation="horizontal" >128 129       <TextView130         android:layout_width="wrap_content"131         android:layout_height="wrap_content"132         android:text="density2:"133         android:textStyle="bold" />134 135       <TextView136         android:id="@+id/tv_screen_density2"137         android:layout_width="wrap_content"138         android:layout_height="wrap_content" />139 140       <TextView141         android:layout_width="wrap_content"142         android:layout_height="wrap_content"143         android:layout_marginLeft="20dip"144         android:text="densityDPI2:"145         android:textStyle="bold" />146 147       <TextView148         android:id="@+id/tv_screen_densityDPI2"149         android:layout_width="wrap_content"150         android:layout_height="wrap_content" />151     </LinearLayout>152 153     <TextView154       android:layout_width="wrap_content"155       android:layout_height="wrap_content"156       android:layout_marginBottom="3dip"157       android:layout_marginTop="3dip"158       android:text="方法三:getDefaultDisplay().getMetrics(DisplayMetrics).H/W"159       android:textColor="#aa66aa"160       android:textSize="16sp" />161 162     <LinearLayout163       android:layout_width="match_parent"164       android:layout_height="wrap_content"165       android:layout_margin="2dip"166       android:layout_marginTop="3dip"167       android:orientation="horizontal" >168 169       <TextView170         android:layout_width="wrap_content"171         android:layout_height="wrap_content"172         android:text="屏幕高(三):"173         android:textStyle="bold" />174 175       <TextView176         android:id="@+id/tv_screen_height3"177         android:layout_width="wrap_content"178         android:layout_height="wrap_content" />179     </LinearLayout>180 181     <LinearLayout182       android:layout_width="match_parent"183       android:layout_height="wrap_content"184       android:layout_margin="2dip"185       android:orientation="horizontal" >186 187       <TextView188         android:layout_width="wrap_content"189         android:layout_height="wrap_content"190         android:text="屏幕宽(三):"191         android:textStyle="bold" />192 193       <TextView194         android:id="@+id/tv_screen_width3"195         android:layout_width="wrap_content"196         android:layout_height="wrap_content" />197     </LinearLayout>198 199     <LinearLayout200       android:layout_width="match_parent"201       android:layout_height="wrap_content"202       android:layout_margin="2dip"203       android:layout_marginTop="3dip"204       android:orientation="horizontal" >205 206       <TextView207         android:layout_width="wrap_content"208         android:layout_height="wrap_content"209         android:text="density3:"210         android:textStyle="bold" />211 212       <TextView213         android:id="@+id/tv_screen_density3"214         android:layout_width="wrap_content"215         android:layout_height="wrap_content" />216 217       <TextView218         android:layout_width="wrap_content"219         android:layout_height="wrap_content"220         android:layout_marginLeft="20dip"221         android:text="densityDPI3:"222         android:textStyle="bold" />223 224       <TextView225         android:id="@+id/tv_screen_densityDPI3"226         android:layout_width="wrap_content"227         android:layout_height="wrap_content" />228     </LinearLayout>229 230     <TextView231       android:layout_width="wrap_content"232       android:layout_height="wrap_content"233       android:layout_marginBottom="3dip"234       android:layout_marginTop="3dip"235       android:text="屏幕宽高(px/density)"236       android:textColor="#aa66aa"237       android:textSize="16sp" />238 239     <LinearLayout240       android:layout_width="match_parent"241       android:layout_height="wrap_content"242       android:layout_margin="2dip"243       android:layout_marginTop="3dip"244       android:orientation="horizontal" >245 246       <TextView247         android:layout_width="wrap_content"248         android:layout_height="wrap_content"249         android:text="屏幕高:"250         android:textStyle="bold" />251 252       <TextView253         android:id="@+id/tv_screen_height4"254         android:layout_width="wrap_content"255         android:layout_height="wrap_content" />256     </LinearLayout>257 258     <LinearLayout259       android:layout_width="match_parent"260       android:layout_height="wrap_content"261       android:layout_margin="2dip"262       android:orientation="horizontal" >263 264       <TextView265         android:layout_width="wrap_content"266         android:layout_height="wrap_content"267         android:text="屏幕宽:"268         android:textStyle="bold" />269 270       <TextView271         android:id="@+id/tv_screen_width4"272         android:layout_width="wrap_content"273         android:layout_height="wrap_content" />274     </LinearLayout>275 276     <TextView277       android:layout_width="wrap_content"278       android:layout_height="wrap_content"279       android:layout_marginBottom="3dip"280       android:layout_marginTop="3dip"281       android:text="科普:"282       android:textColor="#aa66aa"283       android:textSize="16sp" />284 285     <TextView286       android:layout_width="wrap_content"287       android:layout_height="wrap_content"288       android:layout_margin="2dip"289       android:text="density = densityDpi/160" />290 291     <TextView292       android:layout_width="wrap_content"293       android:layout_height="wrap_content"294       android:layout_margin="2dip"295       android:text="px(pixels) = dip * (densityDpi/160) = dip*density" />296 297     <TextView298       android:layout_width="wrap_content"299       android:layout_height="wrap_content"300       android:layout_margin="2dip"301       android:text="dip(device independent pixels) = dp " />302 303     <TextView304       android:layout_width="wrap_content"305       android:layout_margin="2dip"306       android:layout_height="wrap_content"307       android:text="dip = (px * 160)/densityDpi = px / density" />308 309     <TextView310       android:layout_width="wrap_content"311       android:layout_height="wrap_content"312       android:layout_margin="20dip" />313   </LinearLayout>314 315 </ScrollView>

运行效果图: