Android 自定义view

概述:1.遵循Android标准。2.在XML里面使用定制的样式属性。3.发送可得到的事件。4.与多种Android平台相匹配

使用Android框架创造自己想要的view。

1.创建myView类继承view或者iamgeview,button

2.使用自定义属性初始化view,

2.1定义myView的属性集,在res/values/attrs.xml文件中添加<declare-styleable>,例如


<resources>
   <declare-styleable name="PieChart"> //这个name一般来说和自己定义的view名称一样
       <attr name="showText" format="boolean" />
       <attr name="labelPosition" format="enum">
           <enum name="left" value="0"/>
           <enum name="right" value="1"/>
       </attr>
   </declare-styleable>
</resources>
2.2然后在为了能使用自定义的属性集,在布局文件里面添加上命名空间,比如
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
   xmlns:custom="http://schemas.android.com/apk/res/com.example.customviews">//http://schemas.android.com/apk/res/[your package name]
 <com.example.customviews.charting.PieChart  //在布局文件中使用自定义view时要写上全类名
     custom:showText="true"
     custom:labelPosition="left" />
</LinearLayout>
2.3在自定义的myView类中使用
obtainStyledAttributes()方法,得到布局文件中自定义的属性的值,比如
public PieChart(Context context, AttributeSet attrs) {
   super(context, attrs);
   TypedArray a = context.getTheme().obtainStyledAttributes(
        attrs,
        R.styleable.PieChart,
        0, 0);

   try {
       mShowText = a.getBoolean(R.styleable.PieChart_showText, false);
       mTextPos = a.getInteger(R.styleable.PieChart_labelPosition, 0);
   } finally {
       a.recycle();//最后一定要recycle一下
   }
}
3.在初始化view之后,也可以使用set,get,方法动态的给自定义view设置属性,比如
public boolean isShowText() {
   return mShowText;
}

public void setShowText(boolean showText) {
   mShowText = showText;   //为了确保改变的属性生效,要及时调用下面两个方法
 invalidate(); //通知系统,该view要被重新绘制,该方法会调用ondraw()方法
requestLayout();//同样的,你需要请求一个新的布局
}
4.最后,就是在相应的方法里面加上需要的功能,这个自己看着办了....

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值