大连商城网站制作公司,月亮花园wordpress,wordpress 资源分享,东莞专业做淘宝网站Android 可设置为随着窗口大小调整缩放比例及设定fixed的窗口大小。 对于surface的控制在SurfaceHolder类中进行 而Android 屏幕分辩率中已经有一个类DisplayMetics提供 Andorid.util 包下的DisplayMetrics 类提供了一种关于显示的通用信息#xff0c;如显示大小#xff0c;分… Android 可设置为随着窗口大小调整缩放比例及设定fixed的窗口大小。 对于surface的控制在SurfaceHolder类中进行 而Android 屏幕分辩率中已经有一个类DisplayMetics提供 Andorid.util 包下的DisplayMetrics 类提供了一种关于显示的通用信息如显示大小分辨率和字体。 为了获取DisplayMetrics 成员首先初始化一个对象如下 DisplayMetrics metrics new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(metrics); String str metrics.toString(); String str 屏幕分辨率为: metrics.widthPixels * metrics.heightPixels; textview.setText(str); //显示 在CTS中有如下一段代码可以体现出不同的单位显示情况 public void testAccessTextSize() { DisplayMetrics metrics mActivity.getResources().getDisplayMetrics(); mTextView new TextView(mActivity); mTextView.setTextSize(TypedValue.COMPLEX_UNIT_PX, 20f); assertEquals(TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_PX, 20f, metrics), mTextView.getTextSize(), 0.01f); mTextView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 20f); assertEquals(TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 20f, metrics), mTextView.getTextSize(), 0.01f); mTextView.setTextSize(TypedValue.COMPLEX_UNIT_SP, 20f); assertEquals(TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_SP, 20f, metrics), mTextView.getTextSize(), 0.01f); // setTextSize by default unit sp mTextView.setTextSize(20f); assertEquals(TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_SP, 20f, metrics), mTextView.getTextSize(), 0.01f); mTextView.setTextSize(200f); assertEquals(TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_SP, 200f, metrics), mTextView.getTextSize(), 0.01f); } 这里面有几个单位dip, dp, px, sp概念必须了解一下先 dip: device independent pixels(设备独立像素). 不同设备有不同的显示效果, 这个和设备硬件有关一般我们为了支持WVGA、HVGA和QVGA 推荐使用这个不依赖像素。 px: pixels(像素). 不同设备显示效果相同一般我们HVGA代表320x480像素这个用的比较多。 pt: point是一个标准的长度单位1pt1/72英寸用于印刷业非常简单易用 sp: scaled pixels(放大像素). 主要用于字体显示best for textsize根据 google 的建议 TextView 的字号最好使用 sp 做单位 程序员通常以像素为单位设计计算机用户界面但是如果显示分辩率发生变更更高时 则以前做的应用界面会相应缩小所以有必要使用与分辨率无关的度量单位解决此问题。 Android支持下列所有单位 px像素屏幕上的点。 in英寸长度单位。 mm毫米长度单位。 pt磅1/72英寸。 dp与密度无关的像素一种基于屏幕密度的抽象单位。在每英寸160点的显示器上1dp 1px。 dip与dp相同多用于android/ophone示例中。 dp也就是dip。这个和sp基本类似。如果设置表示长度、高度等属性时可以使用dp或sp。但如果 设置字体需要使用sp。dp是与密度无关sp除了与密度无关外还与scale无关。 所以为了使用户界面能够在现在和将来的显示器类型上正常显示建议大家始终使用sp作为 文字大小的单位将dip作为其他元素的单位。当然也可以考虑使用矢量图形而不是用位图 附带两个问题的解决 解码图片显示时设定的density会影响到显示效果 在DisplayMetrics.java中定义的默认值 /** * Standard quantized DPI for low-density screens. */ public static final int DENSITY_LOW 120; /** * Standard quantized DPI for medium-density screens. */ public static final int DENSITY_MEDIUM 160; /** * Standard quantized DPI for high-density screens. */ public static final int DENSITY_HIGH 240; /** * Standard quantized DPI for extra-high-density screens. */ public static final int DENSITY_XHIGH 320; /** * The reference density used throughout the system. */ public static final int DENSITY_DEFAULT DENSITY_MEDIUM; 1、如果图片解码像素高但显示效果不怎么样时请修改下DENSITY_DEFAULT看个效果 public static final int DENSITY_DEFAULT DENSITY_XHIGH; 显示例子 Options opts new Options(); opts.inScaled false; opts.inSampleSize 1; opts.inScreenDensity DisplayMetrics.DENSITY_HIGH; opts.inPreferredConfig Bitmap.Config.ARGB_8888; mBitmapbg BitmapFactory.decodeResource(this.getResources(), R.drawable.bj, opts); BitmapDrawable bd new BitmapDrawable(mBitmapbg); 2、如果图片在不同的显示频率下被放大了那么有可能与webview相关,这也是density影响的 /** * Enum for specifying the WebViews desired density. * FAR makes 100% looking like in 240dpi * MEDIUM makes 100% looking like in 160dpi * CLOSE makes 100% looking like in 120dpi */ public enum ZoomDensity { FAR(150), // 240dpi MEDIUM(100), // 160dpi CLOSE(75); // 120dpi ZoomDensity(int size) { value size; } int value; } 那么是否可能根据屏幕的分辩率进行动态设定呢 int dDensity getResources().getDisplayMetrics().densityDpi ; WebSettings.ZoomDensity zDensity WebSettings.ZoomDensity.MEDIUM ; switch(dDensity) { case DisplayMetrics.DENSITY_LOW : zDensity WebSettings.ZoomDensity.CLOSE; break; case DisplayMetrics.DENSITY_MEDIUM: zDensity WebSettings.ZoomDensity.MEDIUM; break; case DisplayMetrics.DENSITY_HIGH: zDensity WebSettings.ZoomDensity.FAR; break ; } webSettings.setDefaultZoom(zDensity); 转载于:https://www.cnblogs.com/snake-hand/p/3151370.html