图形画画板 如何欺骗系统将保存的图片加载如sd卡
2015-08-16 15:32
375 查看
package com.qq.paint;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.app.Activity;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.Bitmap.CompressFormat;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Matrix;
import android.graphics.Paint;
import android.view.Menu;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnTouchListener;
import android.widget.ImageView;
import android.widget.Toast;
public class MainActivity extends Activity {
private ImageView iv;
private Bitmap alterbitmap;
private Paint paint;
private Canvas canvas;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
iv=(ImageView) findViewById(R.id.iv);
Bitmap bitmap=BitmapFactory.decodeResource(getResources(),R.drawable.pre19 );
alterbitmap = Bitmap.createBitmap(bitmap.getWidth(),
bitmap.getHeight(), bitmap.getConfig());
canvas = new Canvas(alterbitmap);
paint = new Paint();// 3.创建一个画笔。
paint.setColor(Color.RED);// 如果原图没颜色 就默认用黑色
paint.setStrokeWidth(8);
canvas.drawBitmap(bitmap, new Matrix(), paint);
iv.setImageBitmap(alterbitmap);
iv.setOnTouchListener(new OnTouchListener() {
int startX = 0;
int startY = 0;
@Override
public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
startX = (int) event.getX();
startY = (int) event.getY();
break;
case MotionEvent.ACTION_MOVE:
int newX = (int) event.getX();
int newY = (int) event.getY();
canvas.drawLine(startX, startY, newX, newY, paint);
//手指的位置改变了。
startX = (int) event.getX();
startY = (int) event.getY();
iv.setImageBitmap(alterbitmap);
break;
case MotionEvent.ACTION_UP:
break;
}
return true;
}
});
}
public void save(View view){
try {
//在SD卡的外部存储创建文件名为haha.jpg的文件
File file=new File(Environment.getExternalStorageDirectory(),"haha.jpg");
//新建文件输出流
FileOutputStream stream=new FileOutputStream(file);
//压缩保存图片 图片格式 图片质量100原样保存 文件输出流
alterbitmap.compress(CompressFormat.JPEG, 100, stream);
stream.close();
Toast.makeText(this, "保存成功", 0).show();
//欺骗系统sd卡被重新插入
Intent intent=new Intent();
intent.setAction(Intent.ACTION_MEDIA_MOUNTED);//sd卡被挂载
//指定sd卡的路径
intent.setData(Uri.fromFile(Environment.getDataDirectory()));
//发送广播
sendBroadcast(intent);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
Toast.makeText(this, "保存失败", 0).show();
}
}
}
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.app.Activity;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.Bitmap.CompressFormat;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Matrix;
import android.graphics.Paint;
import android.view.Menu;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnTouchListener;
import android.widget.ImageView;
import android.widget.Toast;
public class MainActivity extends Activity {
private ImageView iv;
private Bitmap alterbitmap;
private Paint paint;
private Canvas canvas;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
iv=(ImageView) findViewById(R.id.iv);
Bitmap bitmap=BitmapFactory.decodeResource(getResources(),R.drawable.pre19 );
alterbitmap = Bitmap.createBitmap(bitmap.getWidth(),
bitmap.getHeight(), bitmap.getConfig());
canvas = new Canvas(alterbitmap);
paint = new Paint();// 3.创建一个画笔。
paint.setColor(Color.RED);// 如果原图没颜色 就默认用黑色
paint.setStrokeWidth(8);
canvas.drawBitmap(bitmap, new Matrix(), paint);
iv.setImageBitmap(alterbitmap);
iv.setOnTouchListener(new OnTouchListener() {
int startX = 0;
int startY = 0;
@Override
public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
startX = (int) event.getX();
startY = (int) event.getY();
break;
case MotionEvent.ACTION_MOVE:
int newX = (int) event.getX();
int newY = (int) event.getY();
canvas.drawLine(startX, startY, newX, newY, paint);
//手指的位置改变了。
startX = (int) event.getX();
startY = (int) event.getY();
iv.setImageBitmap(alterbitmap);
break;
case MotionEvent.ACTION_UP:
break;
}
return true;
}
});
}
public void save(View view){
try {
//在SD卡的外部存储创建文件名为haha.jpg的文件
File file=new File(Environment.getExternalStorageDirectory(),"haha.jpg");
//新建文件输出流
FileOutputStream stream=new FileOutputStream(file);
//压缩保存图片 图片格式 图片质量100原样保存 文件输出流
alterbitmap.compress(CompressFormat.JPEG, 100, stream);
stream.close();
Toast.makeText(this, "保存成功", 0).show();
//欺骗系统sd卡被重新插入
Intent intent=new Intent();
intent.setAction(Intent.ACTION_MEDIA_MOUNTED);//sd卡被挂载
//指定sd卡的路径
intent.setData(Uri.fromFile(Environment.getDataDirectory()));
//发送广播
sendBroadcast(intent);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
Toast.makeText(this, "保存失败", 0).show();
}
}
}
相关文章推荐
- mysql 查看当前登陆用户匹配原则及权限user()与current_user()
- [LeetCode] Surrounded Regions
- Jstorm提交任务的流程
- shrio 权限管理filterChainDefinitions过滤器配置
- 内存数据库
- JAVA 设计模式 - 建造者模式
- 2015.6.2
- 屏幕旋转与Activity的生命周期
- MAC JAVA_HOME配置
- ActionScript 3.0 学习(七) AS3 TextFormat及StyleSheet设置文本类TextField字体格式
- 黑马程序员——面向对象08(多态)
- logrotate 介绍及使用
- 懒得笔记6 spring hibernate template
- Android开源项目分享
- 给妹妹们的一封信
- Spring Web Flow 学习笔记(1)
- 2015.6.1
- Java SE 7新特性:创建泛型实例时自动类型推断
- android判断字符中是否包含表情符
- ACM对拍程序