做一款pad产品,屏幕是7寸,分辨为1024*600。芯片厂商给的代码运行起来但视觉效果很差,第一眼就可以看出壁纸被严重拉伸过,图片色块和锯齿很明显,一开始怀疑是屏驱动没有调好驱动专人对lcd驱动进行了优化,但问题没有多少改善。最后发现是系统根据硬件报上来的参数计算出来设备的dpi只有169,远为达到读HDPI资源的240标准。
当时由于工期紧采取了妥协的做法,把所有的应用资源都放在mdpi里,虽然尺寸都是H的。
但很快出现了新问题:
1,launcher 无法加载第三方的高清icon,效果很模糊。
2,第三方应用运行的效果对比p1000差太多,完全不是pad的布局。
为了克服上述两个问题,中间试了很多方法和手段,查阅不少资料。有几种可行的方案,权衡利弊,最后还是决定在框架里面作修改:
1.framework/base/core/java/android/content/res/CompatibilityInfo.java
DEFAULT_PORTRAIT_WIDTH = 600
DEFAULT_PORTRAIT_HEIGHT = 1024
2.vendor/marvell/brownstone/brownstone.mk
+#Add for support High dpi
+PRODUCT_PROPERTY_OVERRIDES += \
+ persist.service.pp.enable = 1 \
+ro.sf.lcd_density = 240
+CUSTOM_LOCALES += hdpi mdpi
做完以上修改全编译系统,上述两个问题解决。
补充:从3.0开始,pad才算真正被Android系统所支持,google工程师还煞费苦心的引入新机制,使屏幕尺寸也成为决定系统加载何种i资源的依据之一
Note: Beginning with Android 3.2 (API level 13), these size groups are deprecated in favor of a new technique for managing screen sizes based
on the available screen width. If you're developing for Android 3.2 and greater, see Declaring Tablet Layouts for Android 3.2 for
more information.