1、兼容性有两种类型:设备兼容性和应用兼容性。 2、manifest.xml添加uses-feature:声明应用需要设备支持该特色功能,如果设备不支持该功能,则应用无法在设备上安装 如果应用在设备上运行的主体功能不需要支持该feature,应该将uses-feature设置为false,并在代码中动态判断:packageManager.hasSystemFeature(PackageManager.FEATURE_xxx),判断到设备不支持该功能,则调用接口disableXXX()让应用不使用该功能即可。 3、Android 为每种设备定义了两个特征:屏幕尺寸(屏幕的物理尺寸)和屏幕密度(屏幕上像素的物理密度,称为 DPI) 四种广义的尺寸:小、标准、大和特大。 还有几种广义的密度:mdpi(中)、hdpi(高)、xhdpi(超高)、xxhdpi(超超高)等。 4、屏幕尺寸是系统为您的应用界面所提供的可见空间。 应用的屏幕尺寸并非设备的实际屏幕尺寸,而是综合考虑屏幕方向、系统装饰(如导航栏)和窗口配置更改(例如,当用户启用多窗口模式时)后的尺寸。 像素密度是屏幕单位面积内的像素数,称为 dpi(每英寸的点数)。 它与分辨率不同,后者是屏幕上的总像素数。 通过提供密度独立像素(dp 或 dip)而非像素 (px) 作为您应使用的测量单位,Android 系统可帮助您实现密度独立的屏幕显示。 dp 是一个虚拟像素单位,1 dp 约等于中密度屏幕(160dpi;“基准”密度)上的 1 像素。 在定义文本大小时,您应改用可缩放像素 (sp) 作为单位(但切勿将 sp 用于布局尺寸)。 dp 单位转换为屏幕像素很简单:px = dp * (dpi / 160) 假设在某一应用中,用户的手指至少移动 16 像素之后,系统才会识别出滚动或滑动手势。在基线屏幕上,用户必须移动 16 pixels / 160 dpi(等于一英寸的 1/10 或 2.5 毫米),系统才会识别该手势。而在配备高密度显示屏 (240dpi) 的设备上,用户的手指必须至少移动 16 pixels / 240 dpi,相当于 1 英寸的 1/15(1.7 毫米)。此距离短得多,因此用户会感觉应用在该设备上更灵敏。 DisplayMetrics.density 字段根据当前像素密度指定将 dp 单位转换为像素时所必须使用的缩放系数。在中密度屏幕上,DisplayMetrics.density 等于 1.0;在高密度屏幕上,它等于 1.5;在超高密度屏幕上,等于 2.0;在低密度屏幕上,等于 0.75。此数字是一个系数,用其乘以 dp 单位,即可得出当前屏幕的实际像素数。 5、?DisplayCutout?:针对刘海屏指定的屏幕裁剪区域
|