Android Oreo 8.0 新特性實戰 Autosizing TextView --自動縮放TextView

Android Oreo 8.0 新特性實戰 Autosizing TextView --自動縮放TextView

8.0出來好久了,這個新特性已經用了好久了,可是一直沒有親自去試試。這幾天新的需求來了,須要顯示用戶的金幣,默認是大字體展現,可是又要求用戶的金幣過多(例如: 9999999 金幣)時不能超出佈局範圍,因此須要在用戶金幣過多時爲了將金幣顯示出來,須要減少字體大小。這樣的需求真的和這個新特性很吻合,因而藉此機會寫了個簡單的demo,如今分享出來,固然你也能夠查看官方文檔:
https://developer.android.com/guide/topics/ui/look-and-feel/autosizing-textview.htmlhtml

1. 先看看效果圖

效果圖

2. 使用條件

新特性支持 android8.0
固然,你也能夠使用Support library,可是必須是26.0.0及其以上,我這裏使用的是目前最新的 26.1.0android

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: 關閉縮放功能
         *        uniform: 垂直方向與水平方向縮放
         */
        TextViewCompat.setAutoSizeTextTypeWithDefaults(tv_scale, TextViewCompat.AUTO_SIZE_TEXT_TYPE_UNIFORM);

        /**
         * 參數一: 被設置的TextView
         * 參數二: 自動縮放的最小字號
         * 參數三: 自動縮放的最大字號
         * 參數四: 參數二與參數三所用的單位,這裏由於字體大小,因此我指定爲SP
         */
        TextViewCompat.setAutoSizeTextTypeUniformWithConfiguration(tv_scale,
                12, 48, 2, TypedValue.COMPLEX_UNIT_SP);

        /**
         * 參數一:
         * 參數二: 設置多個預製字體大小,這樣在縮放時字體會根據預製的字體大小而縮放
         * 參數三: 參數二里面的Int值對應的單位,這裏由於字體大小,因此我指定爲SP
         */
        int[] autoTextSize = getResources().getIntArray(R.array.autosize_text_sizes);
        TextViewCompat.setAutoSizeTextTypeUniformWithPresetSizes(tv_scale, autoTextSize, TypedValue.COMPLEX_UNIT_SP);
    }

具體參數說明我寫在了註釋上了,應該很詳細了。git

結束

完整的代碼在Gist上,點擊查看:
https://gist.github.com/didikee/c846adf08c2be3c5a69e633536a60e12github

相關文章
相關標籤/搜索