这几天写了一个在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上,而不是整个手机屏幕上。


更多相关文章

  1. 如何使用Android中的OpenGL ES媒体效果
  2. Android中通过反射来设置Toast的显示时间
  3. 简述Unity中调用Android方法
  4. Android(安卓)添加白名单实现保活
  5. 如何使用Android(安卓)UI Fragment开发“列表-详情”界面
  6. 以 Okhttp3源码 为例 ------ 图解 缓存机制 的原理和实现(下)
  7. android webview与H5混合开发,webview自定义缓存
  8. [Android]用架构师角度看插件化(2)-Replugin 唯一hook点
  9. 【Android自定义View】 仿照腾讯漫画自定义Toast的实现

随机推荐

  1. MySQL数据库必备之条件查询语句
  2. MySQL实例精讲单行函数以及字符数学日期
  3. MySQL数据库超时设置配置的方法实例
  4. Error generating final archive
  5. Android(安卓)是否前台运行
  6. android之显示Log
  7. Android(安卓)Retrofit 2.0框架上传图片,
  8. android发送post请求出现问题
  9. android 连接USB按power键锁屏2声锁屏音
  10. Android(安卓)dialog 去除虚拟按键