한빛미디어 사이트에 오픈되어있는 예제에
AndroidExam 프로젝트 예제에 첨부 되있는
exam.Input 패키지에 FreeLine.java 에 보면
자유곡선을 그리는 예제인데..
이것도 마찬가지로 모든 그리기 예제가 마찬가지로 Layout을 사용하지 않고 canvas에서만
그리는 방식으로 구현 되어 있습니다.
이것을 Layout에 View를 하나 만들어 id를 정의 해주고 View의 id값을 참조하여 그 참조한 id값으로 View위에서만 그리기가 가능한
이 예제의 그리기 기능을 적용 시키기 위해서 도데체 어떻게 구현 해야 되는걸까요 ㅠ_ㅠ
package exam.Input;
import java.util.*;
import android.app.*;
import android.content.*;
import android.graphics.*;
import android.os.*;
import android.view.*;
public class FreeLine extends Activity {
private MyView vw;
ArrayList<Vertex> arVertex;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
vw = new MyView(this);
setContentView(vw);
arVertex = new ArrayList<Vertex>();
}
// 정점 하나에 대한 정보를 가지는 클래스
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 canvas) {
canvas.drawColor(0xffe0e0e0);
// 정점을 순회하면서 선분으로 잇는다.
for (int i=0;i<arVertex.size();i++) {
if (arVertex.get(i).Draw) {
canvas.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;
}
}
}
개발자님들 도와주세요 ㅠ_ㅠ