图片画画板

AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="visizen.com.paint">

    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>
    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

MainActivity

package visizen.com.paint;

import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.net.Uri;
import android.os.Environment;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.MotionEvent;
import android.view.View;
import android.widget.ImageView;
import android.widget.Toast;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;

public class MainActivity extends AppCompatActivity {
    /**
     * ImageView
     */
    private ImageView iv;
    private Paint paint;
    private Bitmap bitmap;
    private Canvas canvas;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

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

        //初始化,画笔
        paint = new Paint();
        paint.setColor(Color.RED);
        paint.setStrokeWidth(2);

        bitmap = Bitmap.createBitmap(320, 590, Bitmap.Config.ARGB_8888);

        canvas = new Canvas(bitmap);
        canvas.drawColor(Color.WHITE);

        iv.setOnTouchListener(new View.OnTouchListener() {
            int startX;
            int startY;

            @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(bitmap);
                        break;
                    //手指弹起
                    case MotionEvent.ACTION_UP:

                        break;
                }
                //一定要返回true,才会执行
                return true;
            }
        });
    }

    /**
     * 保存图片
     *
     * @param view
     */
    public void saveImage(View view) {
        try {
            File file = new File(Environment.getExternalStorageDirectory(), System.currentTimeMillis() + ".jpg");

            FileOutputStream fos = new FileOutputStream(file);

            bitmap.compress(Bitmap.CompressFormat.JPEG, 100, fos);

            fos.close();

            Toast.makeText(this, "保存成功!", Toast.LENGTH_SHORT).show();

            //模拟挂载储存设置,让相册刷新,不然后刚保存的图片看不见
            Intent intent = new Intent();
            intent.setAction(Intent.ACTION_MEDIA_MOUNTED);
            intent.setData(Uri.fromFile(Environment.getExternalStorageDirectory()));
            sendBroadcast(intent);

        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

 

posted on 2015-12-23 17:21  jayhtt  阅读(89)  评论(0)    收藏  举报