国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統(tǒng) > Android > 正文

Android文檔Training之設(shè)備適配

2019-11-06 09:43:20
字體:
供稿:網(wǎng)友

語言適配

在android開發(fā)過程我們習(xí)慣或者說應(yīng)該習(xí)慣把一些資源文件單獨拿出來放到資源文件夾中那個,比如說string,在不同地區(qū)顯示不同的語言,比如說我們把手機上的語言切換成西班牙語,這時我們的app就應(yīng)該也切換到默認的西班牙語文件資源,這樣可以使得我們的app更加國際化。

我們知道,在android studio中新建一個工程的時候res文件夾下會有value文件夾,這個文件夾一般存放string style integer color dimen等資源文件,默認的value是以英語為首選語言的,例如

English (默認地點), /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>

Spanish(西班牙), /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>

French(法國), /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>

注意到它們的區(qū)別在于文件夾名稱不同和對應(yīng)的語言分別為英語、西班牙語和法語.

資源文件的使用

java代碼中的使用示例

// Get a string resource from your app's ResourcesString hello = getResources().getString(R.string.hello_world);// Or supply a string resource to a method that requires a stringTextView 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" />

屏幕適配

android各種各樣的設(shè)備都有兩個屬性 size和density,我們都希望自己做的app能運行在各種各樣的手機上適配各種各樣的size和density.

android手機有四種size: small, normal, large, xlarge

android手機有四種density: low (ldpi), medium (mdpi), high (hdpi), extra high (xhdpi)

考慮到不同android設(shè)備的不同屬性,我們也是把不同的資源文件放到不同的資源文件夾中,這點和語言適配是基本類似的

創(chuàng)建不同的布局

創(chuàng)建不同的歌布局文件夾res/layout{-size}/. 其中size可以是small, normal, large, xlarge,考慮到屏幕方向(oritation)也是一種新的屏幕尺寸(寬高相反 portrait/landscape),于是我們又有了文件夾res/layout{-size}-land/.實際文件夾如下

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

創(chuàng)建不同的bitmap

不同的density對應(yīng)的名稱

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

這意味著如果你為xhdpi設(shè)備做了一張200*200的圖片,你也得為hdpi做一張150*150的圖片,為mdpi做一張100*100的圖片,為ldpi做一張75*75的圖片,這樣drawable資源文件夾示意圖如下:

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

Android版本適配

新版本的android系統(tǒng)一般都有新的比較好的特性,這時你還需要兼容低版本的系統(tǒng)直到它們升級到最新系統(tǒng).為了獲得最好的用戶體驗,你必須使用support library.它使得舊版本的系統(tǒng)可以使用最版本的特性.

在做app時,需要具體設(shè)置最小支持sdk版本及目標(biāo)sdk版本(app->build.gradle)

android { compileSdkVersion 25 buildToolsVersion "25.0.1" defaultConfig { applicationId "huang.xiang.myapplication" minSdkVersion 15 targetSdkVersion 25 versionCode 1 versionName "1.0" } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } }}

我們可以在運行時檢查當(dāng)前系統(tǒng)的sdk版本,示例如下

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

注意:在android開發(fā)中對xml文件的解析是安全的,當(dāng)某一屬性只在高版本的系統(tǒng)支持時,在低版本系統(tǒng)中解析遇到此屬性將會被直接忽視,不會造成app的crash,所以我們可以隨意的在xml中使用新版本的屬性。

使用系統(tǒng)的style樣式和Theme主題

使你的activity看起來像一個對話框:

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

使你的activity有一個透明的背景:

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

使用 /res/values/styles.xml中的自定義主題:

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

把主題加到app中所有activity上,增加android:theme屬性給Manifest中的application節(jié)點

<application android:theme="@style/CustomTheme">
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 宣武区| 闻喜县| 婺源县| 枣庄市| 黑龙江省| 灵川县| 蒙城县| 双柏县| 东阿县| 光泽县| 周口市| 潼南县| 海口市| 夏津县| 财经| 兴海县| 龙川县| 襄樊市| 满洲里市| 霍林郭勒市| 忻城县| 桐庐县| 策勒县| 滨海县| 河源市| 荆门市| 阆中市| 旌德县| 德安县| 安远县| 阿鲁科尔沁旗| 屯昌县| 贵溪市| 鄂托克前旗| 唐山市| 白玉县| 凤翔县| 澄城县| 丁青县| 黔西| 达日县|