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.xml. 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 }
xml文件:
1 <ScrollView xmlns:android="http://schemas.android.com/apk/res/android" 2 xmlns:tools="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>
运行效果图: