Android如何适配不同设备

支持不同的设备

支持不同的语言

其实就是在res中创建不同的语言文件夹,例如:

    res/
       values/
           strings.xml
       values-es/
           strings.xml
       values-fr/
           strings.xml

然后创建对应的语言文件即可

支持不同分辨率的设备

创建不同的布局文件

android 对于屏幕分类使用两种特性:size和density;我们的APP应该对不同大小和分辨率的设备都做适配;
主要有四种大小:small, normal, large, xlarge
四种分辨率:low (ldpi), medium (mdpi), high (hdpi), extra high (xhdpi)
跟语言一样,也是在不同的文件夹中放置这些布局文件就可以了。另外,因为会有横屏和竖屏两种模式,所以说为了最佳的用户体验,我们的许多APP都应该修改布局来适配不同的模式。

MyProject/
    res/
        layout/              # default (portrait)
            main.xml
        layout-land/         # landscape
            main.xml
        layout-large/        # large (portrait)
            main.xml
        layout-large-land/   # large landscape
            main.xml

名字必须是相同的,这样子在代码初始化的时候就会根据屏幕的大小自动选择相应的布局文件了,而且会自动根据屏幕的方向来决定使用landscape(横屏模式)还是portrait(竖屏模式)

android 3.2以上支持一个可以定义屏幕大小的高级方法,它能让你根据密度无关像素的最小宽度和高度来指定不同的资源

创建不同的Bitmaps

提供不同分辨率的bitmap资源来适应不同的密度(?):

  • xhdpi: 2.0
  • hdpi: 1.5
  • mdpi: 1.0 (baseline)
  • ldpi: 0.75
    意思就是说,如果你对xhdpi尺寸的设备生成了一张200200的图片,那就应该生成同样的资源——150150(hdpi)、100x100(mdpi)、 75x75(ldpi)。
    文件的分布如下
MyProject/
    res/
        drawable-xhdpi/
            awesomeimage.png
        drawable-hdpi/
            awesomeimage.png
        drawable-mdpi/
            awesomeimage.png
        drawable-ldpi/
            awesomeimage.png

任何时候,你引用 @drawable/awesomeimage ,系统都会基于屏幕的分辨率选择适当的bitmap。

ldpi分辨率的资源不一定要用上,因为系统会自动的对hdpi的资源按比例缩小一半以适配ldpi的屏幕

支持不同的平台版本

指定最小和目标API Levels


    
    ...

一般在AndroidManifest.xml中使用 这个元素标签来定义应用兼容的最低的APIlevel(minSdkVersion)和最高的API Level(targetSdkVersion)

实时检查系统版本

private void setUpActionBar() {
    // Make sure we're running on Honeycomb or higher to use ActionBar APIs
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
        ActionBar actionBar = getActionBar();
        actionBar.setDisplayHomeAsUpEnabled(true);
    }
}

如代码所展示的那样,你可以通过Build这个类来判断APP现在运行的版本

你可能感兴趣的:(Android如何适配不同设备)