Android Oreo 8.0 新特性實(shí)戰(zhàn) Autosizing TextView --自動縮放TextView
8.0出來很久了,這個新特性已經(jīng)用了很久了牲览,但是一直沒有親自去試試挠羔。這幾天新的需求來了井仰,需要顯示用戶的金幣,默認(rèn)是大字體展示破加,但是又要求用戶的金幣過多(例如: 9999999 金幣)時不能超出布局范圍俱恶,所以需要在用戶金幣過多時為了將金幣顯示出來,需要減小字體大小。這樣的需求真的和這個新特性很吻合合是,于是借此機(jī)會寫了個簡單的demo了罪,現(xiàn)在分享出來,當(dāng)然你也可以查看官方文檔:
https://developer.android.com/guide/topics/ui/look-and-feel/autosizing-textview.html
1. 先看看效果圖
android_8_scale_textview.gif
如果圖片不能看,可以看我的博客園
http://www.cnblogs.com/didikee/p/7873827.html
2. 使用條件
新特性支持 android8.0
當(dāng)然聪全,你也可以使用Support library
泊藕,但是必須是26.0.0及其以上,我這里使用的是目前最新的 26.1.0
implementation 'com.android.support:appcompat-v7:26.1.0'
3. 三個API使用說明
private void initScaleConfig() {
//TODO config scale params for normal textView
/**
* android:autoSizeTextType="uniform"
* the type of auto-size. Must be one of
* {@link TextViewCompat#AUTO_SIZE_TEXT_TYPE_NONE} or
* {@link TextViewCompat#AUTO_SIZE_TEXT_TYPE_UNIFORM}
* none: 關(guān)閉縮放功能
* uniform: 垂直方向與水平方向縮放
*/
TextViewCompat.setAutoSizeTextTypeWithDefaults(tv_scale, TextViewCompat.AUTO_SIZE_TEXT_TYPE_UNIFORM);
/**
* 參數(shù)一: 被設(shè)置的TextView
* 參數(shù)二: 自動縮放的最小字號
* 參數(shù)三: 自動縮放的最大字號
* 參數(shù)四: 參數(shù)二與參數(shù)三所用的單位难礼,這里因?yàn)樽煮w大小娃圆,所以我指定為SP
*/
TextViewCompat.setAutoSizeTextTypeUniformWithConfiguration(tv_scale,
12, 48, 2, TypedValue.COMPLEX_UNIT_SP);
/**
* 參數(shù)一:
* 參數(shù)二: 設(shè)置多個預(yù)制字體大小,這樣在縮放時字體會根據(jù)預(yù)制的字體大小而縮放
* 參數(shù)三: 參數(shù)二里面的Int值對應(yīng)的單位鹤竭,這里因?yàn)樽煮w大小,所以我指定為SP
*/
int[] autoTextSize = getResources().getIntArray(R.array.autosize_text_sizes);
TextViewCompat.setAutoSizeTextTypeUniformWithPresetSizes(tv_scale, autoTextSize, TypedValue.COMPLEX_UNIT_SP);
}
具體參數(shù)說明我寫在了注釋上了景醇,應(yīng)該很詳細(xì)了臀稚。
結(jié)束
完整的代碼在Gist
上,點(diǎn)擊查看:
https://gist.github.com/didikee/c846adf08c2be3c5a69e633536a60e12