Android Oreo 8.0 新特性實(shí)戰(zhàn) Autosizing TextView --自動(dòng)縮放TextView

Android Oreo 8.0 新特性實(shí)戰(zhàn) Autosizing TextView --自動(dòng)縮放TextView

8.0出來(lái)很久了,這個(gè)新特性已經(jīng)用了很久了,但是一直沒(méi)有親自去試試。這幾天新的需求來(lái)了,需要顯示用戶的金幣,默認(rèn)是大字體展示,但是又要求用戶的金幣過(guò)多(例如: 9999999 金幣)時(shí)不能超出布局范圍,所以需要在用戶金幣過(guò)多時(shí)為了將金幣顯示出來(lái),需要減小字體大小。這樣的需求真的和這個(gè)新特性很吻合,于是借此機(jī)會(huì)寫(xiě)了個(gè)簡(jiǎn)單的demo,現(xiàn)在分享出來(lái),當(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. 三個(gè)API使用說(shuō)明

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ù)二: 自動(dòng)縮放的最小字號(hào)
         * 參數(shù)三: 自動(dòng)縮放的最大字號(hào)
         * 參數(shù)四: 參數(shù)二與參數(shù)三所用的單位,這里因?yàn)樽煮w大小,所以我指定為SP
         */
        TextViewCompat.setAutoSizeTextTypeUniformWithConfiguration(tv_scale,
                12, 48, 2, TypedValue.COMPLEX_UNIT_SP);

        /**
         * 參數(shù)一:
         * 參數(shù)二: 設(shè)置多個(gè)預(yù)制字體大小,這樣在縮放時(shí)字體會(huì)根據(jù)預(yù)制的字體大小而縮放
         * 參數(shù)三: 參數(shù)二里面的Int值對(duì)應(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ù)說(shuō)明我寫(xiě)在了注釋上了,應(yīng)該很詳細(xì)了。

結(jié)束

完整的代碼在Gist上,點(diǎn)擊查看:
https://gist.github.com/didikee/c846adf08c2be3c5a69e633536a60e12

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容