前言
近來想鞏固一下基礎(chǔ)知識,對 Android Training 是久聞大名,粗略看了下作為學(xué)習(xí)和總結(jié)的目錄還是不錯(cuò)滴。由于近來天朝高墻高高聳立,梯子已紛紛倒掉,故而把這些知識搬過來并結(jié)合本人不多的經(jīng)驗(yàn)來作一些簡單總結(jié)(想要梯子的下方評論留郵箱)。
一. Getting Started
1.1 Building Your First App
包含四個(gè)教程:創(chuàng)建項(xiàng)目、Run App、創(chuàng)建基礎(chǔ)視圖、創(chuàng)建并調(diào)整新的 Activity。比較簡單,不再贅述。
1.2 Supporting Different Devices
1.2.1 Supporting Different Languages and Cultures
支持不同語言,主要方法為在項(xiàng)目的 res 文件夾下創(chuàng)建不同的 values 目錄存放不同的 strings.xml 文件,App 會(huì)根據(jù)系統(tǒng)當(dāng)前語言讀取相應(yīng)資源下的字符串信息。
文件目錄:
MyProject/
res/
values/
strings.xml
values-es/
strings.xml
values-fr/
strings.xml
栗子:
英語(默認(rèn)語言區(qū)域),/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>
不過我們一般把中文作為默認(rèn)語言區(qū)域
/values/strings.xml:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="title">標(biāo)題</string>
<string name="hello_world">你好!</string>
</resources>
常用語言對應(yīng)文件夾名稱如下,這里就不貼那么多了,常用的記錄一下:
中文(中國):values-zh-rCN
中文(臺灣):values-zh-rTW
中文(香港):values-zh-rHK
英語(美國):values-en-rUS
英語(英國):values-en-rGB
1.2.2 Supporting Different Screens
Android 中需要把不同分辨率的圖片放到不同的資源文件夾已適配不同的屏幕尺寸,有兩個(gè)基礎(chǔ)屬性對大小和密度進(jìn)行分類:
- 四個(gè)廣義尺寸:small, normal, large, xlarge
- 四個(gè)廣義分辨率:low (ldpi), medium (mdpi), high (hdpi), extra high (xhdpi)
需要注意的是,屏幕方向的變化被認(rèn)為是屏幕尺寸的變化,需要修改布局以優(yōu)化用戶體驗(yàn)。
創(chuàng)建不同的布局
Android 當(dāng)前教程只是簡單提供了使用限定符的方式根據(jù)屏幕來匹配相應(yīng)布局文件。
尺寸限定符
MyProject /
res /
layout /
main.xml
layout-large /
main.xml
這里就使用 large 限定符來適配尺寸>7寸平板的布局,但是這種方式只適合Android 3.2版本之前。
屏幕方向限定符
MyProject /
res /
layout /
main.xml
layout-land /
main.xml
創(chuàng)建不同的圖片資源
生成不同分辨率的圖片放到指定文件目錄:
- xhdpi:2.0
- hdpi:1.5
- mdpi:1.0(基線)
- ldpi:0.75
然后,將文件放在適當(dāng)?shù)目衫L制資源目錄中:
MyProject /
res /
drawable-xhdpi /
awesomeimage.png
drawable-hdpi /
awesomeimage.png
drawable-mdpi /
awesomeimage.png
drawable-ldpi /
awesomeimage.png
官方這里的教程只是基礎(chǔ),實(shí)際工作中需要更多知識。了解更多屏幕適配的內(nèi)容,查閱下方文章。
1.2.3 Supporting Different Platform Versions
這一塊主要講的是版本適配的相關(guān)知識,Google 根據(jù)訪問 Google Play 商店的手機(jī)版本作了記錄。
指定App適配版本
AndroidManifest.xml 里面包含一些指定版本信息:
- android:minSdkVersion:表示支持的最小版本
- android:targetSdkVersion:目標(biāo)版本,表示支持的最大版本
<manifest xmlns:android="http://schemas.android.com/apk/res/android" ... >
<uses-sdk android:minSdkVersion="4" android:targetSdkVersion="15" />
...
</manifest>
但是在 Android Studio 下我們通常把版本信息寫到 app 的 build.gradle 文件內(nèi):
android {
compileSdkVersion 26 // 項(xiàng)目的編譯 Sdk 版本
buildToolsVersion "26.0.0" // android構(gòu)建工具的版本
defaultConfig {
applicationId "com.sky.viewtest" // 包名
minSdkVersion 15 // 最小支持版本
targetSdkVersion 26 // 最大版本
versionCode 1 // 版本號
versionName "1.0" // 版本名
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" // 單元測試相關(guān)
}
...
}
運(yùn)行時(shí)獲取當(dāng)前運(yùn)行版本
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 運(yùn)行時(shí)動(dòng)態(tài)獲取當(dāng)前版本號,當(dāng)版本大于 Build.VERSION_CODES.HONEYCOMB 時(shí)再對 ActionBar 進(jìn)行相關(guān)設(shè)置,因?yàn)榈陀谶@個(gè)版本是不支持 ActionBar 的。
設(shè)置不同的樣式和主題
Activity 以話框式呈現(xiàn):
<activity android:theme="@android:style/Theme.Dialog">
Activity 背景透明:
<activity android:theme="@android:style/Theme.Translucent">
Activity 應(yīng)用自定義主題 style:
<activity android:theme="@style/CustomTheme">
全局應(yīng)用自定義主題,在 <application> 標(biāo)簽下添加 :
<application android:theme="@style/CustomTheme">