栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Android自定义view:自定义属性 TypedArray

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Android自定义view:自定义属性 TypedArray

定义:

    
    
    
    
    
    
    
    
    

    
        
        
        
    

    
        
        
        
    


attrs中的format属性TypedArray对应方法返回备注
referencegetIntint
colorgetColorint
booleangetBooleanboolean
dimensiongetDimensionfloat
floatgetFloatfloat
integergetInteger,getIntInteger,int
stringgetStringString必须是资源文件中的字符串
fractiongetFractionfloat
enumgetInt,getInteger,getFloat,getStringint,Integer,float,String返回的全是value的值
flaggetInt,getFloat,getStringint,float,string返回value值的或运算值
声明
public class MyView extends View {
    private static final String TAG = MyView.class.getSimpleName();

    public MyView(Context context) {
        this(context, null);
    }

    public MyView(Context context, @Nullable AttributeSet attrs) {
        this(context, attrs, -1);
    }

    public MyView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);

        TypedArray typedArray = context.obtainStyledAttributes(attrs, R.styleable.MyView);
        
        int vColor = typedArray.getColor(R.styleable.MyView_vColor, getResources().getColor(R.color.black));
        // ColorDrawable / BitmapDrawable
        Drawable vDrawable = typedArray.getDrawable(R.styleable.MyView_vDrawable);
        float vDimen = typedArray.getDimension(R.styleable.MyView_vDimen, dp2px(20));
        float vFloat = typedArray.getFloat(R.styleable.MyView_vFloat, -1F);
        int vInteger = typedArray.getInteger(R.styleable.MyView_vInteger, -1);
        boolean vBoolean = typedArray.getBoolean(R.styleable.MyView_vBoolean, false);
        String vString = typedArray.getString(R.styleable.MyView_vString);
        int vReference = typedArray.getResourceId(R.styleable.MyView_vReference, R.mipmap.ic_launcher);
        int vType = typedArray.getInteger(R.styleable.MyView_vType, -1);
        int vFlag = typedArray.getInt(R.styleable.MyView_vFlag, 0);
        Log.e(TAG, "MyView:vColor===============> " + vColor);
        Log.e(TAG, "MyView:vDrawable===============> " + vDrawable);
        Log.e(TAG, "MyView:vDimen===============> " + vDimen);
        Log.e(TAG, "MyView:vFloat===============> " + vFloat);
        Log.e(TAG, "MyView:vInteger===============> " + vInteger);
        Log.e(TAG, "MyView:vBoolean===============> " + vBoolean);
        Log.e(TAG, "MyView:vString===============> " + vString);
        Log.e(TAG, "MyView:vReference===============> " + vReference);
        Log.e(TAG, "MyView:vType===============> " + vType);
        Log.e(TAG, "MyView:vFlag===============> " + vFlag);

        typedArray.recycle();
    }

    
    public int dp2px(float dp) {
        return (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dp,
                getResources().getDisplayMetrics());
    }

    
    private int sp2px(float sp) {
        return (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_SP, sp,
                getResources().getDisplayMetrics());
    }
}
使用

drawable 的绘制
void drawDrawable(Canvas canvas, Rect bound,Drawable drawable) {
    drawable.setBounds(bounds);
    drawable.draw(canvas);
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/768977.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号