안드로이드 개발 질문/답변
(글 수 45,052)
1. draw버튼을 클릭했을 경우 에러가 발생하네요
아마 add메소드를 이용해서 overlay를 중첩되게 받아와서 그런것 같은데
내 위치가 표시된 지도를 한번 받아왔다가 draw버튼이 클릭되었을 경우에 다른 overlay를
받아오고 싶은데 이런식으로 하는 것이 불가능한가요?
package com.Messenger;
import java.util.List;
import android.os.Bundle;
import android.view.Gravity;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup.LayoutParams;
import android.widget.FrameLayout;
import com.google.android.maps.MapActivity;
import com.google.android.maps.MapController;
import com.google.android.maps.MapView;
import com.google.android.maps.MyLocationOverlay;
import com.google.android.maps.Overlay;
public class Map_edit extends MapActivity implements OnClickListener {
private FrameLayout frame;
private MapView map;
private MapController controller;
private MyPositionOverlay positionOverlay;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.map_edit);
initMapView();
initZoomControls();
initMyLocation();
positionOverlay = new MyPositionOverlay();
View drawButton = findViewById(R.id.draw_button);
drawButton.setOnClickListener(this);
View prev_drawButton = findViewById(R.id.prev_erase);
prev_drawButton.setOnClickListener(this);
}
/** Find and initialize the map view. */
private void initMapView() {
frame = (FrameLayout) findViewById(R.id.frame);
map = (MapView) findViewById(R.id.mapview);
controller = map.getController();
map.setSatellite(false);
}
/** Get the zoom controls and add them to the bottom of the map. */
private void initZoomControls() {
View zoomControls = map.getZoomControls();
FrameLayout.LayoutParams p = new FrameLayout.LayoutParams(
LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT,
Gravity.BOTTOM + Gravity.CENTER_HORIZONTAL);
frame.addView(zoomControls, p);
}
/** Start tracking the position on the map. */
private void initMyLocation() {
final MyLocationOverlay overlay = new MyLocationOverlay(this, map);
overlay.enableMyLocation();
// overlay.enableCompass(); // no effect in emulator
overlay.runOnFirstFix(new Runnable() {
public void run() {
// Zoom in to current location
controller.setZoom(16);
controller.animateTo(overlay.getMyLocation());
}
});
map.getOverlays().add(overlay);
map.getOverlays().remove(overlay);
}
public void onClick(View v) {
switch (v.getId()) {
case R.id.draw_button:
List<Overlay> overlays = map.getOverlays();
overlays.add(positionOverlay);
break;
/*
case R.id.prev_erase:
List<Overlay> overlays2 = map.getOverlays();
if (overlays2.isEmpty()) {
} else
overlays2.remove(0);
break;
*/
}
}
@Override
protected boolean isRouteDisplayed() {
// Required by MapActivity
return false;
}
}
draw버튼을 클릭하였을 경우 애러 메세지 입니다.
MyPostionOverlay.draw 라는 것은 overlay를 확장하여 터치로 선을 그려주는 draw클래스를 말하는 것입니다
10-28 05:52:45.929: ERROR/AndroidRuntime(9336): Uncaught handler: thread main exiting due to uncaught exception
10-28 05:52:45.969: ERROR/AndroidRuntime(9336): java.lang.NullPointerException
10-28 05:52:45.969: ERROR/AndroidRuntime(9336): at com.Messenger.MyPositionOverlay.draw(MyPositionOverlay.java:59)
10-28 05:52:45.969: ERROR/AndroidRuntime(9336): at com.google.android.maps.Overlay.draw(Overlay.java:179)
10-28 05:52:45.969: ERROR/AndroidRuntime(9336): at com.google.android.maps.OverlayBundle.draw(OverlayBundle.java:45)
10-28 05:52:45.969: ERROR/AndroidRuntime(9336): at com.google.android.maps.MapView.onDraw(MapView.java:471)
10-28 05:52:45.969: ERROR/AndroidRuntime(9336): at android.view.View.draw(View.java:5838)
10-28 05:52:45.969: ERROR/AndroidRuntime(9336): at android.view.ViewGroup.drawChild(ViewGroup.java:1486)
10-28 05:52:45.969: ERROR/AndroidRuntime(9336): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1228)
10-28 05:52:45.969: ERROR/AndroidRuntime(9336): at android.view.ViewGroup.drawChild(ViewGroup.java:1484)
10-28 05:52:45.969: ERROR/AndroidRuntime(9336): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1228)
10-28 05:52:45.969: ERROR/AndroidRuntime(9336): at android.view.ViewGroup.drawChild(ViewGroup.java:1484)
10-28 05:52:45.969: ERROR/AndroidRuntime(9336): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1228)
10-28 05:52:45.969: ERROR/AndroidRuntime(9336): at android.view.View.draw(View.java:5841)
10-28 05:52:45.969: ERROR/AndroidRuntime(9336): at android.widget.FrameLayout.draw(FrameLayout.java:352)
10-28 05:52:45.969: ERROR/AndroidRuntime(9336): at android.view.ViewGroup.drawChild(ViewGroup.java:1486)
10-28 05:52:45.969: ERROR/AndroidRuntime(9336): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1228)
10-28 05:52:45.969: ERROR/AndroidRuntime(9336): at android.view.ViewGroup.drawChild(ViewGroup.java:1484)
10-28 05:52:45.969: ERROR/AndroidRuntime(9336): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1228)
10-28 05:52:45.969: ERROR/AndroidRuntime(9336): at android.view.View.draw(View.java:5841)
10-28 05:52:45.969: ERROR/AndroidRuntime(9336): at android.widget.FrameLayout.draw(FrameLayout.java:352)
10-28 05:52:45.969: ERROR/AndroidRuntime(9336): at com.android.internal.policy.impl.PhoneWindow$DecorView.draw(PhoneWindow.java:1847)
10-28 05:52:45.969: ERROR/AndroidRuntime(9336): at android.view.ViewRoot.draw(ViewRoot.java:1217)
10-28 05:52:45.969: ERROR/AndroidRuntime(9336): at android.view.ViewRoot.performTraversals(ViewRoot.java:1030)
10-28 05:52:45.969: ERROR/AndroidRuntime(9336): at android.view.ViewRoot.handleMessage(ViewRoot.java:1482)
10-28 05:52:45.969: ERROR/AndroidRuntime(9336): at android.os.Handler.dispatchMessage(Handler.java:99)
10-28 05:52:45.969: ERROR/AndroidRuntime(9336): at android.os.Looper.loop(Looper.java:123)
10-28 05:52:45.969: ERROR/AndroidRuntime(9336): at android.app.ActivityThread.main(ActivityThread.java:3948)
10-28 05:52:45.969: ERROR/AndroidRuntime(9336): at java.lang.reflect.Method.invokeNative(Native Method)
10-28 05:52:45.969: ERROR/AndroidRuntime(9336): at java.lang.reflect.Method.invoke(Method.java:521)
10-28 05:52:45.969: ERROR/AndroidRuntime(9336): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:782)
10-28 05:52:45.969: ERROR/AndroidRuntime(9336): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:540)
10-28 05:52:45.969: ERROR/AndroidRuntime(9336): at dalvik.system.NativeStart.main(Native Method)
2. canvas.drawLine으로 두 포인트를 연결하는 선을 그리는데 선 굵기가 너무 얇습니다.
선을 조금 두껍게 할 수 있는 메소드가 있나요?? paint를 빨간색으로 표시된 부분처럼 구현하였는데
선 스타일이 색깔만 바뀌고 여전히 변하지 않네요
package com.Messenger;
import com.Messenger.Capture;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.MaskFilter;
import android.graphics.Paint;
import android.graphics.Path;
import android.graphics.Point;
import android.graphics.RectF;
import android.location.Location;
import android.view.MotionEvent;
import com.google.android.maps.GeoPoint;
import com.google.android.maps.MapView;
import com.google.android.maps.Overlay;
import com.google.android.maps.Projection;
public class MyPositionOverlay extends Overlay {
private float trX, trY;
private float[] mX = new float[100];
private float[] mY = new float[100];
int path_idx = 0;
private float[] prevX = new float[100];
private float[] prevY = new float[100];
private Paint mPaint;
private Bitmap mBitmap;
private Bitmap backImg;
private Bitmap save;
private Canvas mCanvas;
private Path mPath;
private MaskFilter mEmboss;
private Capture capture;
/** Get the position location */
public Location getLocation() {
return location;
}
/** Set the position location */
public void setLocation(Location location) {
this.location = location;
}
Location location;
private final int mRadius = 5;
@Override
public void draw(Canvas canvas, MapView mapView, boolean shadow) {
Projection projection = mapView.getProjection();
System.out.println("drawwwwwwwwwwwwwwwwwwww");
if (shadow == false) {
// Get the current location
Double latitude = location.getLatitude() * 1E6;
Double longitude = location.getLongitude() * 1E6;
GeoPoint geoPoint = new GeoPoint(latitude.intValue(), longitude
.intValue());
// Convert the location to screen pixels
Point point = new Point();
projection.toPixels(geoPoint, point);
RectF oval = new RectF(point.x - mRadius, point.y - mRadius,
point.x + mRadius, point.y + mRadius);
// Setup the paint
Paint paint = new Paint();
paint.setARGB(255, 255, 255, 255);
paint.setAntiAlias(true);
paint.setFakeBoldText(true);
Paint backPaint = new Paint();
backPaint.setARGB(180, 50, 50, 50);
backPaint.setAntiAlias(true);
RectF backRect = new RectF(point.x + 2 + mRadius, point.y - 3*mRadius,
point.x + 65, point.y + mRadius);
mBitmap = Bitmap.createBitmap(640, 480, Bitmap.Config.ALPHA_8);
mBitmap.eraseColor(0);
mPath = new Path();
mPaint = new Paint();
mPaint.setARGB(255, 255, 0, 0);
mPaint.setAntiAlias(true);
mPaint.setMaskFilter(mEmboss);
mCanvas = new Canvas(mBitmap);
System.out.println("onDraw start--------------");
if (path_idx > 1) {
System.out.println("path_idx-1=" + (path_idx - 1));
System.out.println("touch_start prevX=" + prevX); // prev
System.out.println("touch_start prevY=" + prevY);
System.out.println("mX[path_idx-1]=" + mX[path_idx - 1]); // current
System.out.println("mY[path_idx-1]=" + mY[path_idx - 1]);
int i;
for (i = 2; i <= path_idx; i++) {
canvas.drawLine(prevX[i-1], prevY[i-1], mX[i-1], mY[i-1], mPaint);
}
}
System.out.println("onDraw end--------------");
// Draw the marker
canvas.drawOval(oval, paint);
canvas.drawRoundRect(backRect, 5, 5, backPaint);
canvas.drawText("Here I Am", point.x + 2*mRadius, point.y, paint);
//canvas.drawPath(mPath, paint);
}
super.draw(canvas, mapView, shadow);
}
private void touch_start(float x, float y) {
System.out.println("touch_start");
mPath.reset();
//mPath.moveTo(x, y);
mX [path_idx] = x;
mY [path_idx] = y;
if(path_idx > 0)
{
prevX[path_idx] = mX [path_idx-1];
prevY[path_idx] = mY [path_idx-1];
//System.out.println("touch_start path_idx=" +path_idx);
//System.out.println("touch_start prevX=" +prevX);
//System.out.println("touch_start prevY=" +prevY);
//System.out.println("touch_start mX[path_idx]=" +mX[path_idx]);
//System.out.println("touch_start mY[path_idx]=" +mY[path_idx]);
}
path_idx++;
System.out.println("touch_end");
}
private void touch_up() {
capture = new Capture();
System.out.println("touch_up");
mPath.lineTo(mX[path_idx], mY[path_idx]);
// commit the path to our offscreen
mCanvas.drawPath(mPath, mPaint);
// kill this so we don't double draw
//mCanvas.drawLine(mX[path_idx], mY[path_idx], mX[path_idx++], mY[path_idx++], mPaint);
mPath.reset();
}
@Override
public boolean onTouchEvent(MotionEvent event, MapView mapView) {
System.out.println("start onTouch");
trX = event.getX();
trY = event.getY();
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
touch_start(trX, trY);
//invalidate();
break;
/*case MotionEvent.ACTION_MOVE:
touch_move(trX, trY);
break;*/
case MotionEvent.ACTION_UP:
touch_up();
//invalidate();
break;
}
return true;
}
@Override
public boolean onTap(GeoPoint point, MapView mapView) {
return false;
}
}
아마 add메소드를 이용해서 overlay를 중첩되게 받아와서 그런것 같은데
내 위치가 표시된 지도를 한번 받아왔다가 draw버튼이 클릭되었을 경우에 다른 overlay를
받아오고 싶은데 이런식으로 하는 것이 불가능한가요?
package com.Messenger;
import java.util.List;
import android.os.Bundle;
import android.view.Gravity;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup.LayoutParams;
import android.widget.FrameLayout;
import com.google.android.maps.MapActivity;
import com.google.android.maps.MapController;
import com.google.android.maps.MapView;
import com.google.android.maps.MyLocationOverlay;
import com.google.android.maps.Overlay;
public class Map_edit extends MapActivity implements OnClickListener {
private FrameLayout frame;
private MapView map;
private MapController controller;
private MyPositionOverlay positionOverlay;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.map_edit);
initMapView();
initZoomControls();
initMyLocation();
positionOverlay = new MyPositionOverlay();
View drawButton = findViewById(R.id.draw_button);
drawButton.setOnClickListener(this);
View prev_drawButton = findViewById(R.id.prev_erase);
prev_drawButton.setOnClickListener(this);
}
/** Find and initialize the map view. */
private void initMapView() {
frame = (FrameLayout) findViewById(R.id.frame);
map = (MapView) findViewById(R.id.mapview);
controller = map.getController();
map.setSatellite(false);
}
/** Get the zoom controls and add them to the bottom of the map. */
private void initZoomControls() {
View zoomControls = map.getZoomControls();
FrameLayout.LayoutParams p = new FrameLayout.LayoutParams(
LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT,
Gravity.BOTTOM + Gravity.CENTER_HORIZONTAL);
frame.addView(zoomControls, p);
}
/** Start tracking the position on the map. */
private void initMyLocation() {
final MyLocationOverlay overlay = new MyLocationOverlay(this, map);
overlay.enableMyLocation();
// overlay.enableCompass(); // no effect in emulator
overlay.runOnFirstFix(new Runnable() {
public void run() {
// Zoom in to current location
controller.setZoom(16);
controller.animateTo(overlay.getMyLocation());
}
});
map.getOverlays().add(overlay);
map.getOverlays().remove(overlay);
}
public void onClick(View v) {
switch (v.getId()) {
case R.id.draw_button:
List<Overlay> overlays = map.getOverlays();
overlays.add(positionOverlay);
break;
/*
case R.id.prev_erase:
List<Overlay> overlays2 = map.getOverlays();
if (overlays2.isEmpty()) {
} else
overlays2.remove(0);
break;
*/
}
}
@Override
protected boolean isRouteDisplayed() {
// Required by MapActivity
return false;
}
}
draw버튼을 클릭하였을 경우 애러 메세지 입니다.
MyPostionOverlay.draw 라는 것은 overlay를 확장하여 터치로 선을 그려주는 draw클래스를 말하는 것입니다
10-28 05:52:45.929: ERROR/AndroidRuntime(9336): Uncaught handler: thread main exiting due to uncaught exception
10-28 05:52:45.969: ERROR/AndroidRuntime(9336): java.lang.NullPointerException
10-28 05:52:45.969: ERROR/AndroidRuntime(9336): at com.Messenger.MyPositionOverlay.draw(MyPositionOverlay.java:59)
10-28 05:52:45.969: ERROR/AndroidRuntime(9336): at com.google.android.maps.Overlay.draw(Overlay.java:179)
10-28 05:52:45.969: ERROR/AndroidRuntime(9336): at com.google.android.maps.OverlayBundle.draw(OverlayBundle.java:45)
10-28 05:52:45.969: ERROR/AndroidRuntime(9336): at com.google.android.maps.MapView.onDraw(MapView.java:471)
10-28 05:52:45.969: ERROR/AndroidRuntime(9336): at android.view.View.draw(View.java:5838)
10-28 05:52:45.969: ERROR/AndroidRuntime(9336): at android.view.ViewGroup.drawChild(ViewGroup.java:1486)
10-28 05:52:45.969: ERROR/AndroidRuntime(9336): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1228)
10-28 05:52:45.969: ERROR/AndroidRuntime(9336): at android.view.ViewGroup.drawChild(ViewGroup.java:1484)
10-28 05:52:45.969: ERROR/AndroidRuntime(9336): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1228)
10-28 05:52:45.969: ERROR/AndroidRuntime(9336): at android.view.ViewGroup.drawChild(ViewGroup.java:1484)
10-28 05:52:45.969: ERROR/AndroidRuntime(9336): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1228)
10-28 05:52:45.969: ERROR/AndroidRuntime(9336): at android.view.View.draw(View.java:5841)
10-28 05:52:45.969: ERROR/AndroidRuntime(9336): at android.widget.FrameLayout.draw(FrameLayout.java:352)
10-28 05:52:45.969: ERROR/AndroidRuntime(9336): at android.view.ViewGroup.drawChild(ViewGroup.java:1486)
10-28 05:52:45.969: ERROR/AndroidRuntime(9336): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1228)
10-28 05:52:45.969: ERROR/AndroidRuntime(9336): at android.view.ViewGroup.drawChild(ViewGroup.java:1484)
10-28 05:52:45.969: ERROR/AndroidRuntime(9336): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1228)
10-28 05:52:45.969: ERROR/AndroidRuntime(9336): at android.view.View.draw(View.java:5841)
10-28 05:52:45.969: ERROR/AndroidRuntime(9336): at android.widget.FrameLayout.draw(FrameLayout.java:352)
10-28 05:52:45.969: ERROR/AndroidRuntime(9336): at com.android.internal.policy.impl.PhoneWindow$DecorView.draw(PhoneWindow.java:1847)
10-28 05:52:45.969: ERROR/AndroidRuntime(9336): at android.view.ViewRoot.draw(ViewRoot.java:1217)
10-28 05:52:45.969: ERROR/AndroidRuntime(9336): at android.view.ViewRoot.performTraversals(ViewRoot.java:1030)
10-28 05:52:45.969: ERROR/AndroidRuntime(9336): at android.view.ViewRoot.handleMessage(ViewRoot.java:1482)
10-28 05:52:45.969: ERROR/AndroidRuntime(9336): at android.os.Handler.dispatchMessage(Handler.java:99)
10-28 05:52:45.969: ERROR/AndroidRuntime(9336): at android.os.Looper.loop(Looper.java:123)
10-28 05:52:45.969: ERROR/AndroidRuntime(9336): at android.app.ActivityThread.main(ActivityThread.java:3948)
10-28 05:52:45.969: ERROR/AndroidRuntime(9336): at java.lang.reflect.Method.invokeNative(Native Method)
10-28 05:52:45.969: ERROR/AndroidRuntime(9336): at java.lang.reflect.Method.invoke(Method.java:521)
10-28 05:52:45.969: ERROR/AndroidRuntime(9336): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:782)
10-28 05:52:45.969: ERROR/AndroidRuntime(9336): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:540)
10-28 05:52:45.969: ERROR/AndroidRuntime(9336): at dalvik.system.NativeStart.main(Native Method)
2. canvas.drawLine으로 두 포인트를 연결하는 선을 그리는데 선 굵기가 너무 얇습니다.
선을 조금 두껍게 할 수 있는 메소드가 있나요?? paint를 빨간색으로 표시된 부분처럼 구현하였는데
선 스타일이 색깔만 바뀌고 여전히 변하지 않네요
package com.Messenger;
import com.Messenger.Capture;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.MaskFilter;
import android.graphics.Paint;
import android.graphics.Path;
import android.graphics.Point;
import android.graphics.RectF;
import android.location.Location;
import android.view.MotionEvent;
import com.google.android.maps.GeoPoint;
import com.google.android.maps.MapView;
import com.google.android.maps.Overlay;
import com.google.android.maps.Projection;
public class MyPositionOverlay extends Overlay {
private float trX, trY;
private float[] mX = new float[100];
private float[] mY = new float[100];
int path_idx = 0;
private float[] prevX = new float[100];
private float[] prevY = new float[100];
private Paint mPaint;
private Bitmap mBitmap;
private Bitmap backImg;
private Bitmap save;
private Canvas mCanvas;
private Path mPath;
private MaskFilter mEmboss;
private Capture capture;
/** Get the position location */
public Location getLocation() {
return location;
}
/** Set the position location */
public void setLocation(Location location) {
this.location = location;
}
Location location;
private final int mRadius = 5;
@Override
public void draw(Canvas canvas, MapView mapView, boolean shadow) {
Projection projection = mapView.getProjection();
System.out.println("drawwwwwwwwwwwwwwwwwwww");
if (shadow == false) {
// Get the current location
Double latitude = location.getLatitude() * 1E6;
Double longitude = location.getLongitude() * 1E6;
GeoPoint geoPoint = new GeoPoint(latitude.intValue(), longitude
.intValue());
// Convert the location to screen pixels
Point point = new Point();
projection.toPixels(geoPoint, point);
RectF oval = new RectF(point.x - mRadius, point.y - mRadius,
point.x + mRadius, point.y + mRadius);
// Setup the paint
Paint paint = new Paint();
paint.setARGB(255, 255, 255, 255);
paint.setAntiAlias(true);
paint.setFakeBoldText(true);
Paint backPaint = new Paint();
backPaint.setARGB(180, 50, 50, 50);
backPaint.setAntiAlias(true);
RectF backRect = new RectF(point.x + 2 + mRadius, point.y - 3*mRadius,
point.x + 65, point.y + mRadius);
mBitmap = Bitmap.createBitmap(640, 480, Bitmap.Config.ALPHA_8);
mBitmap.eraseColor(0);
mPath = new Path();
mPaint = new Paint();
mPaint.setARGB(255, 255, 0, 0);
mPaint.setAntiAlias(true);
mPaint.setMaskFilter(mEmboss);
mCanvas = new Canvas(mBitmap);
System.out.println("onDraw start--------------");
if (path_idx > 1) {
System.out.println("path_idx-1=" + (path_idx - 1));
System.out.println("touch_start prevX=" + prevX); // prev
System.out.println("touch_start prevY=" + prevY);
System.out.println("mX[path_idx-1]=" + mX[path_idx - 1]); // current
System.out.println("mY[path_idx-1]=" + mY[path_idx - 1]);
int i;
for (i = 2; i <= path_idx; i++) {
canvas.drawLine(prevX[i-1], prevY[i-1], mX[i-1], mY[i-1], mPaint);
}
}
System.out.println("onDraw end--------------");
// Draw the marker
canvas.drawOval(oval, paint);
canvas.drawRoundRect(backRect, 5, 5, backPaint);
canvas.drawText("Here I Am", point.x + 2*mRadius, point.y, paint);
//canvas.drawPath(mPath, paint);
}
super.draw(canvas, mapView, shadow);
}
private void touch_start(float x, float y) {
System.out.println("touch_start");
mPath.reset();
//mPath.moveTo(x, y);
mX [path_idx] = x;
mY [path_idx] = y;
if(path_idx > 0)
{
prevX[path_idx] = mX [path_idx-1];
prevY[path_idx] = mY [path_idx-1];
//System.out.println("touch_start path_idx=" +path_idx);
//System.out.println("touch_start prevX=" +prevX);
//System.out.println("touch_start prevY=" +prevY);
//System.out.println("touch_start mX[path_idx]=" +mX[path_idx]);
//System.out.println("touch_start mY[path_idx]=" +mY[path_idx]);
}
path_idx++;
System.out.println("touch_end");
}
private void touch_up() {
capture = new Capture();
System.out.println("touch_up");
mPath.lineTo(mX[path_idx], mY[path_idx]);
// commit the path to our offscreen
mCanvas.drawPath(mPath, mPaint);
// kill this so we don't double draw
//mCanvas.drawLine(mX[path_idx], mY[path_idx], mX[path_idx++], mY[path_idx++], mPaint);
mPath.reset();
}
@Override
public boolean onTouchEvent(MotionEvent event, MapView mapView) {
System.out.println("start onTouch");
trX = event.getX();
trY = event.getY();
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
touch_start(trX, trY);
//invalidate();
break;
/*case MotionEvent.ACTION_MOVE:
touch_move(trX, trY);
break;*/
case MotionEvent.ACTION_UP:
touch_up();
//invalidate();
break;
}
return true;
}
@Override
public boolean onTap(GeoPoint point, MapView mapView) {
return false;
}
}