0

因此,如果我的屏幕尺寸是 mdpi 或 hdpi,我会检查我的 main_activity 类,并且取决于我需要在我的游戏活动中启动适当的方法。我的数据库中有两个表,其中包含 mdpi 和 hdpi 图像。但我什么也得不到。只有我空白的主要活动。有什么问题?这是我的主要活动:

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

            Display display = getWindowManager().getDefaultDisplay(); 
            int width = display.getWidth();
            int height = display.getHeight();

            if((width>320) && (width<480)){
                Intent i = new Intent(MainActivity.this, GameDanska.class);
                i.putExtra("myMethod", "nextQuestionMDPI");
                startActivity(i);

            }
            else if((width>480) && (width<720)){
                Intent i2 = new Intent(MainActivity.this, GameDanska.class);
                i2.putExtra("myMethod", "nextQuestionHDPI");
                startActivity(i2);
            }

    }
4

3 回答 3

1

似乎这可以解决问题,您可以使用 Configuration.screenLayout 位掩码。

例子:

if ((getResources().getConfiguration().screenLayout & 
    Configuration.SCREENLAYOUT_SIZE_MASK) == 
        Configuration.SCREENLAYOUT_SIZE_LARGE) {
    // on a large screen device ...

}
于 2013-04-16T15:30:13.673 回答
1

使用开关如下

Intent i = new Intent(this, GameDanska.class);

switch (getResources().getDisplayMetrics().densityDpi) {
    case DisplayMetrics.DENSITY_MEDIUM:
        i.putExtra("myMethod", "nextQuestionMDPI");
        startActivity(i);
        break;
    default:
        i.putExtra("myMethod", "nextQuestionHDPI");
        startActivity(i);
        break;
}

如果您的应用程序仅适用于 MDPI、HDPI、XHDPI,请记住将屏幕兼容性放在您的 manifest.xml 文件中。

<compatible-screens>
    <screen android:screenSize=["small" | "normal" | "large" | "xlarge"]
            android:screenDensity=["ldpi" | "mdpi" | "hdpi" | "xhdpi"] />
    ...
</compatible-screens>

在你的情况下

 <compatible-screens>
    <screen android:screenSize="small" android:screenDensity="mdpi"/>
    <screen android:screenSize="small" android:screenDensity="hdpi"/>
    <screen android:screenSize="small" android:screenDensity="xhdpi"/>

    <screen android:screenSize="normal" android:screenDensity="mdpi"/>
    <screen android:screenSize="normal" android:screenDensity="hdpi"/>
    <screen android:screenSize="normal" android:screenDensity="xhdpi"/>

    <screen android:screenSize="large" android:screenDensity="mdpi"/>
    <screen android:screenSize="large" android:screenDensity="hdpi"/>
    <screen android:screenSize="large" android:screenDensity="xhdpi"/>

    <screen android:screenSize="xlarge" android:screenDensity="mdpi"/>
    <screen android:screenSize="xlarge" android:screenDensity="hdpi"/>
    <screen android:screenSize="xlarge" android:screenDensity="xhdpi"/>
 </compatible-screens>

API 屏幕参考

开关参考

于 2013-04-24T09:09:58.153 回答
0

而不是它,您可以直接将图像放入res->mdpi,hdpi,xhdpi,ldpi文件夹

for ldpi 320dp: a typical phone screen (240x320 ldpi, 320x480 mdpi, 480x800 hdpi, etc)

for mdpi 480dp: a tweener tablet like the Streak (480x800 mdpi).

for hdpi 600dp: a 7” tablet (600x1024 mdpi).

for xhdpi 720dp: a 10” tablet (720x1280 mdpi, 800x1280 mdpi, etc).

于 2013-04-24T09:22:46.173 回答