pad 强制加载 Hdpi资源 (2.3 dpi < 240)

做一款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或者device/qcom/common/common.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.

use the code:

DisplayMetrics metrics = new DisplayMetrics();
 getWindowManager().getDefaultDisplay().getMetrics(metrics);
metrics.toString();


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值