自定义组件的基本方法:
1:让你的类(Class)继承一个现有的View 类或View的子类。
2:重载父类的一些方法:需要重载的父类方法一般以‘on’开头,如onDraw(),onMeasure()和 onKeyDown()等等。
3:这个在Activity 或则ListActivity 派生中同样适用,你需要重载一些生命周期函数和一些其他功能性的HOOK函数。
4:使用你的继承类:一旦你的继承类创建完成,你可以在基类能够使用的地方使用你的继承类,但完成功能就是你自己编写的了
首先,写一个最简单的派生自View的类:
package com.example.selectortest;
import android.content.Context;
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 CustomView extends View {
private Paint mPaint = null;
private String mString = "Programmer";
public CustomView(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
public void draw(Canvas canvas) {
// TODO Auto-generated method stub
super.draw(canvas);
mPaint = new Paint();
mPaint.setColor(Color.BLUE);
/*
* Style.FILL 填充
* Style.STROKE 描边
* Style.FILL_AND_STROKE填充且描边
*/
mPaint.setStyle(Style.FILL_AND_STROKE);
canvas.drawRect(new Rect(10 ,10 ,100 ,100), mPaint);
mPaint.setColor(Color.GREEN);
mPaint.setTextSize(35.0f);
canvas.drawText(mString, 10, 60, mPaint);
}
}
然后就可以使用这个控件了,使用方法和其他内置控件一样。
<com.example.selectortest.CustomView
android:layout_width="wrap_content"
android:layout_height="wrap_content">
</com.example.selectortest.CustomView>
对于onMeasure方法,还是不清楚,慢慢学习吧!