基础

翻译文档。

支持不同的版本

既可以在 AndroidManifest.xml 中指定版本号,也可以在代码中运行时检查当前版本。
AndroidManifest.xml 中指定最小版本号和目标版本号,例如:

<manifest xmlns:adnroid:"http://schemas.android.com/apk/res/android">
    <uses-sdk android:minSdkVersion="4" nadoird:targetSdkVersion="21"/>
    ...
</manifest>

代码中检查版本号,需要使用 Build 静态类,做版本比较:

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();
        actioinBar.setDisplayHomeAsUpEnabled(true);
    }
}

String资源

为了优化UI界面,提倡把字符串都定义成字符串资源,放在 res/values/strings.xml 文件中,以键-值对的形式存在,这也方便于应用使用多语言。

一个目录结构示例如下:

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

在XML中引用资源格式为 @type/key,例如引用字符串资源 @string/button_send,对应的资源设置如下:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="button_send">Send</string>
</resources>

对也字符串资源的引用有如下两种方式:

// get a string resource from your app's Resources
String hello = getResources().getString(R.string.hello_world);

// or supply a string resource to a method that requires a string
TextView textView = new TextView(this);
textView.setText(R.string.hello_world);

在XML文件中的引用方式如下:

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/hello_world"
/>

布局

对于所有控件,默认的 weight 值为0,如果你给控件X设定为非零值,那么在其他控件占据位置后,这个控件X会占据所有剩余的空间。另外,为了提高布局效率,设定了 weight 值的控件不要设定 width 或者 height 的值,因为设定了也没有用,反而浪费计算时间。

按钮响应的事件,最自然的是绑定实现了 OnClickListener接口的类对象,但是也可以在 XML 中直接指定响应单击事件的方法,这个方法必须满足以下3个条件:

  • 必须是 public
  • 返回值必须是 void
  • 入口参数必须是唯一的一个 View

支持不同大小、不同分辨率的设备

对应的布局文件应当有如下分类:

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

创建不同分辨率的图片

图片有4种尺寸,各种分辨率之间的比例关系如下:

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

假如对于 xhdpi 的设备创建的图片大小是 200x200,那么对应的 hdpi 设备的图片大小是 150x150,对于 mdpi 设备的图片大小是 100x100,对于 ldpi 设备的图片大小是 75x75。
资源文件目录结构如下:

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

小技巧

在 Eclipse 中快捷键 Ctrl+Shift+O 导入缺失的类。

posted on 2017-08-25 15:30  林特斯9527  阅读(310)  评论(0编辑  收藏  举报