Android和支持多屏幕布局

SK9*_*SK9 9 android screen-resolution screen-size

我正在完成一个Android应用程序,剩下的就是为多个设备调整UI布局和图形.我需要将特定元素放置在屏幕上的特定位置.

Android文档解释了多屏幕分辨率和大小的分类方式,并解释了资源标记系统.

例如,既WVGA800 (480x800)WVGA854 (480x854)被归类为正常高密度屏幕.为了满足这些需求,您需要创建一个名为"layout"的文件夹(已经存在"normal")和"drawable-hdpi".

问题是,即使您使用"dp"单位,这也无法区分同一分类的两个设备.如何为WGA800和WGA854单独提供布局/绘图?

比率是完全不同的,用户容易注意到不良缩放,并且由于我需要诸如得分和计时器之类的东西出现在特定地方的背景图像上而加剧了这种情况.

同样的问题适用于{WQVGA400(240x400),WQVGA432(240x432)}和{WVGA800(480x800),WVGA854(480x854)}.如何为WQVA400和WQGA432提供布局/绘图?

Oll*_*e C 15

我想你正在走向地狱之路.

Android运行在各种各样的设备上,每周更多,并且许多格式尚不存在,但会引入新的变量.因此,即使您成功,一个屏幕尺寸略有不同的新设备也会失败.

使用特定的屏幕分辨率为Android设计是一个错误,并且类似于如果您强制所有页面在网络上完全相同的大小,您会发现的问题,它很少运行良好(例如,即使是一个整洁的固定宽度的网站将在移动设备上悲惨地失败).

Android设计用于支持所有这些变化,但如果你试图在每个屏幕尺寸上获得像素完美的绝对定位渲染,那么你就是在逆流而行.它可能非常痛苦,非常耗时且昂贵,并且可能最终失败.即使你成功了,你将如何在所有这些屏幕变体上测试它?这听起来像测试地狱.

我强烈建议你接受你不能完全按照你的需要做所有事情,而是看看如何使用相对于彼此流畅渲染对象的方式,所以应用程序在所有不同的变体中看起来很好,使用不同的布局每组决议,以改善不同尺寸屏幕上的体验.

  • 害怕同样多.但我需要大声喊叫! (2认同)

Mar*_*rdt 5

是的,这是可能的:

首先,您必须创建一个display-class实例.之后,您将获得显示器的宽度和高度.然后,您可以使用if运算符检查循环中的每个分辨率并设置所需的图像.

例:

ImageView iview=(ImageView)findViewById(R.id.imageView1);
//here are the Bitmaps optimized for each screen resolution 
Bitmap[] bitmaps={BitmapFactory.decodeResource(getResources(), R.drawable.icwvga800),BitmapFactory.decodeResource(getResources(), R.drawable.icwvga854),(...)};
// In this list all supported screensizes are defined
int[][] possibleScreenSolutions={{480,800},{480,854},{240,400},{240,432},{480,800},{480,854}};
Display display = ((WindowManager) getSystemService(WINDOW_SERVICE)).getDefaultDisplay();
int[] ScreenSolution={display.getWidth(),display.getHeight()};
// Compare the real screen solution with the all supported ones
for(int i=0;i<possibleScreenSolutions.length;i++){
    if((ScreenSolution[0]==possibleScreenSolutions[i][0])&&(ScreenSolution[1]==possibleScreenSolutions[i][1])){
            iview.setImageBitmap(bitmaps[i]);// set the image
    }
}
Run Code Online (Sandbox Code Playgroud)

我同意Ollie C:检查所有决议太混乱了,但至少可能.

我已经测试过它了:它有效.