自定义组件是通过继承View类,重写View类的方法而得,得到个性化的颜色、呈现、行为的组件。
一个圆:
public class SelfView extends View { float currentX=40; float currentY=50;
//坐标,为float类型。 Paint paint=new Paint();
//画笔, public SelfView(Context context) { super(context); } public SelfView(Context context,AttributeSet set){ super(context,set); }
//以上是SelfView类的两个构造函数
//重写了View类的onDraw()方法,其参数是Canvas类型的 @Override public void onDraw(Canvas canvas){ super.onDraw(canvas);
//指定画笔颜色 paint.setColor(Color.BLUE);
//绘画图形 canvas.drawCircle(currentX,currentY,25,paint); }
@Override public boolean onTouchEvent(MotionEvent motionEvent){
//获取触摸下的新坐标位置 currentX=motionEvent.getX(); currentY=motionEvent.getY();
//通知当前组件重绘自己,为什么不能通过this.onDraw(),或onDraw()呢? invalidate(); return true; } }
像添加系统组件那样添加自定义的SelfView组件:
SelfView selfView=new SelfView(this); root.addView(selfView);
也可以在XML中:
<com.×××.×××.×××.SelfView android:layout_width="wrap_content" android:layout_height="wrap_content" />
原文:http://www.cnblogs.com/zhangyanxiang/p/4827674.html