Android 간단 그림판
3114 단어 ExampleCodeExampleCode
1. MainActivity.java 코드
public class MainActivity extends AppCompatActivity {
// 전역상수 선언, 메뉴에서 선택한 것이 선인지 원인지를 구분하기 위해 사용할 것
final static int LINE = 1, CIRCLE = 2;
static int curShape = LINE;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(new MyGraphicView(this));
setTitle("간단 그림판");
}
public boolean onCreateOptionsMenu(Menu menu) {
super.onCreateOptionsMenu(menu);
menu.add(0, 1, 0, "선 그리기");
menu.add(0, 2, 0, "원 그리기");
return true;
}
public boolean onOptionsItemSelected(MenuItem item){
switch (item.getItemId()) {
case 1 :
curShape = LINE; // 선
return true;
case 2 :
curShape = CIRCLE; // 원
return true;
}
return super.onOptionsItemSelected(item);
}
private static class MyGraphicView extends View {
// 시작점과 끝점 좌표를 저장히기 위한 클래스 멤버 변수 4개를 선언
int startX = -1, startY = -1, stopX = -1, stopY = -1;
public MyGraphicView(Context context) {
super(context);
}
@Override
public boolean onTouchEvent(MotionEvent event) {
switch (event.getAction()) {
// 처음 터치했을 때가 선의 시작점이나 원의 중심점이 되는데 이 위치를 기억
case MotionEvent.ACTION_DOWN :
startX = (int) event.getX();
startY = (int) event.getY();
break;
// 화면을 터치한 상태에서 드래그하는 것은 ACTION_MOVE에 해당
case MotionEvent.ACTION_MOVE :
// 화면에서 손가락을 떼면 발생
case MotionEvent.ACTION_UP :
stopX = (int) event.getX();
stopY = (int) event.getY();
// invalidate( )를 호출하면 화면이 무효화되고 onDraw( ) 메서드를 자동으로 실행
this.invalidate();
break;
}
return true;
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
Paint paint = new Paint();
paint.setAntiAlias(true);
// 선의 두께
paint.setStrokeWidth(5);
// 채우기 여부
paint.setStyle(Paint.Style.STROKE);
// 선의 색상
paint.setColor(Color.RED);
switch (curShape) {
case LINE :
canvas.drawLine(startX, startY, stopX, stopY, paint);
break;
case CIRCLE :
int radius = (int) Math.sqrt(Math.pow(stopX - startX, 2)
+ Math.pow(stopY - startY, 2));
canvas.drawCircle(startX, startY, radius, paint);
break;
}
}
}
}
Author And Source
이 문제에 관하여(Android 간단 그림판), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://velog.io/@ruinak_4127/Android-간단-그림판
저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
public class MainActivity extends AppCompatActivity {
// 전역상수 선언, 메뉴에서 선택한 것이 선인지 원인지를 구분하기 위해 사용할 것
final static int LINE = 1, CIRCLE = 2;
static int curShape = LINE;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(new MyGraphicView(this));
setTitle("간단 그림판");
}
public boolean onCreateOptionsMenu(Menu menu) {
super.onCreateOptionsMenu(menu);
menu.add(0, 1, 0, "선 그리기");
menu.add(0, 2, 0, "원 그리기");
return true;
}
public boolean onOptionsItemSelected(MenuItem item){
switch (item.getItemId()) {
case 1 :
curShape = LINE; // 선
return true;
case 2 :
curShape = CIRCLE; // 원
return true;
}
return super.onOptionsItemSelected(item);
}
private static class MyGraphicView extends View {
// 시작점과 끝점 좌표를 저장히기 위한 클래스 멤버 변수 4개를 선언
int startX = -1, startY = -1, stopX = -1, stopY = -1;
public MyGraphicView(Context context) {
super(context);
}
@Override
public boolean onTouchEvent(MotionEvent event) {
switch (event.getAction()) {
// 처음 터치했을 때가 선의 시작점이나 원의 중심점이 되는데 이 위치를 기억
case MotionEvent.ACTION_DOWN :
startX = (int) event.getX();
startY = (int) event.getY();
break;
// 화면을 터치한 상태에서 드래그하는 것은 ACTION_MOVE에 해당
case MotionEvent.ACTION_MOVE :
// 화면에서 손가락을 떼면 발생
case MotionEvent.ACTION_UP :
stopX = (int) event.getX();
stopY = (int) event.getY();
// invalidate( )를 호출하면 화면이 무효화되고 onDraw( ) 메서드를 자동으로 실행
this.invalidate();
break;
}
return true;
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
Paint paint = new Paint();
paint.setAntiAlias(true);
// 선의 두께
paint.setStrokeWidth(5);
// 채우기 여부
paint.setStyle(Paint.Style.STROKE);
// 선의 색상
paint.setColor(Color.RED);
switch (curShape) {
case LINE :
canvas.drawLine(startX, startY, stopX, stopY, paint);
break;
case CIRCLE :
int radius = (int) Math.sqrt(Math.pow(stopX - startX, 2)
+ Math.pow(stopY - startY, 2));
canvas.drawCircle(startX, startY, radius, paint);
break;
}
}
}
}
Author And Source
이 문제에 관하여(Android 간단 그림판), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@ruinak_4127/Android-간단-그림판저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)