give_it
접속 : 1643   Lv. 44

Category

Profile

Counter

  • 오늘 : 440 명
  • 전체 : 871977 명
  • Mypi Ver. 0.3.1 β
[안드로이드] 안드로이드 터치 입력 (1) 2012/11/04 PM 05:21
화면을 터치하여 자유곡선을 그리는 예제를 만들어보자.

소스는 안드로이드프로그래밍정복1[한빛미디어/김상형 지음]



바로 .java로 들어갑니다.

package com.example.touchfreeline;

import java.util.ArrayList;

import android.app.Activity;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.os.Bundle;
import android.view.MotionEvent;
import android.view.View;

public class MainActivity extends Activity {
private MyView vw;
ArrayList arVertex;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
vw = new MyView(this);
setContentView(vw);

arVertex = new ArrayList();
}

//정점 하나에 대한 정보를 가지는 클래스
public class Vertex {
Vertex(float ax, float ay, boolean ad){
x = ax;
y = ay;
Draw = ad;
}
float x;
float y;
boolean Draw;
}

protected class MyView extends View {
Paint mPaint;

public MyView(Context context) {
super(context);

//Paint 객체 미리 초기화
mPaint = new Paint ();
mPaint.setColor(Color.BLACK);
mPaint.setStrokeWidth(3);
mPaint.setAntiAlias(true);
}

public void onDraw(Canvas cavas) {
cavas.drawColor(Color.LTGRAY);

// 정점을 순회하면서 선분으로 잇는다.
for (int i=0;i if (arVertex.get(i).Draw){
cavas.drawLine(arVertex.get(i-1).x, arVertex.get(i-1).y,
arVertex.get(i).x, arVertex.get(i).y, mPaint);
}
}
}

//터치 이동시마다 정점들을 추가한다.
public boolean onTouchEvent(MotionEvent event){
if (event.getAction() == MotionEvent.ACTION_DOWN){
arVertex.add(new Vertex(event.getX(), event.getY(), false));
return true;
}
if(event.getAction() == MotionEvent.ACTION_MOVE) {
arVertex.add(new Vertex(event.getX(), event.getY(), true));
invalidate();
return true;
}
return false;
}
}
}




실기기로 확인해보시면 터치한곳에 선이 생깁니다.

신고

 

RainyNight    친구신청

태그 체크 fail
X