欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

Android开发实现各种图形绘制功能示例

程序员文章站 2023-12-18 17:51:10
本文实例讲述了android开发实现各种图形绘制功能。分享给大家供大家参考,具体如下: 这里结合本人的开发事例,简单介绍一下如何在android平台下实现各种图形的绘制。...

本文实例讲述了android开发实现各种图形绘制功能。分享给大家供大家参考,具体如下:

这里结合本人的开发事例,简单介绍一下如何在android平台下实现各种图形的绘制。

首先自定义一个view类,这个view类里面需要一个paint对象来控制图形的属性,需要一个path对象来记录图形绘制的路径,需要一个canvas类来执行绘图操作,还需要一个bitmap类来盛放绘画的结果。

paint mpaint = new paint();
mpaint.setantialias(true);
mpaint.setcolor(0xffff0000);
mpaint.setstyle(paint.style.stroke);
mpaint.setstrokewidth(12);

以上代码初始化了paint对象,设置了画笔的颜色、类型和粗细。

bitmapmforebitmap = bitmap.createbitmap(mwidth, mheight, bitmap.config.argb_8888);
canvasmcanvas = new canvas(mforebitmap);
pathmpath = new path();

以上代码创建了一个bitmap对象,并将他作为参数传给了canvas对象,同时初始化path对象。

想让view响应用户的触摸事件,需要实现view类的ontouchevent函数,代码如下:

@override
public boolean ontouchevent(motionevent event) {
  float x = event.getx();
  float y = event.gety();
  switch (event.getaction()) {
    case motionevent.action_down:
      touch_start(x, y);
      invalidate();
      break;
    case motionevent.action_move:
      touch_move(x, y);
      invalidate();
      break;
    case motionevent.action_up:
      touch_up();
      invalidate();
      break;
  }
  return true;
}

其中touch_start,touch_move和touch_up函数分别处理按下,移动和抬起事件,函数的实现将在后面介绍,invalidate函数会调用ondraw函数保证绘图效果实时显示出来。

touch_start函数实现如下

mpath.reset();
mpath.moveto(x,y);
mx= x;
my= y;

每次清空path,移动到起点处,并记录起点。

touch_move函数实现如下:

switch(mshape)
{
  case 1:
    float dx = math.abs(x - mx);
    float dy = math.abs(y - my);
    if (dx >= touch_tolerance || dy >= touch_tolerance) {
      mpath.quadto(mx, my, (x + mx)/2, (y + my)/2);
      mx = x;
      my = y;
    }break;
  case 2:
    mpath.reset();
    mpath.moveto(mx, my);
    mpath.lineto(x, y);
    break;
  case 3:
    mpath.reset();
    rectf mrect = new rectf();
    mrect.set(mx, my, x, y);
    mpath.addoval(mrect, path.direction.cw);
    break;
  case 4:
    mpath.reset();
    rectf mrect1 = new rectf();
    mrect1.set(mx, my, x, y);
    mpath.addrect(mrect1, path.direction.cw);
    break;
}

根据mshape的值绘制不同的图形,为1时绘制bezier曲线,为2时绘制直线,为3时绘制椭圆,为4是绘制矩形,分别调用path类的不同函数实现。

touch_up函数实现如下:

mcanvas.drawpath(mpath,mpaint);
mpath.reset();

将path绘制到canvas的bitmap里

最后在ondraw函数里需要把当前的bitmap绘制出来。

protectedvoid ondraw(canvas canvas)
{
    // todo auto-generated method stub
    super.ondraw(canvas);
    canvas.drawbitmap(mbitmap,0, 0, mbitmappaint);
}

大功告成,截图如下:

Android开发实现各种图形绘制功能示例

更多关于android相关内容感兴趣的读者可查看本站专题:《android图形与图像处理技巧总结》、《android开发入门与进阶教程》、《android调试技巧与常见问题解决方法汇总》、《android基本组件用法总结》、《android视图view技巧总结》、《android布局layout技巧总结》及《android控件用法总结

希望本文所述对大家android程序设计有所帮助。

上一篇:

下一篇: