zoukankan      html  css  js  c++  java
  • 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>
  • 相关阅读:
    2021年欺骗式防御技术将迎来爆发
    可以简化决策过程的10个大数据源
    “AI+”改变世界!不同领域的5大人工智能趋势
    预测2021: 区块链领域新景观
    后量子时代的密码学
    考试
    进度总结8
    进度总结7
    进度总结6
    进度总结5
  • 原文地址:https://www.cnblogs.com/ldou/p/5377838.html
Copyright © 2011-2022 走看看