«

android 画画板

时间:2024-3-2 19:38     作者:韩俊     分类: Android


import java.io.File;

import java.io.FileNotFoundException;

import java.io.FileOutputStream;





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.Canvas;

import android.graphics.Color;

import android.graphics.Paint;

import android.graphics.SweepGradient;

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 baseBitmap;

private Canvas canvas;

private Paint paint;





@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

iv = (ImageView) findViewById(R.id.iv);

paint = new Paint();

paint.setStrokeWidth(5);

paint.setColor(Color.GREEN);



// 创建一个可以被修改的bitmap

baseBitmap = Bitmap.createBitmap(320, 359,

Bitmap.Config.ARGB_8888);

System.out.println("图宽度:"+iv.getWidth());

System.out.println("图宽高:"+iv.getHeight());

canvas = new Canvas(baseBitmap);

canvas.drawColor(Color.WHITE);





// 知道用户手指在屏幕上移动的轨迹

iv.setOnTouchListener(new OnTouchListener() {

//定义手指开始位置的坐标

int startX;

int startY;

@Override

public boolean onTouch(View v, MotionEvent event) {





switch (event.getAction()) {

case MotionEvent.ACTION_DOWN: // 手指第一次接触屏幕

System.out.println("手指按下");



startX = (int) event.getX();

startY = (int) event.getY();

break;

case MotionEvent.ACTION_MOVE: // 手指在屏幕上滑动

System.out.println("手指移动");

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(baseBitmap);

break;

case MotionEvent.ACTION_UP:// 手指离开屏幕





break;

}





return true;

}

});





}





public void save(View view) {

try {

File file = new File(Environment.getExternalStorageDirectory(),System.currentTimeMillis()+".jpg");

FileOutputStream stream = new FileOutputStream(file);

baseBitmap.compress(CompressFormat.JPEG, 100, stream);

stream.close();

Toast.makeText(this, "保存图片成功", 1).show();

//模拟一个消息 通知系统sd卡被重新挂载了.

Intent intent = new Intent();

intent.setAction(Intent.ACTION_MEDIA_MOUNTED);

intent.setData(Uri.fromFile(Environment.getExternalStorageDirectory()));

sendBroadcast(intent);





} catch (Exception e) {

Toast.makeText(this, "保存图片失败", 1).show();

e.printStackTrace();

}







}




}


整理自 ppt和源码

标签: android

热门推荐