Android画画板小案例
来源:互联网 发布:最简单的游戏c编程 编辑:程序博客网 时间:2024/04/30 05:10
package com.itheima74.paintdemo;import android.content.Intent;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.Matrix;import android.graphics.Paint;import android.net.Uri;import android.os.Environment;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.view.MotionEvent;import android.view.View;import android.widget.ImageView;import android.widget.Toast;import java.io.File;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;/** * 画画板小案例 */public class MainActivity extends AppCompatActivity { private ImageView iv; private Canvas canvas; private Paint paint; private Bitmap bitmap_copy; private float strokeWidth = 5;// paint默认宽度 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); iv = (ImageView) findViewById(R.id.iv); // 获取原图 Bitmap bitmap_src = BitmapFactory.decodeResource(getResources(), R.drawable.bg); // 创建副本 bitmap_copy = Bitmap.createBitmap(bitmap_src.getWidth(), bitmap_src.getHeight(), bitmap_src.getConfig()); canvas = new Canvas(bitmap_copy); paint = new Paint(); canvas.drawBitmap(bitmap_src, new Matrix(), paint); //将副本设置给iv控件 iv.setImageBitmap(bitmap_copy); // 设置iv的触摸事件 iv.setOnTouchListener(new View.OnTouchListener() { private int downX; private int downY; @Override public boolean onTouch(View v, MotionEvent event) { switch (event.getAction()) { case MotionEvent.ACTION_DOWN: downX = (int) event.getX(); downY = (int) event.getY(); System.out.println("down,x:" + downX + ",y:" + downY); break; case MotionEvent.ACTION_MOVE: int moveX = (int) event.getX(); int moveY = (int) event.getY(); System.out.println("move,x:" + moveX + ",y:" + moveY); // 画线 canvas.drawLine(downX, downY, moveX, moveY, paint); // 画图完毕后展示到iv控件上 iv.setImageBitmap(bitmap_copy); // 更新起点坐标 downX = moveX; downY = moveY; break; case MotionEvent.ACTION_UP: break; } return true;// 返回true,ACTION_MOVE,ACTION_UP才执行 } }); } // 点击按钮,画笔变白色 public void click1(View view) { paint.setColor(Color.WHITE); } // 点击按钮,画笔变红色 public void click2(View view) { paint.setColor(Color.RED); } // 点击按钮,画笔加粗 public void click3(View view) { strokeWidth += 5; if (strokeWidth < 30) { paint.setStrokeWidth(strokeWidth); } } // 点击按钮,画笔变细 public void click4(View view) { strokeWidth -= 5; if (strokeWidth > 0) { paint.setStrokeWidth(strokeWidth); } } // 点击按钮,保存图片到SD卡 public void click5(View view) { FileOutputStream fos = null; try { fos = new FileOutputStream(new File(Environment.getExternalStorageDirectory() + "/" + System.currentTimeMillis() + ".jpg")); boolean compress = bitmap_copy.compress(Bitmap.CompressFormat.JPEG, 100, fos); if (compress) { Toast.makeText(this, "保存成功", Toast.LENGTH_SHORT).show(); // 发送一条无序广播通知图片应用去加载图片 Intent intent = new Intent(); intent.setAction(Intent.ACTION_MEDIA_MOUNTED);// 4.4以前 // intent.setAction(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE);// 4.4以后 intent.setData(Uri.fromFile(Environment.getExternalStorageDirectory())); sendBroadcast(intent); } else { Toast.makeText(this, "保存失败", Toast.LENGTH_SHORT).show(); } } catch (FileNotFoundException e) { e.printStackTrace(); } finally { if (fos != null) { try { fos.close(); } catch (IOException e) { e.printStackTrace(); } } } }}
0 0
- Android画画板小案例
- Android小应用-----画画板
- 画画板案例
- android画画板
- android 画画板
- Android画画板剖析
- Android 画画板
- Android画画板
- android—图片画画板
- Android之Canvas画画板
- android图片_画画板
- android 画画
- 画画板
- 画画板
- 画画板
- android实现简单的画画板
- 2015年第一篇:Android 画画板
- Android图像处理(二) 画画板
- poj 3252 Round Numbers(数位dp)
- android MD新控件之toolbar
- OpenGl入门基础知识-叩开3D的心扉
- [LeetCode] 88. Merge Sorted Array
- 分享大型Java多用户商城系统开发历程
- Android画画板小案例
- webstorm最新可用破解码
- Android APP Push 的实现,别人试坑后的经验
- Linux内核分析课程--通过反汇编一个简单的c程序,分析汇编代码并理解计算机如何工作的
- Revit API 进阶之隐藏Element用户可见参数.
- C# Get方式请求Http
- POJ 3498 最大流
- 【转】Linux系统下为WPS添加字体,实现WPS输入中文
- 安卓 解析xml