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

 更新时间:2017年09月01日 10:48:34   作者:pku_android  
这篇文章主要介绍了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视图View技巧总结》、《Android布局layout技巧总结》及《Android控件用法总结

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

相关文章

  • 基于Android实现颜色渐变动画效果

    基于Android实现颜色渐变动画效果

    本文主要给大家介绍了Android实现颜色渐变动画效果,实现这样的一个动画渐变的效果很简单,只需要两步,第一步用GradientDrawable实现两个颜色之间的渐变效果,第二步用属性动画实现颜色变化的过程,需要的朋友可以参考下
    2024-01-01
  • Android实现美团下拉功能

    Android实现美团下拉功能

    这篇文章主要为大家详细介绍了Android实现美团下拉功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-10-10
  • Android Studio使用教程(五):Gradle命令详解和导入第三方包

    Android Studio使用教程(五):Gradle命令详解和导入第三方包

    这篇文章主要介绍了Android Studio使用教程(五):Gradle命令详解和导入第三方包,本文讲解了导入Android Studio、Gradle常用命令等内容,需要的朋友可以参考下
    2015-05-05
  • 注解处理器(APT)是什么

    注解处理器(APT)是什么

    APT是JDK提供的工具,用于在编译阶段未生成class之前对源码中的注解进行扫描和处理,获取到注解后可以使用原始方法与JavaPoet生成Java代码,这篇文章主要介绍了注解处理器(APT)是什么?需要的朋友可以参考
    2023-02-02
  • Android应用开发之代码混淆

    Android应用开发之代码混淆

    Android项目中的混淆很easy,之所以写这篇总结是由于近期发现公司的代码居然没有混淆,反编译后代码随手可得。很震惊。
    2014-07-07
  • Android实现EditText内容保存为Bitmap的方法

    Android实现EditText内容保存为Bitmap的方法

    这篇文章主要介绍了Android实现EditText内容保存为Bitmap的方法,涉及Android中saveBitmap方法的简单使用技巧,需要的朋友可以参考下
    2016-01-01
  • Android TV开发:实现3D仿Gallery效果的实例代码

    Android TV开发:实现3D仿Gallery效果的实例代码

    这篇文章主要介绍了Android TV开发:实现3D仿Gallery效果的实例代码,效果:滚动翻页+ 页面点击+页码指示器+焦点控制,主要为了移植到电视上做了按键事件和焦点控制。
    2018-05-05
  • Android 判断是否是是全汉字、全字母、全数字、数字和字母等(代码)

    Android 判断是否是是全汉字、全字母、全数字、数字和字母等(代码)

    这篇文章主要介绍了Android 判断是否是是全汉字、全字母、全数字、数字和字母等的实例代码,需要的朋友可以参考下
    2016-12-12
  • Android实现声音采集回声与回声消除

    Android实现声音采集回声与回声消除

    这篇文章主要为大家详细介绍了Android实现声音采集回声与回声消除,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-08-08
  • Android实现传感器功能

    Android实现传感器功能

    这篇文章主要为大家详细介绍了Android实现传感器功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-09-09

最新评论