画画板案例

来源:互联网 发布:js怎么获取css样式 编辑:程序博客网 时间:2024/05/01 18:15

画板案例

① 准备一个布局文件

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main"android:layout_width="match_parent" android:layout_height="match_parent"android:paddingBottom="@dimen/activity_vertical_margin"android:paddingLeft="@dimen/activity_horizontal_margin"android:paddingRight="@dimen/activity_horizontal_margin"android:paddingTop="@dimen/activity_vertical_margin"android:orientation="vertical"tools:context="com.example.it.MainActivity"><LinearLayout    android:layout_width="match_parent"    android:layout_height="wrap_content">    <Button        android:text="修改颜色"        android:onClick="color"        android:layout_width="wrap_content"        android:layout_height="wrap_content" />    <Button        android:text="粗细+1"        android:onClick="size"        android:layout_width="wrap_content"        android:layout_height="wrap_content" />    <Button        android:text="保存图片"        android:onClick="save"        android:layout_width="wrap_content"        android:layout_height="wrap_content" /></LinearLayout><ImageView    android:id="@+id/iv_bg"    android:layout_width="wrap_content"    android:layout_height="wrap_content" /></LinearLayout>

② 核心代码

package com.example.it;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.os.SystemClock;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.util.Log;import android.view.MotionEvent;import android.view.View;import android.widget.ImageView;import java.io.File;import java.io.FileNotFoundException;import java.io.FileOutputStream;public class MainActivity extends AppCompatActivity {private  final String TAG = getClass().getSimpleName();private ImageView iv_show;private Bitmap copyBm;private float x;private float y;private Paint paint;private int paintsize = 1;private FileOutputStream fos;@Overrideprotected void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    setContentView(R.layout.activity_main);    //初始化控件    iv_show = (ImageView) findViewById(R.id.iv_bg);    //创建一个空白的bitmap    Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.bg);    copyBm = Bitmap.createBitmap(bitmap.getWidth(), bitmap.getHeight(), bitmap.getConfig());    //创建画布    final Canvas canvas = new Canvas(copyBm);    //使用画布绘制图片    paint = new Paint();    canvas.drawBitmap(bitmap,new Matrix(), paint);    iv_show.setImageBitmap(copyBm);    //为画笔在屏幕上移动设置监听事件    iv_show.setOnTouchListener(new View.OnTouchListener() {        @Override        public boolean onTouch(View v, MotionEvent event) {            //获取当前事件的类型            int action = event.getAction();            switch (action){                case MotionEvent.ACTION_DOWN:                    //如果是手指按下时,记录一下手指的位置                    x = event.getX();                    y = event.getY();                    Log.e(TAG,x+"******"+y);                    break;                case MotionEvent.ACTION_MOVE:                    //如果手指正在移动时                    float x1 = event.getX();                    float y1 = event.getY();                    canvas.drawLine(x,y,x1,y1, paint);                    x = x1;                    y = y1;                    Log.e(TAG,x1+"**********"+y1);                    break;                case MotionEvent.ACTION_UP:                    break;            }            iv_show.setImageBitmap(copyBm);            return true;        }    });}//修改颜色public void color(View view) {    paint.setColor(Color.RED);}//修改线条粗细public void size(View view) {    paintsize+=1;    paint.setStrokeWidth(paintsize);}//保存图片public void save(View view) {    //设置图片保存的位置    File file = new File(Environment.getExternalStorageDirectory(), SystemClock.currentThreadTimeMillis()+".png");    try {        fos = new FileOutputStream(file);    } catch (FileNotFoundException e) {        e.printStackTrace();    }    //设置参数保存的质量    copyBm.compress(Bitmap.CompressFormat.PNG,100,fos);    //定义一个意图,通过发出广播告诉系统扫描指定的位置的文件    Intent intent = new Intent();    intent.setAction(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE);    intent.setData(Uri.fromFile(file));    sendBroadcast(intent);}}

③ 权限信息

    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
0 0
原创粉丝点击