自己学习自定义view的一些总结

1.写一个类继承自View,添加构造方法,重写onDraw方法,所有的绘制过程都是在这个方法中执行,canvas就是画布。

public class MyView extends View{

public MySurfaceView(Context context) {

super(context);

}

@Override

protected void onDraw(Canvas canvas) {

/**

 *所有绘画代码都写在这里,canvas相当于画布

 */

super.onDraw(canvas);

}

}

2.有画布了还要有画笔才能开始画画,所以先制作画笔:

Paint paint = new Paint();

//设置画笔属性,更多设置看API文档

paint.setColor(Color.BLUE);

paint.setTextSize(18);


3.用画笔绘画:

//画文字,xy是坐标

canvas.drawText("hello Android", x, y, paint);

//画矩形前四个属性对应四条边坐标

canvas.drawRect(left, top, right, bottom, paint);

//画图片

canvas.drawBitmap(bitmap, x, y, paint);

/**在IO流中有关于bitmap图片的操作*/


4.用户操作的事件处理:

//重写触屏事件,至于获取坐标参照基础部分的触摸事件

@Override

public boolean onTouchEvent(MotionEvent event) {

return super.onTouchEvent(event);

}

//重写键盘事件,至于获取键码参照基础部分重写各种键

@Override

public boolean onKeyDown(int keyCode, KeyEvent event) {

//此方法告诉画布重新绘制

invalidate();

return super.onKeyDown(keyCode, event);

}

这些事件处理是写在类体中,要想动态绘制内容绘图时哪些坐标就不能直接写了,要定义成全局变量,然后改变坐标后可以调用invalidate方法来重新绘制。


5.以上这些都是在画布上画,要显示在屏幕上写一个界面Activity,加载布局的那个方法这样写:


setContentView(new MyView(this));

也可以直接写在xml中:

<com.dulangDemo.jichu.MyView

    android:id="@+id/myView"

android:layout_width="wrap_content"

android:layout_height="wrap_content" />

这就是传说中的自定义控件,自己快去动手试试吧,第一次发博客,不喜勿喷微笑
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值