这几天写了一个在View上模拟一个自由落体运动的小球的Demo,学到了不少东西,也对View有了一定的理解,写来与大家分享,有错的地方请大家指出。
Android中的View类是用来画图的,自定义一个类继承View类的话就要实现一个OnDrawf方法,这个方法和Java里面的Paint函数很像,系统会不断的调用这个OnDraw方法,来刷新当前的View,于是我们就可以在上面做出动态效果的东西了.
下面来看OnDraw函数:protected void OnDraw(Canvas canvas);
重写这个函数会得到一个canvas(画布)参数,这个画布默认地覆盖在了当前的View上,你可以在当前画布上画画了,比如有这些方法可以用:
canvas.drawCircle(x, y, 40, mPaint);//画个圆出来,以x,y为圆心,40为半径,其中mPaint对象相当于一只笔,他是Paint类的一个对象,可以定义画笔的颜色,大小,是否有锯齿等属性,如
mPaint = new Paint();//创建画笔实例
mPaint.setAntiAlias(true);//消除锯齿
mPaint.setARGB(0, 0xff, 0, 0);//设置画笔为红色的
我主要想说的还是Canvas的drawBitmap方法和SetBitmap的方法。
mBitmap = Bitmap.createBitmap(400, 300, Bitmap.Config.RGB_565)
canvas.drawBitmap(mBitmap, 0, 0, null);
drawBitmap这个方法是在当前画布上(默认为整个手机屏幕的大小,这里的canvas是OnDraw方法后面的那个参数)再绘制一个长400,宽300的Bitmap(相当于一个新的View盖在原来的那个手机屏幕大小的View上),就好像Java UI里面的在容器里面加容器那种感觉
如果我们要在新的Bitmap上画图的话,就可以新定义一个画布Canvas canvas_new=new Canvas();然后调用方法canvas_new.setBitmap(mBitmap);方法,指定当前的画布是放在刚才我们新定义的400*300的Bitmap上面,如果此时调用这个canvas_new的绘画的方法的话,图案就会被画在400*300的View上,而不是整个手机屏幕上。