TypedValue.applyDimension()的作用

本文介绍了如何在Android中使用TypedValue.applyDimension方法来设置TextView的padding属性,具体讲解了dip单位转换为像素的过程。

这个是我整理下来的,留着以后看的


int padding = (int)TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP,
                    4, getActivity().getResources().getDisplayMetrics());
text.setPadding(padding, padding, padding, padding);

我的理解:padding的单位是:dip, padding的大小是:4 , 最后将text的上下左右padding为:4dip


下面是源码内容,可以看到他有几个参数

public static float applyDimension(int unit, float value,
                                       DisplayMetrics metrics)
    {
        switch (unit) {
        case COMPLEX_UNIT_PX:
            return value;
        case COMPLEX_UNIT_DIP:
            return value * metrics.density;
        case COMPLEX_UNIT_SP:
            return value * metrics.scaledDensity;
        case COMPLEX_UNIT_PT:
            return value * metrics.xdpi * (1.0f/72);
        case COMPLEX_UNIT_IN:
            return value * metrics.xdpi;
        case COMPLEX_UNIT_MM:
            return value * metrics.xdpi * (1.0f/25.4f);
        }
        return 0;
    }


public AnnulusCustomizeView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); // 获取自定义属性 TypedArray a = context.getTheme().obtainStyledAttributes(attrs, R.styleable.AnnulusCustomizeView, defStyleAttr, 0); int indexCount = a.getIndexCount(); // 遍历每个自定义属性 并进行赋值 for (int i = 0; i < indexCount; i++) { int aIndex = a.getIndex(i); switch (aIndex) { case R.styleable.AnnulusCustomizeView_annulusWidth: // TypedValue.COMPLEX_UNIT_DIP 指定输入值的单位是 dp // getResources().getDisplayMetrics() 提供屏幕密度等信息,用于正确换算 // applyDimension() 将 dp 转换为 px mAnnulusWidth = a.getDimensionPixelSize(aIndex, (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 10, getResources().getDisplayMetrics())); break; case R.styleable.AnnulusCustomizeView_annulusColor: mAnnulusColor = a.getColor(aIndex, Color.BLACK); break; case R.styleable.AnnulusCustomizeView_loadColor: mLoadColor = a.getColor(aIndex, Color.BLACK); break; case R.styleable.AnnulusCustomizeView_textSize: mTextSize = a.getDimensionPixelSize(aIndex, (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 15, getResources().getDisplayMetrics())); break; case R.styleable.AnnulusCustomizeView_progressType: mProgressType = a.getInt(aIndex, 1); break; case R.styleable.AnnulusCustomizeView_isShowText: mIsShowText = a.getInt(aIndex, 1); break; case R.styleable.AnnulusCustomizeView_progress: mProgress = a.getInt(aIndex, 10); break; } } a.recycle(); } 报错 Constant expression required
最新发布
09-28
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值