Android学习笔记进阶之在图片上涂鸦(能清屏)


HandWritingActivity.java
- package xiaosi.handWriting;
- import android.app.Activity;
- import android.app.AlertDialog;
- import android.content.DialogInterface;
- import android.os.Bundle;
- import android.view.View;
- import android.view.View.OnClickListener;
- import android.widget.Button;
- public class HandWritingActivity extends Activity
- {
- /** Called when the activity is first created. */
- private HandWrite handWrite = null;
- private Button clear = null;
- @Override
- public void onCreate(Bundle savedInstanceState)
- {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- handWrite = (HandWrite)findViewById(R.id.handwriteview);
- clear = (Button)findViewById(R.id.clear);
- clear.setOnClickListener(new clearListener());
- }
- private class clearListener implements OnClickListener{
- public void onClick(View v)
- {
- handWrite.clear();
- }
- }
- }
- package xiaosi.handWriting;
- import android.app.Activity;
- import android.app.AlertDialog;
- import android.content.DialogInterface;
- import android.os.Bundle;
- import android.view.View;
- import android.view.View.OnClickListener;
- import android.widget.Button;
- public class HandWritingActivity extends Activity
- {
- /** Called when the activity is first created. */
- private HandWrite handWrite = null;
- private Button clear = null;
- @Override
- public void onCreate(Bundle savedInstanceState)
- {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- handWrite = (HandWrite)findViewById(R.id.handwriteview);
- clear = (Button)findViewById(R.id.clear);
- clear.setOnClickListener(new clearListener());
- }
- private class clearListener implements OnClickListener{
- public void onClick(View v)
- {
- handWrite.clear();
- }
- }
- }
HandWrite.java
- public class HandWrite extends View
- {
- private Paint paint = null;
- private Bitmap originalBitmap = null;
- private Bitmap new1Bitmap = null;
- private Bitmap new2Bitmap = null;
- private float clickX = 0,clickY = 0;
- private float startX = 0,startY = 0;
- private boolean isMove = true;
- private boolean isClear = false;
- private int color = Color.GREEN;
- private float strokeWidth = 2.0f;
- public HandWrite(Context context, AttributeSet attrs)
- {
- super(context, attrs);
- originalBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.girl_a);
- new1Bitmap = Bitmap.createBitmap(originalBitmap);
- }
- public void clear(){
- isClear = true;
- new2Bitmap = Bitmap.createBitmap(originalBitmap);
- invalidate();
- }
- public void setstyle(float strokeWidth){
- this.strokeWidth = strokeWidth;
- }
- @Override
- protected void onDraw(Canvas canvas)
- {
- super.onDraw(canvas);
- canvas.drawBitmap(HandWriting(new1Bitmap), 0, 0,null);
- }
- public Bitmap HandWriting(Bitmap originalBitmap)
- {
- Canvas canvas = null;
- if(isClear){
- canvas = new Canvas(new2Bitmap);
- }
- else{
- canvas = new Canvas(originalBitmap);
- }
- paint = new Paint();
- paint.setStyle(Style.STROKE);
- paint.setAntiAlias(true);
- paint.setColor(color);
- paint.setStrokeWidth(strokeWidth);
- if(isMove){
- canvas.drawLine(startX, startY, clickX, clickY, paint);
- }
- startX = clickX;
- startY = clickY;
- if(isClear){
- return new2Bitmap;
- }
- return originalBitmap;
- }
- @Override
- public boolean onTouchEvent(MotionEvent event)
- {
- clickX = event.getX();
- clickY = event.getY();
- if(event.getAction() == MotionEvent.ACTION_DOWN){
- isMove = false;
- invalidate();
- return true;
- }
- else if(event.getAction() == MotionEvent.ACTION_MOVE){
- isMove = true;
- invalidate();
- return true;
- }
- return super.onTouchEvent(event);
- }
- }
- public class HandWrite extends View
- {
- private Paint paint = null;
- private Bitmap originalBitmap = null;
- private Bitmap new1Bitmap = null;
- private Bitmap new2Bitmap = null;
- private float clickX = 0,clickY = 0;
- private float startX = 0,startY = 0;
- private boolean isMove = true;
- private boolean isClear = false;
- private int color = Color.GREEN;
- private float strokeWidth = 2.0f;
- public HandWrite(Context context, AttributeSet attrs)
- {
- super(context, attrs);
- originalBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.girl_a);
- new1Bitmap = Bitmap.createBitmap(originalBitmap);
- }
- public void clear(){
- isClear = true;
- new2Bitmap = Bitmap.createBitmap(originalBitmap);
- invalidate();
- }
- public void setstyle(float strokeWidth){
- this.strokeWidth = strokeWidth;
- }
- @Override
- protected void onDraw(Canvas canvas)
- {
- super.onDraw(canvas);
- canvas.drawBitmap(HandWriting(new1Bitmap), 0, 0,null);
- }
- public Bitmap HandWriting(Bitmap originalBitmap)
- {
- Canvas canvas = null;
- if(isClear){
- canvas = new Canvas(new2Bitmap);
- }
- else{
- canvas = new Canvas(originalBitmap);
- }
- paint = new Paint();
- paint.setStyle(Style.STROKE);
- paint.setAntiAlias(true);
- paint.setColor(color);
- paint.setStrokeWidth(strokeWidth);
- if(isMove){
- canvas.drawLine(startX, startY, clickX, clickY, paint);
- }
- startX = clickX;
- startY = clickY;
- if(isClear){
- return new2Bitmap;
- }
- return originalBitmap;
- }
- @Override
- public boolean onTouchEvent(MotionEvent event)
- {
- clickX = event.getX();
- clickY = event.getY();
- if(event.getAction() == MotionEvent.ACTION_DOWN){
- isMove = false;
- invalidate();
- return true;
- }
- else if(event.getAction() == MotionEvent.ACTION_MOVE){
- isMove = true;
- invalidate();
- return true;
- }
- return super.onTouchEvent(event);
- }
- }
main.xml
- <?xml version="1.0" encoding="utf-8"?>
- <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent"
- android:orientation="vertical" >
- <xiaosi.handWriting.HandWrite
- android:id="@+id/handwriteview"
- android:layout_width="fill_parent"
- android:layout_height="380dp" />
- <LinearLayout
- android:layout_width="fill_parent"
- android:layout_height="fill_parent"
- android:orientation="horizontal"
- android:gravity="center_horizontal" >
- <Button
- android:id="@+id/clear"
- android:layout_width="200dp"
- android:layout_height="wrap_content"
- android:text="清屏" />
- </LinearLayout>
- </LinearLayout>
Android学习笔记进阶之在图片上涂鸦(能清屏)的更多相关文章
- Android学习笔记进阶16之BitmapShader
<1>简介 具体的看一下博文:Android学习笔记进阶15之Shader渲染 public BitmapShader(Bitmap bitmap,Shader.TileMode ti ...
- Android学习笔记进阶17之LinearGradient
具体的看一下博文:Android学习笔记进阶15之Shader渲染 package xiaosi.BitmapShader; import android.app.Activity; import a ...
- Android学习笔记进阶18 之画图并保存图片到本地
1.首先创建一个Bitmap图片,并指定大小: 2.在该图片上创建一个新的画布Canvas,然后在画布上绘制,并保存即可: 3.需要保存的目录File,注意如果写的目录如“/sdcard/so ...
- Android学习笔记进阶18之画图并保存图片到本地
1.首先创建一个Bitmap图片,并指定大小: 2.在该图片上创建一个新的画布Canvas,然后在画布上绘制,并保存即可: 3.需要保存的目录File,注意如果写的目录如“/sdcard/so ...
- ASP.NET学习笔记 —— 一般处理程序之图片上传
简单图片上传功能目标:实现从本地磁盘读取图片文件,展示到浏览器页面.步骤:(1). 首先创建一个用于上传图片的HTML模板,命名为ImageUpload.html: <!DOCTYPE html ...
- Android 学习笔记进阶十二之裁截图片
package xiaosi.cut; import java.io.File; import android.app.Activity; import android.content.Intent; ...
- Android学习笔记进阶20 之得到图片的缩略图
<1>简介 之前往往是通过Bitmap.Drawable和Canvas配合完成,需要写一系列繁杂的逻辑去缩小原有图片,从而得到缩略图. 现在我给大家介绍一种比较简单的方法:(网上有) 在A ...
- Android学习笔记进阶20之得到图片的缩略图
<1>简介 之前往往是通过Bitmap.Drawable和Canvas配合完成,需要写一系列繁杂的逻辑去缩小原有图片,从而得到缩略图. 现在我给大家介绍一种比较简单的方法:(网上有) 在A ...
- Android学习笔记进阶十一图片动画播放(AnimationDrawable)
大家平时见到的最多的可能就是Frame动画了,Android中当然也少不了它.它的使用更加简单,只需要创建一个 AnimationDrawabledF对象来表示Frame动画,然后通过addFrame ...
随机推荐
- 极客DIY:如何构建一台属于自己的基站
写在前面(原文作者) 上周我去特拉维夫(Tel Aviv)探望我的朋友结果有了一些收获,一块崭新的BladeRF(x40),即一个支持USB3.0的SDR平台,这就意味着可以同时发送和接收信息了.而H ...
- N的阶乘的长度
阶乘是乘法 , 乘法的话 , 几位数*几位数的位数 就是 哪两个几位数相加 . 这个可以用log10来解决 , 所以有如下代码 . #include<stdio.h> #include& ...
- ACDream-C - Transformers' Mission(Dijastra最短路径)
dijstra求最短路径:经典应用题目: 题意:给你一个带权值无向图,权值是A点到B点的时间,然后告诉你起点,一个人可以去炸掉一个结点或多个节点,也可以派多个人,最终这些人在终点集合,问最后一个到达终 ...
- 调度 Quartz 时间格式配置
1. CronTrigger时间格式配置说明 CronTrigger配置格式: 格式: [秒] [分] [小时] [日] [月] [周] [年]
- IOS 动画的各种实现方法
#import "ViewController.h"#import <QuartzCore/QuartzCore.h> @interface ViewControlle ...
- HDU 4704
http://acm.hdu.edu.cn/showproblem.php?pid=4704 求(2^n)%mod的方法 #include <iostream> #include < ...
- Ubuntu安装Sun JDK及如何设置默认java JDK
假设系统为Ubuntu 10.10 64位. 先来看看当前的系统默认的java版本,及提供商.通过命令java -version kemix@kemix-VB10-64:~$ jav ...
- 我的Java后端书架2016年暮春3.0版(转)
书架主要针对Java后端开发. 3.0版把一些后来买的.看的书添补进来,又或删掉或降级一些后来没有再翻开过的书. 更偏爱那些能用简短流畅的话,把少壮不努力的程序员所需的基础补回来的薄书,而有些教课书可 ...
- CI 框架隐藏index.php-ubuntu
和朋友在做一个小网站,用到了CI框架,之前测试都是在windows上,隐藏index.php也相对比较简单.但服务器是ubuntu系统,需要配置一下,根据网上看到的一些教程,结合自己电脑的特点,记录步 ...
- 感知机学习算法 python实现
参考李航<统计学习方法> 一开始的感知机章节,看着不太复杂就实现一下... """ 感知机学习算法的原始形式 例2.1 """ ...