package com.example.jungsengup.paint;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.Path;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.Menu;
import android.view.MenuItem;
import android.view.MotionEvent;
import android.view.View;
import android.widget.LinearLayout;
import android.widget.Toast;
import static com.example.jungsengup.paint.R.layout.activity_main;
public class MainActivity extends AppCompatActivity {
MyView m;
@Override
protected void onCreate(Bundle savedInstanceState) {
setContentView(activity_main);
super.onCreate(savedInstanceState);
LinearLayout ll = new LinearLayout(this); // 여러 뷰를 넣을 컨테이너
ll.setOrientation(LinearLayout.VERTICAL);
m = new MyView(MainActivity.this);
ll.addView(m); // 레이아웃에 포함
setContentView(ll);
} //레이아웃 생성
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu_test, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
if (id == R.id.save_button) {
Toast.makeText(this, "저 장", Toast.LENGTH_SHORT).show();
return true;
}
if (id == R.id.exit_button) {
Toast.makeText(this, "종 료", Toast.LENGTH_SHORT).show();
android.os.Process.killProcess(android.os.Process.myPid());
}
if (id == R.id.elase) {
Toast.makeText(this, "지우개", Toast.LENGTH_SHORT).show();
}
if (id == R.id.color) {
Toast.makeText(this, "회색", Toast.LENGTH_SHORT).show();
m.paint.setStyle(Paint.Style.STROKE); // 선을 긋게 하는 부분
m.paint.setStrokeWidth(10f);// 선의 굵기 설정
m.paint.setColor(0xaa999999);
}
if (id == R.id.color2) {
Toast.makeText(this, "파란색", Toast.LENGTH_SHORT).show();
m.paint.setStyle(Paint.Style.STROKE); // 선을 긋게 하는 부분
m.paint.setStrokeWidth(10f);// 선의 굵기 설정
m.paint.setColor(0xaa000099);
}
if (id == R.id.color3) {
Toast.makeText(this, "검정", Toast.LENGTH_SHORT).show();
m.paint.setStyle(Paint.Style.STROKE); // 선을 긋게 하는 부분
m.paint.setStrokeWidth(10f);// 선의 굵기 설정
m.paint.setColor(0xffffffff);
}
return super.onOptionsItemSelected(item);
}
}
class MyView extends View{ // 앞서 만든 레이아웃에 저장하기 위한 클래스
public Paint paint = new Paint();
Path path = new Path(); // 이미 그어진 선을 저장하기 위한 객체
public MyView(Context context) {
super(context);
paint.setStyle(Paint.Style.STROKE); // 선을 긋게 하는 부분
paint.setStrokeWidth(10f);// 선의 굵기 설정
paint.setColor(0xffffffff);
}
@Override
protected void onDraw(Canvas canvas) { // 화면을 그려주는 메서드
canvas.drawPath(path, paint); // 저장된 path 를 그려라
}
@Override
public boolean onTouchEvent(MotionEvent event) {
float x = event.getX();
float y = event.getY();
switch(event.getAction()) {
case MotionEvent.ACTION_DOWN:
path.moveTo(x, y); // 위치 이동
break;
case MotionEvent.ACTION_MOVE:
path.lineTo(x, y); // 위치에 선을 남기는 부분
break;
case MotionEvent.ACTION_UP:
break;
}
invalidate(); // 화면을 다시 만들어라
return true;
}
}
코드에서 색상을 바꾸면 이전에 있던것도 바뀌고 검정색이 ffffff아닌가요? 그리고 지우개 기능을 어떻게 넣는지 모르겟습니다.