Android多媒体之画画板开发案例分享

先看看效果:

其实画画板的原理很简单,就是首先记录下按下屏幕的点,然后每移动一下就让这两次移动的点连线,周而复始,图像就由很多条直线构成了。

核心代码 :

public class MainActivity extends Activity implements OnClickListener,OnSeekBarChangeListener {

  private View red_view,green_view,blue_view;   //控制画笔颜色的三块区域
  private SeekBar seekBar;    //控制画笔粗细的拖动条
  private ImageView iv;
  private Bitmap bitmap,backgroud;  //画纸和背景图
  private Canvas canvas;       //画布
  private Paint paint;        //画笔
  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    red_view = findViewById(R.id.red_view);
    green_view = findViewById(R.id.green_view);
    blue_view = findViewById(R.id.blue_view);
    seekBar = (SeekBar) findViewById(R.id.seekbar);
    iv = (ImageView) findViewById(R.id.iv);
    iv.setImageResource(R.drawable.bg);
    //拿到背景图
    backgroud = BitmapFactory.decodeResource(getResources(), R.drawable.bg);
    //拿到和背景图一样大小的画纸
    bitmap = Bitmap.createBitmap(backgroud.getWidth(), backgroud.getHeight(), backgroud.getConfig());
    //把画纸固定在画布上
    canvas = new Canvas(bitmap);
    //拿到画笔
    paint = new Paint();
    paint.setColor(Color.BLACK);//设置画笔颜色为黑色
    paint.setStyle(Style.STROKE);//设置画笔为空心
    //添加处理规则
    Matrix matrix = new Matrix();
    //照着背景图画
    canvas.drawBitmap(backgroud, matrix, paint);
    red_view.setOnClickListener(this);
    green_view.setOnClickListener(this);
    blue_view.setOnClickListener(this);
    seekBar.setOnSeekBarChangeListener(this);
    iv.setOnTouchListener(new OnTouchListener() {
      float startX;
      float startY;
      @Override
      public boolean onTouch(View v, MotionEvent event) {
        switch (event.getAction()) {
        //获取按下时的坐标
        case MotionEvent.ACTION_DOWN:
          startX = event.getX();
          startY = event.getY();
          break;
        //获取移动时的坐标
        case MotionEvent.ACTION_MOVE:
          float stopX = event.getX();
          float stopY = event.getY();
//          // 在开始和结束坐标间画一条线
          canvas.drawLine(startX, startY, stopX, stopY, paint);
          //实时更新坐标(通过不断画线)
          startX = event.getX();
          startY = event.getY();

          iv.setImageBitmap(bitmap);
          break;
        case MotionEvent.ACTION_UP:
          break;
        default:
          break;
        }
        return true;
      }
    });
  }
  @Override
  public void onClick(View v) {
    switch (v.getId()) {
    case R.id.red_view:
      //当点击红色区域的时候设置画笔颜色为红色
      paint.setColor(Color.RED);
      break;
    case R.id.green_view:
      //当点击绿色区域的时候设置画笔颜色为绿色
      paint.setColor(Color.GREEN);
      break;
    case R.id.blue_view:
      //当点击蓝色区域的时候设置画笔颜色为蓝色
      paint.setColor(Color.BLUE);
      break;
    default:
      break;
    }
  }
  //拖动条的值改变的时候调用
  @Override
  public void onProgressChanged(SeekBar seekBar, int progress,
      boolean fromUser) {

  }
  //开始拖动时调用
  @Override
  public void onStartTrackingTouch(SeekBar seekBar) {

  }
  //停止拖动时调用
  @Override
  public void onStopTrackingTouch(SeekBar seekBar) {
    int progress = seekBar.getProgress();//拖动条默认的最大值为100
    paint.setStrokeWidth(progress/10f);//控制画笔的粗细范围(0-10)
  }
}

试试觉得很简单呢,赶紧试试吧!

又到周五了,希望大家有个快乐周末,谢谢大家一直对小编的支持,小编一定会再接再厉,为大家分享更多精彩的文章。

时间: 2016-05-17

双缓冲技术实现Android 画板应用

什么是双缓冲技术?双缓冲技术就是当用户操作界面完成后,会有一个缓冲区保存用户操作的结果. 为什么要使用双缓冲技术?拿Android 游戏开发来说,界面贞每次都是全部重画的,也就说画了新的,旧的就没了,所以需要使用双缓冲技术保存之前的内容. 如何实现双缓冲?使用一个Bitmap对象保留之前的画布即可. package com.example.phonegaptest; import android.content.Context; import android.graphics.Bitmap; i

Android自定义SurfaceView实现画板功能

接触了这么久的View,总不能一直停留在View里,现在开始呢,就要学习一个新的知识点:SurfaceView,实际上SurfaceView与View的原理都差不多,只是效率和渲染方式上,SurfaceView要优于View,这也是我们写这个的原因.今天就看看这个SurfaceView,好了,下面就是今天要说的效果. 界面很简单,就是一个按钮以及一个画板,先看看界面的代码吧 <LinearLayout xmlns:android="http://schemas.android.com/ap

android实现简单的画画板实例代码

直接看代码,注释都写清楚了 复制代码 代码如下: public class MainActivity extends Activity { private ImageView iv; private Bitmap baseBitmap; private Canvas canvas; private Paint paint; @Override protected void onCreate(Bundle savedInstanceState) {  super.onCreate(savedIns

Android实现画板、写字板功能(附源码下载)

前言 本文给大家分享一个使用Android开发写字板功能Dem.简单操作内存中的图像.对图像进行简单的处理.绘制直线.以达到写字板的效果 效果图如下 XML布局代码 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="

Android采用双缓冲技术实现画板

本文实例为大家分享了Android实现画板的具体代码,采用的技术是双缓冲技术,供大家参考,具体内容如下 1.双缓冲技术的概念 所谓的双缓冲技术其实很简单,当程序需要在指定的View上进行绘制时,程序并不需要直接绘制到该View组件,而是先绘制到一个内存中的Bitmap图片上(就是缓冲),等内存中的Bitmap绘制好之后,再一次性将Bitmap绘制到View组件上. 2.Android采用双缓冲实现画板  实现的思路: 1).定义一个内存中图片,将他作为缓冲区Bitmap cacheBitmap

Android画画板的制作方法

本文实例为大家分享了Android画画板展示的具体代码,供大家参考,具体内容如下 main.xml布局 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main" android:layout_w

Android抽奖轮盘的制作方法

本文实例为大家分享了Android抽奖轮盘的具体代码,供大家参考,具体内容如下 main布局(图片资源请自行寻找,抱歉) <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_gra

Android漂浮背景效果的制作方法

GIF动图效果不是很好,实际效果非常平滑very smooth,而且添加不同的图形可以组成各种效果,目前已经用在我们项目的注册界面- 原理: 实现原理很简单,每一个悬浮的"小物体"就是一个自定义View,这些小的自定义View都盛放在一个自定义的ViewGroup中.然后所有的视图都放在这个ViewGroup之上,这样就相当于做一个可动的背景. 下面结合代码详细介绍下: 详解: FloatObject 悬浮的物体,继承自View,需要重写onDraw方法,主要作用就是来画出自己,并进行

Android ViewPager向导页面制作方法

接着上一篇博客,上一篇博客跟大家分享了三种开始页面的定时跳转,根据项目需求接下来就说一下向导页面吧!几乎每一个APP都有自己的向导页面,一般都是第一次安装的时或者第一次进入应用时才有向导页面的,就是只出现一次向导页面,向导页面顾名思义是指引客户大概了解APP的功能,向客户介绍APP的主要内容和使用方式,给客户一种期待已久的感觉,向导页面的实现方法有很多,现在我就以我之前做的项目为例给大家介绍用ViewPager去实现向导页面吧! 现在就给你们先看看效果图,是很酷吧! 一.判断开始页面是否跳转到向

Android圆角按钮的制作方法

本文实例为大家分享了Android制作圆角按钮的具体代码,供大家参考,具体内容如下 [主要步骤] 创建一个XML文件 以此文件作为Button的Background 1.创建XML文件 在res目录下的drawable-mdpi下建立XML文件 button_frame_shape.xml <?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas

什么是Android静默拍摄 Android静默拍摄app制作方法

引言: 在做用户的头像时,忽然想到前段时间(可能是很久以前了),支付宝传出偷偷拍摄用户的生活照,真实头像,被喷的很厉害.然而作为Android开发者的我第一反应竟然是握草,他是怎么实现的.在我印象中,iOS对权限的控制是很严格的,偷偷调起摄像头这种行为应该是很困难的.然而Android4.2之前可以说开发者几乎拥有了系统权限,能力之强简直可怕.而现在Android已经到了7.0,虽然大多说用户还是在4.4到6.0的.我想我也来做一个静默拍摄的app. 正文: 所谓静默拍摄就是在用户毫无感知的情况

Android编程实现画板功能的方法总结【附源码下载】

本文实例讲述了Android编程实现画板功能的方法.分享给大家供大家参考,具体如下: Android实现画板主要有2种方式,一种是用自定义View实现,另一种是通过Canvas类实现.当然自定义View内部也是用的Canvas.第一种方式的思路是,创建一个自定义View(推荐SurfaceView),在自定义View里通过Path对象记录手指滑动的路径调用lineTo()绘制:第二种方式的思路是,先用Canvas绘制一张空的Bitmap,通过ImageView的setImageBitmap()方

Android编程之阴影(Shadow)制作方法

本文实例讲述了Android编程之阴影(Shadow)制作方法.分享给大家供大家参考,具体如下: 先看运行效果图如下: 阴影制作:包括各种形状(矩形,圆形等等),以及文字等等都能设置阴影. 阴影制作是什么原理呢? 其实很简单,你需要设置阴影的东西被看作一个主层.然后在主层下面画一个阴影层. 阴影制作涉及到一个重要函数: public void setShadowLayer (float radius, float dx, float dy, int color) 参数: radius:阴影半径

Android实现在map上画出路线的方法

本文实例讲述了Android实现在map上画出路线的方法.分享给大家供大家参考.具体如下: 最近在搞在地图上画出路线图,经过一段时间的摸索,终于搞明白了,其实也挺简单的,写个类继承Overlay,并重写draw方法,在draw方法中画出 path即可.对于Overaly,在地图上标记某个点或者画线之类的就要使用overlay,overlay相当于一个覆盖物,覆盖在地图上,这个覆盖物要自己实现所以要继承Overlay. MapActivity.java如下: package net.blogjav

Android实现画画板案例

本文实例为大家分享了Android实现画画板的具体代码,供大家参考,具体内容如下 ① 准备一个布局文件 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools&q