在线咨询
微信咨询
服务热线
服务热线:15639912513
TOP
当前位置:
首页 > 新闻中心> 安卓课堂>Android实现画画板案例

Android实现画画板案例

发布时间:2020-02-24 浏览:3663次

郑州app开发画画板案例。布局代码是三个button和一个imagesview下面是图片。

c.png

布局代码就不展示了。下面是java代码。

package cn.xhhkj.image;


import androidx.appcompat.app.AppCompatActivity;


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.graphics.Point;

import android.net.Uri;

import android.os.Bundle;

import android.os.Environment;

import android.util.Log;

import android.view.MotionEvent;

import android.view.View;

import android.widget.ImageView;

import android.graphics.Bitmap.CompressFormat;

import java.io.File;

import java.io.FileNotFoundException;

import java.io.FileOutputStream;


public class MainActivity extends AppCompatActivity {

    private static final String TAG = "结果是";

    private Canvas canvas;

    private Paint paint;

    private ImageView iv_image;

    private Bitmap copybm;

    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);

        init();

        indo();

    }

    public void init(){

        iv_image = findViewById(R.id.iv_image);


    }

    public void indo(){

        Bitmap bitmap = BitmapFactory.decodeResource(getResources(),

                R.drawable.c);

        copybm = Bitmap.createBitmap(bitmap.getWidth(),

                bitmap.getHeight(), bitmap.getConfig());

        canvas = new Canvas(copybm);

        paint = new Paint();

        canvas.drawBitmap(bitmap, new Matrix(), paint);

        iv_image.setImageBitmap(copybm);

        iv_image.setOnTouchListener(new View.OnTouchListener() {

            private float startX;

            private float startY;

            @Override

            public boolean onTouch(View v, MotionEvent event) {

                int action = event.getAction();

                switch (action){

                    case MotionEvent.ACTION_DOWN:


                        startX = event.getX();

                        startY = event.getY();

                        break;

                    case MotionEvent.ACTION_MOVE:

                        float x = event.getX();

                        float y = event.getY();

                        canvas.drawLine(startX, startY, x, y, paint);

                        iv_image.setImageBitmap(copybm);

                        startX = x;

                        startY = y;

                        break;

                    case MotionEvent.ACTION_UP:

                        break;

                    default:

                        break;

                }

                return true;

            }

        });

    }


    public void changeColor(View view) {

        paint.setColor(Color.RED);

    }


    public void bold(View view) {

        paint.setStrokeWidth(5);

    }


    public void save(View view) {

        Log.d(TAG,"保存");

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

        FileOutputStream fos;

        try {

            fos = new FileOutputStream(file);

            copybm.compress(CompressFormat.PNG, 100, fos);

//            Intent intent = new Intent();

//            intent.setAction(Intent.ACTION_MEDIA_MOUNTED);

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

//            sendBroadcast(intent);

        } catch (FileNotFoundException e) {

            e.printStackTrace();

        }

    }

}

以上代码完成后,还需要在清单里面添加权限,android.permission.WRITE_EXTERNAL_STORAGE。这个是往手机存储权限。

TAG
3663
该内容对我有帮助