Android自定义属性的学习

今天看Android自带demo贪吃蛇代码的时候,在res/values文件夹中看到attrs.xml文件。以前看android api的时候总会看到方法的参数里有 AttributeSet attrs这个属性参数却不知道是干嘛的。趁一大早的时候,从网上找来一些相关资料,现学习整理一下。如下:

1.先在res/values文件夹中新建一个attrs.xml文件
<?xml version="1.0" encoding="utf-8"?> 
<resources> 
      <declare-styleable name="MyView"> 
              <attr name="textColor" format="color" /> 
              <attr name="textSize" format="dimension" /> 
      </declare-styleable> 
</resources>

2.新建一个MyView.java。用来在屏幕上画一个矩形和一个字符串。
package com.MyAndroid;

import android.content.Context;
import android.content.res.TypedArray;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Paint.Style;
import android.graphics.Rect;
import android.util.AttributeSet;
import android.view.View;

public class MyView extends View{

      public Context mContext;
      public Paint mPaint;
     
      public MyView(Context context) {
            super(context);
            mContext = context;
      }

      public MyView(Context context, AttributeSet attrs) {
            super(context, attrs);
            mPaint = new Paint();
              //将MyView中attrs属性值放入a中
              TypedArray a = context.obtainStyledAttributes(attrs, 
                                    R.styleable.MyView); 
                     
                int textColor = a.getColor(R.styleable.MyView_textColor,Color.RED); 
                float textSize = a.getDimension(R.styleable.MyView_textSize, 36); 
                //设置默认的字体大小    
                mPaint.setTextSize(textSize);
          //设置默认的画笔颜色 
                mPaint.setColor(textColor); 
                //最后一定要使用这个方法。将设置好的a返回给StyledAttributes,后面可以重新使用。
                  a.recycle();       
      }

      @Override
      protected void onDraw(Canvas canvas) {
            super.onDraw(canvas);
            mPaint.setStyle(Style.FILL); 
            canvas.drawRect(new Rect(10,10,100,100), mPaint);
           
            mPaint.setColor(Color.GREEN);
            canvas.drawText("丹", 110,110,mPaint);
      }

三、将我们自定义的MyView 加入布局main.xml 文件中,平且使用自定义属性,自定义属性必须加上:

xmlns:test ="http://schemas.android.com/apk/res/com.MyAndroid " 蓝色 是自定义属性的前缀, 红色 是我们包名.
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:test="http://schemas.android.com/apk/res/com.MyAndroid" 
      android:orientation="vertical"
      android:layout_width="fill_parent"
      android:layout_height="fill_parent"
      >
<com.MyAndroid.MyView
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      test:textSize="20px" 
      test:textColor="#fff"     
/>
</LinearLayout>

4.运行效果
Android自定义属性的学习


还有就是当声明declare-styleable的时候,format可以有一下格式:
  • reference
  • string
  • color
  • dimension
  • boolean
  • integer
  • float
  • fraction
  • enum
  • flag
转自http://ssd910.blog.163.com/blog/static/23876797201072504136476/
      http://blog.youkuaiyun.com/G_rrrr/archive/2009/11/24/4861290.aspx
第二篇里还有android自带Button的实现代码,学习起来挺不错的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值