如何解决Android显示不满屏的问题

时间: 2012-09-23 / 分类: Android开发, 资料积累 / 浏览次数: 1,134 views / 2个评论 发表评论

当在使用Android手机版本软件(Version below 3.0)的时候,由于屏幕尺寸特别大,这个是时候最常见的就是NotificationBar显示不全。刚刚开始大家都怀疑是NotificationBar的布局的问题。其实如果是布局的问题,那么应该在任何大小的屏幕上都会有这种问题。

从Android1.6以后的版本都是支持Density这个特性的。
Density有三组固定不变的值。

    Hight Density     240
Medium Density     160
Low Density         120

其实大家按照以下步骤就可以了。
1:修改android/frameworks/base/core/java/android/content/res/CompatibilityInfo.java

默认值
DEFAULT_PORTRAIT_WIDTH=320;
DEFAULT_PORTRAIT_HEIGHT=480;

修改成我们屏幕的实际的默认值。例如我们这里的屏幕大小是1024*600

DEFAULT_PORTRAIT_WIDTH    =    600    ;
DEFAULT_PORTRAIT_HEIGHT    =    1024;

2: 设置系统默认的ro.sf.lcd_density ,这个里面只能取三组值(240,160,120)。这样在/system/build.prop 我们就可以看见我们结果。

3:有时候大屏幕还会碰见一个问题,就是应用程序不能完全全屏显示。这个时候,我们还需要处理另外一个问题应用程序的兼容性。最直接的方式就是设置应用程序的兼容性为false.这里可以通过DevTool来设置,重启生效。
通过查找,发现发生作用的地方是在frameworks/base/services/java/com/android/server/PackageManagerService.java

public void systemReady() {
mSystemReady = true;
//revised by rocky 2010.10.15
// Read the compatibilty setting when the system is ready.
boolean compatibilityModeEnabled = android.provider.Settings.System.getInt(
mContext.getContentResolver(),
android.provider.Settings.System.COMPATIBILITY_MODE, 0) == 1;
//PackageParser.setCompatibilityModeEnabled(compatibilityModeEnabled);
PackageParser.setCompatibilityModeEnabled(false);
if (DEBUG_SETTINGS) {
Log.d(TAG, "compatibility mode:" + compatibilityModeEnabled);
}
}

这里可以直接设置为false,不取判断保存的设置值。

通过这几个步骤,我相信大尺寸的屏幕显示问题可以得到解决了。



.

*******************************************************************

上面是广告! 真的是广告!! 真的真的啊!!!

-----------------------------------------------------Copyright © 2011-2012--浙ICP备12011997---------------------------- ---------------------- ------------------------

无觅相关文章插件,快速提升流量