美文网首页
Android Training(一):App 多语言与 UI

Android Training(一):App 多语言与 UI

作者: Marker_Sky | 来源:发表于2018-01-10 17:58 被阅读0次

    前言

    近来想巩固一下基础知识,对 Android Training 是久闻大名,粗略看了下作为学习和总结的目录还是不错滴。由于近来天朝高墙高高耸立,梯子已纷纷倒掉,故而把这些知识搬过来并结合本人不多的经验来作一些简单总结(想要梯子的下方评论留邮箱)。

    Android Training 官方地址

    一. Getting Started

    1.1 Building Your First App

    包含四个教程:创建项目、Run App、创建基础视图、创建并调整新的 Activity。比较简单,不再赘述。

    1.2 Supporting Different Devices

    1.2.1 Supporting Different Languages and Cultures

    支持不同语言,主要方法为在项目的 res 文件夹下创建不同的 values 目录存放不同的 strings.xml 文件,App 会根据系统当前语言读取相应资源下的字符串信息。

    文件目录:
    MyProject/
        res/
           values/
               strings.xml
           values-es/
               strings.xml
           values-fr/
               strings.xml
    

    栗子:
    英语(默认语言区域),/values/strings.xml:

    <?xml version="1.0" encoding="utf-8"?>
    <resources>
        <string name="title">My Application</string>
        <string name="hello_world">Hello World!</string>
    </resources>
    

    西班牙语,/values-es/strings.xml:

    <?xml version="1.0" encoding="utf-8"?>
    <resources>
        <string name="title">Mi Aplicación</string>
        <string name="hello_world">Hola Mundo!</string>
    </resources>
    

    法语,/values-fr/strings.xml:

    <?xml version="1.0" encoding="utf-8"?>
    <resources>
        <string name="title">Mon Application</string>
        <string name="hello_world">Bonjour le monde !</string>
    </resources>
    

    不过我们一般把中文作为默认语言区域
    /values/strings.xml:

    <?xml version="1.0" encoding="utf-8"?>
    <resources>
        <string name="title">标题</string>
        <string name="hello_world">你好!</string>
    </resources>
    

    常用语言对应文件夹名称如下,这里就不贴那么多了,常用的记录一下:
    中文(中国):values-zh-rCN
    中文(台湾):values-zh-rTW
    中文(香港):values-zh-rHK
    英语(美国):values-en-rUS
    英语(英国):values-en-rGB

    1.2.2 Supporting Different Screens

    Android 中需要把不同分辨率的图片放到不同的资源文件夹已适配不同的屏幕尺寸,有两个基础属性对大小和密度进行分类:

    • 四个广义尺寸:small, normal, large, xlarge
    • 四个广义分辨率:low (ldpi), medium (mdpi), high (hdpi), extra high (xhdpi)

    需要注意的是,屏幕方向的变化被认为是屏幕尺寸的变化,需要修改布局以优化用户体验。

    创建不同的布局

    Android 当前教程只是简单提供了使用限定符的方式根据屏幕来匹配相应布局文件。

    尺寸限定符

    MyProject / 
        res / 
            layout / 
                main.xml 
            layout-large / 
                main.xml
    

    这里就使用 large 限定符来适配尺寸>7寸平板的布局,但是这种方式只适合Android 3.2版本之前。

    屏幕方向限定符

    MyProject / 
        res / 
            layout / 
                main.xml 
            layout-land / 
                main.xml
    

    创建不同的图片资源

    生成不同分辨率的图片放到指定文件目录:

    • xhdpi:2.0
    • hdpi:1.5
    • mdpi:1.0(基线)
    • ldpi:0.75

    然后,将文件放在适当的可绘制资源目录中:

    MyProject / 
        res / 
            drawable-xhdpi / 
                awesomeimage.png 
            drawable-hdpi / 
                awesomeimage.png 
            drawable-mdpi / 
                awesomeimage.png 
            drawable-ldpi / 
                awesomeimage.png
    

    官方这里的教程只是基础,实际工作中需要更多知识。了解更多屏幕适配的内容,查阅下方文章。

    最易懂的Android屏幕适配解决方案--总结版

    1.2.3 Supporting Different Platform Versions

    这一块主要讲的是版本适配的相关知识,Google 根据访问 Google Play 商店的手机版本作了记录。

    Platform Versions

    指定App适配版本

    AndroidManifest.xml 里面包含一些指定版本信息:

    • android:minSdkVersion:表示支持的最小版本
    • android:targetSdkVersion:目标版本,表示支持的最大版本
    <manifest xmlns:android="http://schemas.android.com/apk/res/android" ... >
        <uses-sdk android:minSdkVersion="4" android:targetSdkVersion="15" />
        ...
    </manifest>
    

    但是在 Android Studio 下我们通常把版本信息写到 app 的 build.gradle 文件内:

    android {
        compileSdkVersion 26 // 项目的编译 Sdk 版本
        buildToolsVersion "26.0.0"  //  android构建工具的版本
        defaultConfig {
            applicationId "com.sky.viewtest"  // 包名
            minSdkVersion 15  // 最小支持版本
            targetSdkVersion 26  // 最大版本
            versionCode 1  // 版本号
            versionName "1.0"  // 版本名
            testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"  // 单元测试相关
        }
        ...
    }
    

    运行时获取当前运行版本

    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);
        }
    }
    

    上面的例子是指在 App 运行时动态获取当前版本号,当版本大于 Build.VERSION_CODES.HONEYCOMB 时再对 ActionBar 进行相关设置,因为低于这个版本是不支持 ActionBar 的。

    设置不同的样式和主题

    Activity 以话框式呈现:

    <activity android:theme="@android:style/Theme.Dialog">
    

    Activity 背景透明:

    <activity android:theme="@android:style/Theme.Translucent">
    

    Activity 应用自定义主题 style:

    <activity android:theme="@style/CustomTheme">
    

    全局应用自定义主题,在 <application> 标签下添加 :

    <application android:theme="@style/CustomTheme">
    

    相关文章

      网友评论

          本文标题:Android Training(一):App 多语言与 UI

          本文链接:https://www.haomeiwen.com/subject/comonxtx.html