以编程方式在Android上设置屏幕密度

问题描述:

我正在写一个游戏,我想在中密度和高密度(320x480和480x800)上运行。为了运行两个密度的应用程序,我必须设置支持屏PARAM像this.-以编程方式在Android上设置屏幕密度

<supports-screens android:anyDensity="true" /> 

我的问题是,在一些第二代设备(即HTC Desire的),游戏高清密度运行,但表现有点差,所以我试图为这些设备“强制”中等密度。

我已经设法获得的电流密度像this.-

DisplayMetrics dm = new DisplayMetrics(); 
    getWindowManager().getDefaultDisplay().getMetrics(dm); 

和DisplayMetrics类似乎有一个“setTo”的方法,但不知道这是否符合我的需要,我也究竟应该用它。有什么办法可以做到这一点?

谢谢!

我对此没有太多的想法,但你可以试试这个:

只需使用一个全屏幕布局,里面定义了你想要的大小另一个布局。有点像这样:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent"> 
    <LinearLayout android:layout_width="200dip" 
     android:layout_height="150dip"> 
     <Button android:text="Button" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content"/> 
    </LinearLayout> 
</LinearLayout> 

我在里面放了一个按钮来显示内容的位置。

感谢

+0

如果您使用的是Windows,并知道如何使用JNI,微软提供了C++的Win32函数调用来做到这一点:ChangeDisplaySettingsEx()和EnumDisplaySettings()。 –

+0

谢谢你的回答Hemant,但我想我没有解释自己。我的游戏已经正确配置了中高分辨率,而且两者都很好。我的问题是关于在Hi res上运行游戏的“旧”设备的性能,这就是为什么我需要强制这些设备在中间分辨率上运行。谢谢。 – ssantos

+0

Ups,抱歉,没有看到您的第二条评论。我正在使用一个java游戏框架,不知道我是否可以访问这些C++函数,但我会给他们一个尝试。谢谢! – ssantos