基础
翻译文档。
支持不同的版本
既可以在 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
导入缺失的类。