`
wuce7758
  • 浏览: 182262 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论
  • YTT1121: 有网络拓扑发现的源代码么?能不能发我一份学习一下,现在我正要做 ...
    java拓扑图
  • YTT1121: 大神,有网络拓扑发现的源代码么?或者您会编写么?我需要做科研改 ...
    java拓扑图
  • YTT1121: 大神,有网络拓扑发现的源代码么?或者您会编写么?我需要做科研改 ...
    java拓扑图
  • poettang: 求代码分享学习,谢谢!膜拜大神!258026921@qq.co ...
    java拓扑图
  • oiqio: 87836238@qq.com,感谢楼主,来一份~
    java拓扑图

【图片处理及特效】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();  
        }  
    }  
}  

 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);  
    }  
     
}  

 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学习笔记" Android学习笔记是Android开发者的必读书籍,书中涵盖了Android系统架构、Activity、Intent、资源管理等多方面的知识。本笔记对应的学习资源《第一行代码》是Android开发者的入门必读书籍,书中...

    Android学习笔记(十)——实现新闻列表

    Android学习笔记(二)android studio基本控件及布局(实现图片查看器) Android学习笔记(三)android studio中CheckBox自定义样式(更换复选框左侧的勾选图像) Android学习笔记(四)Android 中Activity页面的...

    《深度学习进阶-自然语言处理》-【日】斋藤康毅著。个人学习整理简单笔记,欢迎一起学习探讨, 小白一枚,希望寻找小伙伴.zip

    4. **序列模型**:RNN和其变种LSTM/GRU在处理序列数据(如文本)时表现出色,能捕获上下文信息。笔记可能包含如何使用这些模型进行文本生成和情感分析。 5. **注意力机制(Attention Mechanism)**:在处理长序列时...

    Android高级进阶学习下载

    在Android开发领域,高级进阶学习是提升技能和专业素养的关键步骤。这个资源包,名为"Android高级进阶学习下载",显然是为了帮助开发者深入理解Android系统的内部运作机制,掌握更复杂的开发技巧,以及了解最新的...

    React进阶之路系列学习笔记

    《React进阶之路》系列学习笔记,包含自己对React的理解和使用建议,主要详解MobX项目实战。

    Android学习笔记——获取网络图片并显示

    在Android开发中,获取网络图片并显示是一项基本但至关重要的任务。这通常涉及到网络请求、图片处理和UI组件的交互。下面将详细讲解这个过程,包括XML布局、Java代码实现以及必要的权限设置。 首先,我们需要在XML...

    Python进阶学习笔记

    Python进阶学习笔记

    Android 进阶,优化,学习笔记

    ### Android进阶与优化知识点详解 #### 一、Android ToolBar 使用详解 **知识点1:折叠式 Toolbar 的实现** 在Android应用开发中,为了提升用户体验并实现美观的界面设计,折叠式 Toolbar(Collapsing Toolbar)...

    黑马程序员Android学习笔记

    这份笔记涵盖了从基础到进阶的多个主题,帮助学习者系统地理解Android应用开发的过程。 首先,笔记会引导你了解Android的基础知识,包括Android系统的架构、SDK(Software Development Kit)的下载与安装、Android ...

    AndroidNote, Android 进阶笔记,包含常用的技术框架、博客社区、书籍等。.zip

    《Android进阶笔记》是针对Android开发者的一份详尽学习资料,主要涵盖了各种技术框架、博客社区和推荐书籍,旨在帮助开发者深入理解Android系统并提升专业技能。这份资源的开源特性意味着开发者可以自由访问和分享...

    c++学习笔记(零基础进阶之路).md

    个人整理的c/c++学习进阶方法,零基础轻松掌握关键知识点,是你在面向过程——&gt;面向对象学习过程中的辅助利器! 话不多说,开始吧!!!

    Java语言程序设计-进阶篇(原书第10版) 学习笔记

    Java语言程序设计-进阶篇(原书第10版) 学习笔记 Java语言程序设计-进阶篇(原书第10版) 学习笔记 Java语言程序设计-进阶篇(原书第10版) 学习笔记 Java语言程序设计-进阶篇(原书第10版) 学习笔记 Java语言程序...

    Python 进阶学习笔记.zip

    Python 进阶学习笔记Python学习笔记#Python进阶学习笔记当年学了点Python2,很想知道什么Python3失去了Python的灵魂,没管Python3。最近做项目因为需要使用Python3,又把当年的那份热血花在了Python3的学习上本以为...

    Android学习笔记.rar

    这份“Android学习笔记”涵盖了从基础到进阶的Android开发知识,旨在帮助开发者深入理解Android系统,并具备开发高质量Android应用的能力。 一、Android系统架构 Android系统分为四个主要层次:Linux内核、系统库和...

    安卓学习笔记01234.zip

    作者微博: @GcsSloop我的安卓学习笔记,记录学习过程中遇到的问题,以及我的一些经验总结。如果出现链接失效等情况可以提交问题提醒我修改相关内容。PS点击分类标题可以查看该分类的详细信息。博客我的个人博客,在...

    MONO FOR ANDROID学习笔记全套

    总之,《Mono for Android学习笔记全套》是一份全面的学习资源,覆盖了从入门到进阶的所有重要知识点,为开发者提供了一条从.NET世界无缝过渡到Android开发的道路。通过深入学习和实践,开发者可以充分利用C#的优势...

    Android进阶学习的项目,包括《Android开发艺术探索》学习笔记、优秀开源库学习理解等~.zip

    【适合场景】:相关项目设计中,皆可应用在项目开发、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面中 可借鉴此优质项目实现复刻,也可基于此项目来扩展开发...

    Tensorflow实战学习笔记、代码、机器学习进阶系列

    Tensorflow实战学习笔记、代码、机器学习进阶系列

    android 学习笔记(全全整理)

    Android学习笔记全全整理,是针对想要深入理解并掌握Android开发技术的学习者们的一份宝贵资源。这份笔记涵盖了从基础到高级的多个方面,旨在帮助读者建立起完整的Android知识体系。以下将详细介绍其中可能包含的...

Global site tag (gtag.js) - Google Analytics