今回はViewにタッチで絵を描きたいと思います。
今回は保持用Bitmapを用意したら、イベントのたびに保持用のBitmapに書き込む仕様で絵を描きたいと思います。いくつか絵を描く方法があるので、重さなど、検証して目的に一番あった仕様を利用してみてください。
Viewでタッチで絵を描く[PathのArrayListで線を保持]
AndroidManifest.xmlは
特に変更しません。
レイアウトは直接描画します。描画クラスは
public class TouchPaint extends View { private float oldX = 0f, oldY = 0f; private Paint paint; public TouchPaint(Context context) { super(context); paint = new Paint(); paint.setAntiAlias(true); paint.setColor(Color.LTGRAY); paint.setStyle(Paint.Style.STROKE); paint.setStrokeWidth(8); paint.setStrokeCap(Paint.Cap.ROUND); paint.setStrokeJoin(Paint.Join.ROUND); } Bitmap _bitmap; Canvas _canvas; protected void onSizeChanged(int w, int h, int oldw, int oldh) { super.onSizeChanged(w, h, oldw, oldh); _bitmap = Bitmap.createBitmap(w, h, Bitmap.Config.ARGB_8888); _canvas = new Canvas(_bitmap); } public boolean onTouchEvent(MotionEvent e) { switch (e.getAction()) { case MotionEvent.ACTION_DOWN: oldX = e.getX(); oldY = e.getY(); break; case MotionEvent.ACTION_MOVE: _canvas.drawLine(oldX, oldY, e.getX(), e.getY(), paint); oldX = e.getX(); oldY = e.getY(); invalidate(); break; default: break; } return true; } @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); canvas.drawBitmap(_bitmap, 0, 0, null); } }
メインのクラスは
public class TipStarActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); TouchPaint _tPaint = new TouchPaint(getApplicationContext()); setContentView(_tPaint); } }
下記のようになるはずです!