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系统架构、Activity、Intent、资源管理等多方面的知识。本笔记对应的学习资源《第一行代码》是Android开发者的入门必读书籍,书中...
Android学习笔记(二)android studio基本控件及布局(实现图片查看器) Android学习笔记(三)android studio中CheckBox自定义样式(更换复选框左侧的勾选图像) Android学习笔记(四)Android 中Activity页面的...
4. **序列模型**:RNN和其变种LSTM/GRU在处理序列数据(如文本)时表现出色,能捕获上下文信息。笔记可能包含如何使用这些模型进行文本生成和情感分析。 5. **注意力机制(Attention Mechanism)**:在处理长序列时...
在Android开发领域,高级进阶学习是提升技能和专业素养的关键步骤。这个资源包,名为"Android高级进阶学习下载",显然是为了帮助开发者深入理解Android系统的内部运作机制,掌握更复杂的开发技巧,以及了解最新的...
《React进阶之路》系列学习笔记,包含自己对React的理解和使用建议,主要详解MobX项目实战。
在Android开发中,获取网络图片并显示是一项基本但至关重要的任务。这通常涉及到网络请求、图片处理和UI组件的交互。下面将详细讲解这个过程,包括XML布局、Java代码实现以及必要的权限设置。 首先,我们需要在XML...
Python进阶学习笔记
### Android进阶与优化知识点详解 #### 一、Android ToolBar 使用详解 **知识点1:折叠式 Toolbar 的实现** 在Android应用开发中,为了提升用户体验并实现美观的界面设计,折叠式 Toolbar(Collapsing Toolbar)...
这份笔记涵盖了从基础到进阶的多个主题,帮助学习者系统地理解Android应用开发的过程。 首先,笔记会引导你了解Android的基础知识,包括Android系统的架构、SDK(Software Development Kit)的下载与安装、Android ...
《Android进阶笔记》是针对Android开发者的一份详尽学习资料,主要涵盖了各种技术框架、博客社区和推荐书籍,旨在帮助开发者深入理解Android系统并提升专业技能。这份资源的开源特性意味着开发者可以自由访问和分享...
个人整理的c/c++学习进阶方法,零基础轻松掌握关键知识点,是你在面向过程——>面向对象学习过程中的辅助利器! 话不多说,开始吧!!!
Java语言程序设计-进阶篇(原书第10版) 学习笔记 Java语言程序设计-进阶篇(原书第10版) 学习笔记 Java语言程序设计-进阶篇(原书第10版) 学习笔记 Java语言程序设计-进阶篇(原书第10版) 学习笔记 Java语言程序...
Python 进阶学习笔记Python学习笔记#Python进阶学习笔记当年学了点Python2,很想知道什么Python3失去了Python的灵魂,没管Python3。最近做项目因为需要使用Python3,又把当年的那份热血花在了Python3的学习上本以为...
这份“Android学习笔记”涵盖了从基础到进阶的Android开发知识,旨在帮助开发者深入理解Android系统,并具备开发高质量Android应用的能力。 一、Android系统架构 Android系统分为四个主要层次:Linux内核、系统库和...
作者微博: @GcsSloop我的安卓学习笔记,记录学习过程中遇到的问题,以及我的一些经验总结。如果出现链接失效等情况可以提交问题提醒我修改相关内容。PS点击分类标题可以查看该分类的详细信息。博客我的个人博客,在...
总之,《Mono for Android学习笔记全套》是一份全面的学习资源,覆盖了从入门到进阶的所有重要知识点,为开发者提供了一条从.NET世界无缝过渡到Android开发的道路。通过深入学习和实践,开发者可以充分利用C#的优势...
【适合场景】:相关项目设计中,皆可应用在项目开发、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面中 可借鉴此优质项目实现复刻,也可基于此项目来扩展开发...
Tensorflow实战学习笔记、代码、机器学习进阶系列
Android学习笔记全全整理,是针对想要深入理解并掌握Android开发技术的学习者们的一份宝贵资源。这份笔记涵盖了从基础到高级的多个方面,旨在帮助读者建立起完整的Android知识体系。以下将详细介绍其中可能包含的...