안드로이드 개발 질문/답변
(글 수 45,052)
package android.ajou.amicom;
import android.content.Context; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.util.AttributeSet; import android.view.MotionEvent; import android.view.View;
@SuppressWarnings("unused")
public class Dot extends View{
private static final String UNUSED = "unused";
private static final float RADIUS = 10.0f;
private static final int STATE_NONE = 0;
private static final int STATE_DRAG = 1;
private int mState = STATE_NONE; private float x = 30; private float y = 30; private float mX = 30.0f; private float mY = 30.0f; private float initialX; private float initialY; private float offsetX; private float offsetY; private Paint backgroundPaint; private Paint myPaint;
public Dot(Context context, AttributeSet attrs){
super(context, attrs);
backgroundPaint = new Paint();
backgroundPaint.setColor(Color.YELLOW);
myPaint = new Paint();
myPaint.setColor(Color.BLUE);
myPaint.setAntiAlias(true);
}
@Override
public boolean onTouchEvent(MotionEvent event){
int action = event.getAction();
switch(action){
case MotionEvent.ACTION_DOWN:
final float a = event.getX();
final float b = event.getY();
if(Math.sqrt(Math.pow(a - mX, 2) + Math.pow(b - mY, 2)) <= RADIUS){
mState = STATE_DRAG;
}
return true;
case MotionEvent.ACTION_MOVE:
case MotionEvent.ACTION_UP:
case MotionEvent.ACTION_CANCEL:
x = initialX + event.getX() - offsetX;
y = initialY + event.getY() - offsetY;
break;
}
event.recycle();
return(true);
}
@Override
public void draw(Canvas canvas){
int width = canvas.getWidth(); int height = canvas.getHeight(); canvas.drawRect(0, 0, width, height, backgroundPaint); canvas.drawCircle(x, y, RADIUS, myPaint); invalidate(); } }-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
package android.ajou.amicom;
import java.util.*; import android.app.*; import android.content.*; import android.graphics.*; import android.os.*; import android.view.*;
public class Line 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);
mPaint = new Paint();
mPaint.setColor(Color.WHITE);
mPaint.setStrokeWidth(5);
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;
}
}
}------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
package android.ajou.amicom;
import android.app.Activity; import android.os.Bundle;
public class Drag extends Activity {
private static final String AttributeSet = null; private static final String Context = null;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
new Dot(null, null);
Dot(Context,AttributeSet);
new Line();
Line();
}
private void Line() {
// TODO Auto-generated method stub
}
private void Dot(String context2, String attributeset2) {
// TODO Auto-generated method stub
}
}
다음과 같이 세개의 클래스가 있는데요.
마지막 Drag.java클래스에 Line.java랑 Dot.java 내용을 불러와서 실행 시키려고 하는데요
에뮬이 실행이 안되네요 ㅜㅜ 오류가 크게 있는거 같은데 잘 모르겠어요 ㅜ(문제의 빨간줄)
Line.java랑 Dot.java를 Drag.java에 불러오거나, 한 클래스에 Line.java랑 Dot.java을 코딩할 수 있거나
방법좀 알려주세요 ㅜ
*제가 만들고 싶은건 원을 만들고 그 원이 터치와 드래그만 되면서 이동경로에 잔상(선)을 남기는 것 입니다 ㅜㅜ




Activity를 사용하려면 Intent를 사용해 보세요~~