-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathpenView.java
118 lines (106 loc) · 3.68 KB
/
penView.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
package com.example.myapplication;
/*
参考
http://andante.in/i/%E6%8F%8F%E7%94%BB/%E3%81%8A%E7%B5%B5%E3%81%8B%E3%81%8D%E3%82%A2%E3%83%97%E3%83%AA%E3%81%A7%E6%9B%B8%E3%81%84%E3%81%9F%E7%B5%B5%E3%82%92%E4%BF%9D%E5%AD%98%E3%81%99%E3%82%8B%E3%80%82/
*/
import java.io.File;
import java.io.FileOutputStream;
import java.util.ArrayList;
import android.app.Activity;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.Bitmap.CompressFormat;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Path;
import android.os.Environment;
import android.util.AttributeSet;
import android.util.Log;
import android.view.MotionEvent;
import android.view.View;
import android.widget.Toast;
public class penView extends View {
private float oldx = 0f;
private float oldy = 0f;
private Bitmap bmp = null;
private Canvas bmpCanvas;
private Paint paint;
private static int CanvasHeight;
private static int CanvasWidth;
// private Activity _context;
private void Init(){
paint = new Paint();
paint.setColor(Color.WHITE);
paint.setAntiAlias(true);
paint.setStyle(Paint.Style.STROKE);
paint.setStrokeWidth(20);
paint.setStrokeCap(Paint.Cap.ROUND);
paint.setStrokeJoin(Paint.Join.ROUND);
// CanvasInit();
}
private void CanvasInit(){
bmp = Bitmap.createBitmap(CanvasWidth,CanvasHeight, Bitmap.Config.ARGB_8888);
bmpCanvas = new Canvas(bmp);
bmpCanvas.drawColor(Color.BLACK);
}
public penView(Context context) {
super(context);
// _context = (Activity)context;
Init();
}
public penView(Context context,AttributeSet atr) {
super(context,atr);
// _context = (Activity)context;
Init();
// 線の太さ
}
//ビューに最初にサイズが割り当てられたときに呼び出され、ビューのサイズがなんらかの理由で変更されると再度呼び出されます
protected void onSizeChanged(int w, int h, int oldw, int oldh) {
super.onSizeChanged(w,h,oldw,oldh);
CanvasWidth=w;
CanvasHeight=h;
CanvasInit();
//bmp = Bitmap.createBitmap(w, h, Bitmap.Config.ARGB_8888);
//bamp = Bitmap.createBitmap(28, 28, Bitmap.Config.ARGB_8888);
//bmpCanvas = new Canvas(bmp);
}
private static final String TAG = "ClassificationDemo";
//引数はdisplaylistcanvas
public void onDraw(Canvas canvas) {
// bmp = Bitmap.createBitmap(28, 28, Bitmap.Config.ARGB_8888);
canvas.drawBitmap(bmp, 0, 0, null);
// bamp=bmp;
// bmpCanvas.drawBitmap(bmp, 0, 0, null);
}
public Bitmap getBmp(){
// clearDrawList();
Bitmap temp=bmp;//clearDrawlistでリセットされるので一時退避させる。
clearDrawList();
Log.d(TAG,"getBMP");
return temp;
}
public boolean onTouchEvent(MotionEvent e){
switch(e.getAction()){
case MotionEvent.ACTION_DOWN: //最初のポイント
oldx = e.getX();
oldy = e.getY();
break;
case MotionEvent.ACTION_MOVE: //途中のポイント
bmpCanvas.drawLine(oldx, oldy, e.getX(), e.getY(), paint);
oldx = e.getX();
oldy = e.getY();
invalidate();
break;
default:
break;
}
return true;
}
private void clearDrawList(){
// bmpCanvas.drawColor(Color.WHITE);
//bmp = Bitmap.createBitmap(600,600, Bitmap.Config.ARGB_8888);
CanvasInit();
invalidate();
}
}