我正在开发的应用程序包含两种不同的布局:一种用于普通手机,另一种用于 NOOKcolor 等小型平板电脑。哪个是根据屏幕宽度分辨率(当前为 600dip)做出的决定。它在 Nook 上看起来很棒,但在具有 720 x 1280 显示屏的 HTC Rezound 上看起来很糟糕。在后者上,无论分辨率如何,所有内容(文本、图像等)看起来都要大得多,因此它们都被捆绑在一起。
什么是选择合适设备的好方法?也许检测物理尺寸(4.3" vs 7")与分辨率?
我正在开发的应用程序包含两种不同的布局:一种用于普通手机,另一种用于 NOOKcolor 等小型平板电脑。哪个是根据屏幕宽度分辨率(当前为 600dip)做出的决定。它在 Nook 上看起来很棒,但在具有 720 x 1280 显示屏的 HTC Rezound 上看起来很糟糕。在后者上,无论分辨率如何,所有内容(文本、图像等)看起来都要大得多,因此它们都被捆绑在一起。
什么是选择合适设备的好方法?也许检测物理尺寸(4.3" vs 7")与分辨率?
使用以下方法检测您设备的屏幕尺寸:
/**
* Checks if the screen size is equal or above given length
* @param activity activity screen
* @param screen_size diagonal size of screen, for example 7.0 inches
* @return True if its equal or above, else false
*/
public static boolean checkScreenSize(Activity activity, double screen_size)
{
Display display = activity.getWindowManager().getDefaultDisplay();
DisplayMetrics displayMetrics = new DisplayMetrics();
display.getMetrics(displayMetrics);
int width = displayMetrics.widthPixels / displayMetrics.densityDpi;
int height = displayMetrics.heightPixels / displayMetrics.densityDpi;
double screenDiagonal = Math.sqrt( width * width + height * height );
return (screenDiagonal >= screen_size );
}
查看支持多个屏幕的文档。您可以遵循预先确定的文件夹命名结构,以便 Android 为不同的屏幕尺寸/密度加载不同的布局和可绘制对象。
例如:
res/layout/my_layout.xml // layout for normal screen size ("default")
res/layout-small/my_layout.xml // layout for small screen size
res/layout-large/my_layout.xml // layout for large screen size
res/layout-xlarge/my_layout.xml // layout for extra large screen size
res/layout-xlarge-land/my_layout.xml // layout for extra large in landscape orientation
res/drawable-mdpi/my_icon.png // bitmap for medium density
res/drawable-hdpi/my_icon.png // bitmap for high density
res/drawable-xhdpi/my_icon.png // bitmap for extra high density