zoukankan      html  css  js  c++  java
  • android自定义view属性

    第一种 

    /MainActivity/res/values/attrs.xml

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

    /MainActivity/src/com/ch/myviews/MyCircle.java

    复制代码
    package com.ch.myviews;
    
    import com.ch.myviewattr.R;
    
    import android.content.Context;
    import android.content.res.TypedArray;
    import android.graphics.Canvas;
    import android.graphics.Color;
    import android.graphics.Paint;
    import android.util.AttributeSet;
    import android.view.View;
    
    public class MyCircle extends View {
        private Paint paint;
        private int radius;
       
        public MyCircle(Context context, AttributeSet attrs) {
            super(context, attrs);
            // TODO Auto-generated constructor stub
            //获得自定义的属性,即获得自定义的半径
            TypedArray ta = context.obtainStyledAttributes(attrs, R.styleable.MyCircle);
            radius = ta.getInt(R.styleable.MyCircle_radius, 0);
            
          
        }
        //绘制的方法
        @Override
        protected void onDraw(Canvas canvas) {
            // TODO Auto-generated method stub
            paint = new Paint();
            paint.setColor(Color.RED);
            
    //        canvas.drawColor(Color.BLACK);
            canvas.drawCircle(getMeasuredWidth()/2, getMeasuredHeight()/2, radius, paint);
            super.onDraw(canvas);
        }
        
        
    
    }
    复制代码

    /MainActivity/res/layout/activity_main.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.ch.myviewattr"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context=".MainActivity" >
    
        <com.ch.myviews.MyCircle
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerHorizontal="true"
            android:layout_centerVertical="true"
            myattr:radius="200"
            />
    
    </RelativeLayout>
    复制代码

    第二种

    /MainActivity/res/values/attrs.xml

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

    /MainActivity/src/com/ch/myviews/MyCircle.java

    复制代码
    package com.ch.myviews;
    
    import com.ch.myviewattr.R;
    
    import android.content.Context;
    import android.content.res.TypedArray;
    import android.graphics.Canvas;
    import android.graphics.Color;
    import android.graphics.Paint;
    import android.util.AttributeSet;
    import android.view.View;
    
    public class MyCircle extends View {
        private Paint paint;
        private int radius;
        private final static String NAMESPACE = "aaa1407a";
        public MyCircle(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
            paint = new Paint();
            paint.setColor(Color.RED);
            
    //        canvas.drawColor(Color.BLACK);
            canvas.drawCircle(getMeasuredWidth()/2, getMeasuredHeight()/2, radius, paint);
            super.onDraw(canvas);
        }
        
        
    
    }
    复制代码

    /MainActivity/res/layout/activity_main.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.ch.myviews.MyCircle
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerHorizontal="true"
            android:layout_centerVertical="true"
            myattr:radius="200"
            />
    
    </RelativeLayout>
    复制代码
  • 相关阅读:
    1234D.Distinct Characters Queries(树状数组)
    1217C.The Number of Good Substrings(思维)
    1217B.Zmei Gorynich(思维)
    1213D2.Equalizing by Division(hard version)(图论)
    CentOS7.5搭建Hadoop2.7.6完全分布式集群
    CentOS7.5搭建spark2.3.1集群
    CentOS7.5搭建Hive2.3.3
    【Java入门】JDK安装和环境变量配置(Win7版)
    python第三方库大全
    Python常用模块大全
  • 原文地址:https://www.cnblogs.com/wbp0818/p/5375500.html
Copyright © 2011-2022 走看看