【问题标题】:Programmatically set screen density on Android在 Android 上以编程方式设置屏幕密度
【发布时间】:2011-11-02 22:51:10
【问题描述】:

我正在编写一款我想在中高密度(320x480 和 480x800)上运行的游戏。为了在两种密度下运行应用程序,我必须像这样设置 support-screens 参数。-

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

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

我设法得到这样的电流密度。-

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

DisplayMetrics 类似乎有一个“setTo”方法,但不确定它是否符合我的需要,也不知道我应该如何使用它。有什么方法可以实现吗?

谢谢!

【问题讨论】:

    标签: android


    【解决方案1】:

    我不太了解,但你可以试试这个:

    只需使用全屏布局,并在内部定义另一个具有您想要的大小的布局。有点像这样:

    <?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>
    

    我在那里放了一个按钮,只是为了显示内容的去向。

    谢谢

    【讨论】:

    • 如果您使用的是 Windows 并且知道如何使用 JNI,Microsoft 提供了 C++ Win32 函数调用来执行此操作:ChangeDisplaySettingsEx() 和 EnumDisplaySettings()。
    • 感谢您的回答 Hemant,但我想我没有解释自己。我的游戏已经正确配置为中高分辨率,两者看起来都很好。我的问题是关于以高分辨率运行游戏的“旧”设备的性能,这就是为什么我需要强制这些设备以中等分辨率运行。谢谢。
    • Ups,抱歉,没有看到您的第二条评论。我正在使用一个 java 游戏框架,不确定我是否可以访问那些 c++ 函数,但我会试一试。谢谢!
    猜你喜欢
    • 2011-03-11
    • 2023-03-12
    • 2012-02-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-13
    • 2012-04-01
    相关资源
    最近更新 更多