• android自定义view属性


    方法一:

    MyView.class

    package com.bwie.view;
    
    import android.content.Context;
    import android.graphics.Canvas;
    import android.graphics.Color;
    import android.graphics.Paint;
    import android.util.AttributeSet;
    import android.view.View;
    
    public class MyView extends View {
    	
    	private int radius;
    	private final static String NAMESPACE = "aaa1407a";
    
    	public MyView(Context context, AttributeSet attrs) {
    		super(context, attrs);
    		// TODO Auto-generated constructor stub
    		radius = attrs.getAttributeIntValue(NAMESPACE, "radius", 0);
    	}
    	@Override
    	protected void onDraw(Canvas canvas) {
    		// TODO Auto-generated method stub
    		super.onDraw(canvas);
    		Paint paint=new Paint();
    		paint.setColor(Color.CYAN);
    		
    		canvas.drawCircle(getWidth()/2, getHeight()/2, radius, paint);
    	}
    
    }
    

     xml

    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        xmlns:myattr="aaa1407a"
         android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context=".MainActivity" >
    
        <com.bwie.view.MyView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerHorizontal="true"
            android:layout_centerVertical="true"
            myattr:radius="200" />
    
    </RelativeLayout>

    attrs

    <?xml version="1.0" encoding="utf-8"?>
    <resources>
        <declare-styleable name="MyView">
            <attr name="radius" format="integer"/>
            <attr name="mycolor" format="reference|color"/>
        </declare-styleable>
        
    </resources>

    方法二:

    MyView.class

    package com.bwie.view;
    
    import android.content.Context;
    import android.graphics.Canvas;
    import android.graphics.Color;
    import android.graphics.Paint;
    import android.util.AttributeSet;
    import android.view.View;
    
    public class MyView extends View {
        
        private int radius;
    public MyView(Context context, AttributeSet attrs) {
            super(context, attrs);
            // TODO Auto-generated constructor stub
      //获得自定义的属性,即获得自定义的半径
        TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.MyView);
        radius=a.getInt(R.styleable.MyView_radius, 0);
            
        }
        @Override
        protected void onDraw(Canvas canvas) {
            // TODO Auto-generated method stub
            super.onDraw(canvas);
            Paint paint=new Paint();
            paint.setColor(Color.CYAN);
            
            canvas.drawCircle(getWidth()/2, getHeight()/2, radius, paint);
        }
    
    }

    xml

    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        xmlns:myattr="http://schemas.android.com/apk/res/com.bwie.test"//主包名
       	android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context=".MainActivity" >
    
        <com.bwie.view.MyView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerHorizontal="true"
            android:layout_centerVertical="true"
            myattr:radius="200" />
    
    </RelativeLayout>
    

     attrs

    <?xml version="1.0" encoding="utf-8"?>
    <resources>
        <declare-styleable name="MyView">
            <attr name="radius" format="integer"/>
            <attr name="mycolor" format="reference|color"/>
        </declare-styleable>
        
    </resources>
  • 相关阅读:
    Vue2+VueRouter2+webpack 构建项目实战(一):准备工作
    vue+webpack 安装常见插件
    JS与CSS阻止元素被选中及清除选中的方法总结
    IE浏览器的ActiveXObject对象以及FileSystemobject的应用扩展(完成)
    用webpack2.0构建vue2.0超详细精简版
    从淘宝和网易的font-size思考移动端怎样使用rem?
    用CSS开启硬件加速来提高网站性能
    JS实现数组去重方法整理
    [总结]高效的jQuery代码编写技巧
    JS apply的巧妙用法以及扩展到Object.defineProperty的使用
  • 原文地址:https://www.cnblogs.com/ldou/p/5377838.html
Copyright © 2020-2023  润新知