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 ...
随机推荐
- 搭建linux系统环境
1.安装centos6.4 x86,选择的是Desktop模式2.配置centos a关闭NetwrokManager(chkconfig NetworkManager off) b开机启动netwo ...
- javascript树形菜单简单实例
参考博客地址:http://chengyoyo2006.blog.163.com/blog/static/8451734820087843950604/ <!DOCTYPE HTML PUBLI ...
- Configuration for Python to run on Android
It's exiting to learn to make app on Android with python. But when I check <Head First Python> ...
- UIkit框架之UIbutton的使用
1.UIbutton的继承关系:UIcontroller:UIview:UIresponder:NSObject: 2.添加按钮的步骤: (1)创建按钮的时候首先设置类型 (2)添加标题或者图片,设置 ...
- sphinx 全配置
## 数据源src1 source src1 { ## 说明数据源的类型.数据源的类型可以是:mysql,pgsql,mssql,xmlpipe,odbc,python ## 有人会奇怪,python ...
- 又见蒙特卡洛——python模拟解决三门问题
三门问题很有意思,wiki用不同方法将原理讲的很透彻了,我跟喜欢其中这种理解方式:无论参赛者开始的选择如何,在被主持人问到是否更换时都选择更换.如果参赛者先选中山羊,换之后百分之百赢:如果参赛者先选中 ...
- Cocos2d-x 3.x项目创建
1.首先打开终端,cd到cocos2d-x-3.2目录下,运行命令./setup.py 2. 首先,打开终端cd到目录/cocos2d-x-3.2/tools/cocos2d-console/bin下 ...
- 把input类型剔出来
<!doctype html public "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- 用C语言计算圆的面积~!!!!!!!
#include <stdio.h>void main(){ int a,b,c,y,g,f; printf("圆柱底面的半径,圆柱的高"); scanf(" ...
- Ext.Net系列:一安装与使用
http://www.cnblogs.com/howDo/archive/2011/04/27/2031084.html 下载地址:http://www.ext.net/download/ 示例地址: ...