package com.Lee.DrawDemo;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import android.app.Activity;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.Bitmap.Config;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Matrix;
import android.graphics.Paint;
import android.graphics.Paint.Style;
import android.os.Bundle;
import android.os.Environment;
import android.util.Log;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.View.OnTouchListener;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.Toast;
public class DrawDemoActivity extends Activity implements OnTouchListener,
OnClickListener {
Bitmap bitmap;
ImageView imageView;
float upX;
float upY;
float downX;
float downY;
int dw = 0;
int dh = 0;
String TAG = "DrawDemoActivity";
Canvas canvas;
Paint paint;
ImageView mImageView;
Bitmap myBitmap;
Matrix matrix;
Button btn1, btn2;
Context context = DrawDemoActivity.this;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
btn1 = (Button) findViewById(R.id.btn1);
btn2 = (Button) findViewById(R.id.btn2);
mImageView = (ImageView) findViewById(R.id.bg_Image);
dw = getWindowManager().getDefaultDisplay().getWidth();
dh = getWindowManager().getDefaultDisplay().getHeight();
paint = new Paint();
paint.setColor(Color.BLACK);
paint.setStrokeWidth(5);
paint.setStyle(Style.FILL_AND_STROKE);
matrix = new Matrix();
myBitmap = Bitmap.createBitmap(dw -100, dh-100, Config.ARGB_8888);
canvas = new Canvas(myBitmap);
canvas.drawColor(Color.GRAY);
mImageView.setImageBitmap(myBitmap);
bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher);
mImageView.setOnTouchListener(this);// 设置监听
btn1.setOnClickListener(this);
btn2.setOnClickListener(this);
}
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Log.e(TAG, "onClick");
switch (v.getId()) {
case R.id.btn2:// 重绘
myBitmap = Bitmap.createBitmap(dw+200, dh+200, Config.ARGB_8888);
canvas = new Canvas(myBitmap);
canvas.drawColor(Color.RED);
mImageView.setImageBitmap(myBitmap);
Log.e(TAG, "Clear");
break;
case R.id.btn1:// 保存已经涂鸦过的图片
if (null != myBitmap) {
String rootpath = Environment.getExternalStorageDirectory()
.getPath();
File dir = new File(rootpath + "/Draw/");// 输出路径
if (!dir.exists()) {
Log.e(TAG, "dir.exists");
dir.mkdirs();
}
File file = new File(rootpath + "/Draw/Test.jpg");// 输出路径
try {
file.createNewFile();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
Log.e(TAG, "createNewFile" + e.toString());
}
FileOutputStream out = null;
try {
out = new FileOutputStream(file);
} catch (FileNotFoundException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
Log.e(TAG, "FileNotFoundException" + e1.toString());
}
// 设置输出流
myBitmap.compress(Bitmap.CompressFormat.JPEG, 100, out);
Toast.makeText(this, "已保存"+file.toString(), Toast.LENGTH_SHORT).show();
try {
out.flush();
out.close();
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
Log.e(TAG, "IOException" + e1.toString());
}
}
Log.e(TAG, "Save");
break;
}
}
@Override
public boolean onTouch(View v, MotionEvent event) {
// TODO Auto-generated method stub
switch (event.getAction()) {
case MotionEvent.ACTION_UP:
canvas.drawBitmap(bitmap, upX, upY, paint);
mImageView.invalidate();
break;
case MotionEvent.ACTION_DOWN:
downX = event.getX();
downY = event.getY();
break;
case MotionEvent.ACTION_MOVE:
upX = event.getX();
upY = event.getY();
canvas.drawLine(downX, downY, upX, upY, paint);
mImageView.invalidate();
downX = upX;
downY = upY;
break;
case MotionEvent.ACTION_CANCEL:
break;
}
return true;
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
简单的画笔绘制功能实现
共32个文件
class:9个
png:8个
xml:4个
需积分: 31 7 下载量 57 浏览量
2012-08-28
15:50:41
上传
评论
收藏 64KB ZIP 举报
温馨提示
利用缓存原理,进行简单的画笔绘制。也可用于扩充到其他图片、图像的绘制组合上
资源推荐
资源详情
资源评论
收起资源包目录
DrawDemo.zip (32个子文件)
DrawDemo
AndroidManifest.xml 1KB
res
layout
main.xml 987B
raw
white.9.png 131B
drawable-ldpi
white.9.png 131B
ic_launcher.png 2KB
drawable-mdpi
ic_launcher.png 3KB
drawable-hdpi
ic_launcher.png 4KB
values
strings.xml 182B
proguard.cfg 1KB
src
com
Lee
DrawDemo
DrawDemoActivity.java 4KB
bin
classes
com
Lee
DrawDemo
BuildConfig.class 341B
R.class 559B
R$layout.class 388B
R$attr.class 334B
R$id.class 475B
R$string.class 421B
R$drawable.class 430B
DrawDemoActivity.class 6KB
R$raw.class 380B
AndroidManifest.xml 1KB
res
raw
drawable-ldpi
ic_launcher.png 2KB
drawable-mdpi
ic_launcher.png 2KB
drawable-hdpi
ic_launcher.png 4KB
jarlist.cache 119B
DrawDemo.apk 17KB
classes.dex 8KB
resources.ap_ 12KB
.classpath 364B
assets
project.properties 360B
.project 844B
gen
com
Lee
DrawDemo
R.java 1KB
BuildConfig.java 158B
共 32 条
- 1
资源评论
思益炫
- 粉丝: 66
- 资源: 30
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功