为三星Galaxy Tab平板电脑开发Android程序–界面优化篇

Galaxy Tab是一个拥有7英寸1024×600(WSVGA) 分辨率的屏幕,运行Android 2.2(升级Froyo)的平板电脑。下面的指南将帮助我们优化应用程序界面,获得最佳的用户体验。

1、使用高分辨率[high density display (HDPI)]的图片资源

从Android 1.6开始,增加了对多种屏幕尺寸和分辨率的支持,具体的定义如下:
screen sizeslarge, normal, small
densitieshigh (hdpi), medium (mdpi), low (ldpi)
这些属性在AndroidManifest.xml中的定义如下:
<supports-screens
android:largeScreens=”true
android:normalScreens=”true
android:smallScreens=”true
android:resizable=”true
android:anyDensity=”true” />
结合Galaxy Tab平板电脑,在应用程序包中使用高分辨率[high density display (HDPI)]的图片资源,使用minSDKVersion为4或更高版本,这样就可以在应用程序包中添加高分辨率的图片资源。将AndroidManifest.xml文件中的android:anyDensity属性设置为”true”,当系统找不到高分辨率的图片资源时,可以缩放当前已经存在的图片资源,但是这样可能没有给用户最好的体验。为了支持minSDKVersion为3的设备,同时还必须将AndroidManifest.xml文件中的android:largeScreens属性设置为“true”。

2、Galaxy Tab平板电脑的默认

DeviceMetrics.density = 240
DeviceMetrics.xdpi = 168
DeviceMetrics.ydpi = 168
Density属性[ro.sf.lcd_density]默认设置为 240
属性值具体的含义,如下图所示:
DisplayMetrics
在实际开发中,我们必须考虑以上默认的设置。

3、位图资源的缩放

当对位图资源进行缩放处理时,充分考虑设备的高度和宽度,在程序运行时获取设备的高度和宽度代码如下:
WindowManager mWMgr mWMgr =
(WindowManager)context.getSystemService(Context.WINDOW_SERVICE);
int width = mWMgr.getDefaultDisplay().getWidth();
int height – mWMgr.getDefaultDisplay().getHeight();

4、下面列举一些强烈推荐的建议:

  • 在XML布局,使用wrap_content和fill_parent来填充整个父窗口;
  • 使用FrameLayout的,而不是AbsoluteLayout,减少界面布局对屏幕大小的依赖;
  • NEVER use hard-coding for pixel value, use dip (density independent pixel);
  • 根据density和resolution 为不同的设备准备合适的图片资源。