原文地址:
下面我们介绍android自定义控件的实现,简单说就是指自己继承原有控件并增加一些方法和属性
首先我们需要在资源文件里定义所需的属性
在res/values下新建attr.xml
内容如下
然后我们定义一个AlphaImageView类,继承ImageView
package com.happyrxk.my;import java.util.Timer;import java.util.TimerTask;import android.content.Context;import android.content.res.TypedArray;import android.graphics.Canvas;import android.os.Handler;import android.os.Message;import android.util.AttributeSet;import android.widget.ImageView;public class AlphaImageView extends ImageView{ private int alphaDelta = 0; private int curAlpha = 0; private final int SPEED = 300; private final int CHANGE = 0x110; Handler handler = new Handler(){ @Override public void handleMessage(Message msg) { // TODO Auto-generated method stub super.handleMessage(msg); if(msg.what==CHANGE){ curAlpha+=alphaDelta; if(curAlpha>255){ curAlpha = 255; } AlphaImageView.this.setAlpha(curAlpha); } } }; public AlphaImageView(Context context, AttributeSet attrs) { super(context, attrs); TypedArray typedArray = context.obtainStyledAttributes(attrs, R.styleable.AlphaImageView); int duration = typedArray.getInt(R.styleable.AlphaImageView_duration, 0); alphaDelta = 255 * SPEED /duration; // TODO Auto-generated constructor stub } @Override protected void onDraw(Canvas canvas) { // TODO Auto-generated method stub super.onDraw(canvas); this.setAlpha(curAlpha); final Timer timer = new Timer(); timer.schedule(new TimerTask(){ @Override public void run() { // TODO Auto-generated method stub Message msg = new Message(); msg.what = CHANGE; if(curAlpha>=255){ timer.cancel(); }else{ handler.sendMessage(msg); } } }, 0, SPEED); } }
在我们在xml中用自定义控件是的方法如下