Android学习笔记进阶之在图片上涂鸦(能清屏)
2023-09-11 14:17:58 时间
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>
相关文章
- Windows下Nexus 5的Android 5.0以上版本官方ROM的刷机教程
- Android学习笔记:TabHost 和 FragmentTabHost
- Android学习笔记——文件路径(/mnt/sdcard/...)、Uri(content://media/external/...)学习
- 从零开始,全套Android架构师学习笔记,帮你打开Android世界的大门
- 2022最新《Android Framework 核心知识笔记》,阿里技术团队出品【全网首发】
- Android编程权威指南笔记
- android常见错误-The container 'Android Dependencies' references non existing library
- android:Android中用文件初始化sqlite数据库
- Android学习笔记之短信验证码的获取和读取
- Android学习笔记进阶18 之画图并保存图片到本地
- Android学习笔记之详细讲解画圆角图片
- Android学习笔记技巧之垂直和水平滚动视图
- Android学习笔记进阶21之设置壁纸
- Android学习笔记进阶17之LinearGradient
- Android学习笔记进阶八之Matrix矩阵
- Android学习笔记之Bitmap位图虽触摸点移动
- Android Bitmap和Canvas学习笔记
- 实现Android Studio JNI开发C/C++使用__android_log_print输出Log
- 【VLC-Android】Mac下编译vlc-android
- 【Android开发经验】怎样查看android-support-v4支持包中的源代码
- Android学习笔记(36):Android的两种事件处理方式
- Android回调事件传播-android学习之旅(四十五)
- 【winows7+android-ndk-r9+Cygwin 】cocos2dx 2.*游戏移植Android平台完全手册
- Android学习笔记(四十):Preference使用
- 安卓开发笔记(二十一):Android Studio如何创建assets目录
- 安卓开发学习笔记(二):如何用Android Stuidio在res资源下创建xml视图文件
- [Android Studio]Android 数据存储-文件存储学习笔记-结合保存QQ账户与密码存储到指定文件中的演练
- Android Studio Error:Could not find com.android.tools.build:gradle