Android技术知识Android开发Android开发经验谈

源码阅读之TextView(2)--AutoSizeTextTy

2020-12-23  本文已影响0人  小鹿啊小鹿

导读:源码阅读系列链接:源码阅读之TextView(1)

本文TextView基于android-28版本,代码行数12551.
前期回顾:上篇文章阅读了关于XMLTypefaceAttr的相关逻辑
本篇:主要关于自定义注解AutoSizeTextType

► 结构

image.png

► AutoSizeTextType

  /** @hide */
    @IntDef(prefix = { "AUTO_SIZE_TEXT_TYPE_" }, value = {
            AUTO_SIZE_TEXT_TYPE_NONE,
            AUTO_SIZE_TEXT_TYPE_UNIFORM
    })
 @Retention(RetentionPolicy.SOURCE)
    public @interface AutoSizeTextType {}
    // Default minimum size for auto-sizing text in scaled pixels.
    private static final int DEFAULT_AUTO_SIZE_MIN_TEXT_SIZE_IN_SP = 12;
    // Default maximum size for auto-sizing text in scaled pixels.
    private static final int DEFAULT_AUTO_SIZE_MAX_TEXT_SIZE_IN_SP = 112;
    // Default value for the step size in pixels.
    private static final int DEFAULT_AUTO_SIZE_GRANULARITY_IN_PX = 1;
    // Use this to specify that any of the auto-size configuration int values have not been set.
    private static final float UNSET_AUTO_SIZE_UNIFORM_CONFIGURATION_VALUE = -1f;
    // Auto-size text type.
    private int mAutoSizeTextType = AUTO_SIZE_TEXT_TYPE_NONE;

► AutoSizeTextType的使用

①加在变量前,限制变量范围

 public void setAutoSizeTextTypeWithDefaults(@AutoSizeTextType int autoSizeTextType) {
        if (supportsAutoSizeText()) {
            switch (autoSizeTextType) {
                case AUTO_SIZE_TEXT_TYPE_NONE:
                    clearAutoSizeConfiguration();
                    break;
                case AUTO_SIZE_TEXT_TYPE_UNIFORM:
..

②加在方法前,限制方法返回值范围

 @AutoSizeTextType
    public int getAutoSizeTextType() {
        return mAutoSizeTextType;
    }

关于AutoSizeTextType的使用逻辑大部分都在TextViewCompat中,此文暂不详解。

上一篇 下一篇

猜你喜欢

热点阅读