转自:http://www.linuxidc.com/Linux/2011-02/32499.htm
在/system/build.prop中设置:
对于HVGA屏,设置ro.sf.lcd_density=160
对于WVGA屏,设置ro.sf.lcd_density=240
下文对于lcd_density的设置讲解的很清楚。
我的是800x600的屏,在Android 的Notifications没有达到满屏幕宽度
原以为就是xml布局文件的问题,直接找到确定其布局的文件status_bar_expanded.xml,发现并无异样,也就是并非是此问题导致。由于经常使用emulator,一个偶尔的机会发现,我自己建立的avd设备也没有达到宽度满屏,但官方内置的几个skins却是可以。看来这里面肯定有差别。在进入到sdk的skins的目录。发现有一硬件配置文件:hardware.ini,里面记载着hw.lcd.density=240,如下
回头看看我自定义的avd设备,density为160。尝试性的,我把自定义的density改为240。果然发现,Notifications竟然也能满屏了。density究竟是何物。在官方的网站上有如下定义:
Density
Based on the screen resolution, the spread of pixels across the physical width and height of the screen.
A screen with lower density has fewer available pixels spread across the screen width and height, where a screen with higher density has more — sometimes significantly more — pixels spread across the same area. The density of a screen is important because, other things being equal, a UI element (such as a button) whose height and width are defined in terms of screen pixels will appear larger on the lower density screen and smaller on the higher density screen.
For simplicity, Android collapses all actual screen densities into three generalized densities: high, medium, and low. Applications can provide custom resources for each of these three densities — the platform handles the scaling of the resources up or down to meet the actual screen density.
再来到相关的源码部分,看系统式如何设置density的。
Density获取的部分在DisplayMetrics.java这个类里面,如果SDK文档中所说的,系统定义了3个等级的density,分别是low-120,medium-160,high-240。
1 public class DisplayMetrics {
2 /* *
3 * Standard quantized DPI for low-density screens.
4 */
5 public static final int DENSITY_LOW = 120 ;
6
7 /* *
8 * Standard quantized DPI for medium-density screens.
9 */
10 public static final int DENSITY_MEDIUM = 160 ;
11
12 /* *
13 * Standard quantized DPI for high-density screens.
14 */
15 public static final int DENSITY_HIGH = 240 ;
16
17 /* *
18 * The reference density used throughout the system.
19 */
20 public static final int DENSITY_DEFAULT = DENSITY_MEDIUM;
21
22 . . . .
同时,代码中把160的Density设置为默认的Density,也就是当前,机器中的Density。那如何设置这个Density。同样在这个类最下面,找到系统获取Density的方法:
1 private static int getDeviceDensity() {
2 // qemu.sf.lcd_density can be used to override ro.sf.lcd_density
3 // when running in the emulator, allowing for dynamic configurations.
4 // The reason for this is that ro.sf.lcd_density is write-once and is
5 // set by the init process when it parses build.prop before anything else.
6 return SystemProperties . getInt( " qemu.sf.lcd_density " ,
7 SystemProperties . getInt( " ro.sf.lcd_density " , DENSITY_DEFAULT));
8 }
从这个方法中可以看到,系统会去读系统的属性。先去读ro.sf..lcd_density,若存在,那么设置这个属性记录的density的值。否则,则取默认值也就是160。看来我源码的属性中并没有设置这一density的值。这个值在源码中的system.prop中修改
由于我不想重新编译系统。所以,我直接在编译好的build.prop中加上
ro.sf.lcd_density=240
重启测试,发现果然,屏幕的分辨率发生了变化,且Notification也全屏了。
觉得240的图标都太大了,我重新设置到200。(试验过在我的800x600的屏上,低于200,都不能使之满屏)
此方法也使用于当你机器玩游戏不满屏的情况。把这个density设置低一点,那么就能满屏玩了。
对于手机用户,使用adb shell连接到手机,取得root权限后修改ro.sf.lcd_density的值就能达到效果
另一种方法:
当然,如果你想保证你的Density不变,那可以只修改CompatibilityInfo.java这个文件,把DEFAULT分辨率的值改成当前的屏幕分辨率,我的是800x600的,于是改成:
1 /* *
2 * The default width of the screen in portrait mode.
3 */
4 // public static final int DEFAULT_PORTRAIT_WIDTH = 320;
5 public static final int DEFAULT_PORTRAIT_WIDTH = 600 ;
6 /* *
7 * The default height of the screen in portrait mode.
8 */
9 // public static final int DEFAULT_PORTRAIT_HEIGHT = 480;
10 public static final int DEFAULT_PORTRAIT_HEIGHT = 800 ;
分享到:
相关推荐
在本篇文章中,我们将深入探讨如何通过代码方式调整Android设备的屏幕密度,特别是利用`ro.sf.lcd_density=250`这一命令行来进行具体的设置。屏幕密度是衡量屏幕上像素点分布密集程度的一个指标,对于Android系统而...
在Android系统中,当遇到性能问题、应用崩溃或系统不稳定的情况时,开发者或技术支持人员通常会要求用户提供“bugreport”。这是一个包含设备状态详细信息的压缩包,用于诊断和解决问题。以"bugreport-LIO-AN00m-...
boot.img是Android系统中的一个关键文件,它包含了设备启动时所需的内核和初始化脚本。在三星S7572上,如果要改变SD卡的使用方式或优化存储性能,可能需要对boot.img进行定制。这通常涉及以下步骤: 1. 获取root...
确保你已经设置好PATH环境变量,以便于在命令行中调用这些工具。 2. **源码获取**:从Mstar的官方仓库或者合作伙伴的公开资源中获取MSD6A628的Android源码。 3. **编译系统**:根据Mstar提供的编译指南,配置并执行...
ro.sf.lcd_density=213 \ ro.product.firmware=v2.0 关闭GMS: #include device/softwinner/polaris-common/prebuild/google/products/gms_base.mk 3、 W:\a33\rtl8188eu_sc3817r_sina33\android\device\...
在Android系统中,修改设备分辨率通常涉及到对系统底层设置的更改,这通常需要获取设备的Root权限。Root权限是Android系统中的超级用户权限,允许用户访问和修改系统核心文件,包括与显示分辨率相关的配置。然而,...
- `ro.sf.lcd_density` 是一个关键属性,用于指定设备屏幕的像素密度(DPI)。这直接影响到UI元素的大小和布局。开发者可以根据这个属性来优化他们的应用界面,确保在不同分辨率的屏幕上都能有良好的显示效果。 4....
ro.sf.lcd_density=213 \ ro.product.firmware=v2.0 $(call inherit-product-if-exists, device/softwinner/astar-y3/modules/modules.mk) DEVICE_PACKAGE_OVERLAYS := device/softwinner/astar-y3/overlay ...
在开发Android应用的过程中,经常需要用到Android模拟器来进行测试与调试。正确设置模拟器的各项参数对于提升开发效率至关重要。本文将详细介绍创建Android模拟器时各个参数的意义及其设置方法。 #### 一、基本概念...
- **qemu.sf.lcd_density=320**: 设置屏幕密度为 320dpi。 - **qemu.hw.mainkeys=0**: 表示禁用主键。 - **qemu.sf.fake_camera=none**: 指定虚拟相机模式为无。 这些属性的设置有助于调整虚拟环境的配置,以满足...
ro.sf.lcd_density=213 \ ro.product.firmware=v2.0 $(call inherit-product-if-exists, device/softwinner/astar-y3/modules/modules.mk) DEVICE_PACKAGE_OVERLAYS := device/softwinner/astar-y3/overlay ...
ro.sf.lcd_density=213 \ ro.product.firmware=v2.0 $(call inherit-product-if-exists, device/softwinner/astar-y3/modules/modules.mk) DEVICE_PACKAGE_OVERLAYS := device/softwinner/astar-y3/overlay ...
ro.sf.lcd_density=213 \ ro.product.firmware=v2.0 $(call inherit-product-if-exists, device/softwinner/astar-y3/modules/modules.mk) DEVICE_PACKAGE_OVERLAYS := device/softwinner/astar-y3/overlay ...
在Android系统中,DPI(Density Independent Pixel)是衡量设备屏幕像素密度的一个标准,它直接影响着用户界面元素的大小和比例。通常,Android系统会根据设备的DPI自动调整UI,确保不同分辨率屏幕上的视觉效果一致...
1、(可选,在设置中不显示:蓝牙) Z:\home\rediron\a33\ap6181_bb16v3_sina33\android\device\softwinner\astar-y3\overlay\frameworks\base\core\res\res\values\config.xml (直接去掉) <!-- List of ...
设置系统的LCD density** - **概述**:LCD density指的是每英寸点数(DPI),用于调整屏幕的分辨率,影响UI元素的大小。 - **应用场景**:适配不同分辨率的屏幕,确保UI元素大小一致。 **3. 深度睡眠后熄灭按键灯*...
- Abstracted LCD density:屏幕密度,如160dpi,影响UI元素的大小和布局。 - 点击“create AVD”完成模拟器创建。 创建后的模拟器会在设备列表中出现,选择并启动,注意检查状态栏上的3G图标,确保网络连接正常。...
`build.prop`是Android系统中的一个关键配置文件,它记录了系统构建时的重要属性信息,如屏幕密度(LCD density)、默认语言设置、编译时间等。这些信息对于系统的初始化配置及运行时的性能优化至关重要。通常情况下...
ro.sf.lcd_density=213 PRODUCT_PROPERTY_OVERRIDES += \ persist.sys.timezone=Asia/Shanghai \ persist.sys.country=CN \ persist.sys.language=zh # stoarge PRODUCT_PROPERTY_OVERRIDES += \ ...