android dp是什么单位_手机屏幕密度dpi多少最好

Android (3) 2024-07-12 10:23

Hi,大家好,我是编程小6,很荣幸遇见你,我把这些年在开发过程中遇到的问题或想法写出来,今天说一说
android dp是什么单位_手机屏幕密度dpi多少最好,希望能够帮助你!!!。

源码:java

194 /**

195 * The logical density of the display. This is a scaling factor for the

196 * Density Independent Pixel unit, where one DIP is one pixel on an

197 * approximately 160 dpi screen (for example a 240x320, 1.5"x2" screen),

198 * providing the baseline of the system's display. Thus on a 160dpi screen

199 * this density value will be 1; on a 120 dpi screen it would be .75; etc.

200 *

201 *

This value does not exactly follow the real screen size (as given by

202 * {@link #xdpi} and {@link #ydpi}, but rather is used to scale the size of

203 * the overall UI in steps based on gross changes in the display dpi. For

204 * example, a 240x320 screen will have a density of 1 even if its width is

205 * 1.8", 1.3", etc. However, if the screen resolution is increased to

206 * 320x480 but the screen size remained 1.5"x2" then the density would be

207 * increased (probably to 1.5).

208 *

209 * @see #DENSITY_DEFAULT

210 */

211 public float density;

默认:app

299 public void setToDefaults() {

300 widthPixels = 0;

301 heightPixels = 0;

302 density = DENSITY_DEVICE / (float) DENSITY_DEFAULT;

303 densityDpi = DENSITY_DEVICE;

304 scaledDensity = density;

305 xdpi = DENSITY_DEVICE;

306 ydpi = DENSITY_DEVICE;

307 noncompatWidthPixels = widthPixels;

308 noncompatHeightPixels = heightPixels;

309 noncompatDensity = density;

310 noncompatDensityDpi = densityDpi;

311 noncompatScaledDensity = scaledDensity;

312 noncompatXdpi = xdpi;

313 noncompatYdpi = ydpi;

314 }

注释:ide

默认状况:density =  DENSITY_DEVICE / (float) DENSITY_DEFAULT;ui

DENSITY_DEVICE和DENSITY_DEFAULT在DisplayMetrics.java都有说明:this

35 /**

36 * Standard quantized DPI for medium-density screens.

37 */

38 public static final int DENSITY_MEDIUM = 160;

...

155 public static final int DENSITY_DEFAULT = DENSITY_MEDIUM;

...

162

163 /**

164 * The device's current density.

165 *

166 * This value reflects any changes made to the device density. To obtain

167 * the device's stable density, use {@link #DENSITY_DEVICE_STABLE}.

168 *

169 * @hide This value should not be used.

170 * @deprecated Use {@link #DENSITY_DEVICE_STABLE} to obtain the stable

171 * device density or {@link #densityDpi} to obtain the current

172 * density for a specific display.

173 */

174 @Deprecated

175 public static int DENSITY_DEVICE = getDeviceDensity();

...

370 private static int getDeviceDensity() {

371 // qemu.sf.lcd_density can be used to override ro.sf.lcd_density

372 // when running in the emulator, allowing for dynamic configurations.

373 // The reason for this is that ro.sf.lcd_density is write-once and is

374 // set by the init process when it parses build.prop before anything else.

375 return SystemProperties.getInt("qemu.sf.lcd_density",

376 SystemProperties.getInt("ro.sf.lcd_density", DENSITY_DEFAULT));

377 }

即:dpi为160时,density为1

code

今天的分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。

发表回复