package com.ewebapps;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.view.View;
public class Dot extends View {
private final float x;
private final float y;
private final int r;
private final Paint mPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
private final Paint mWhite = new Paint(Paint.ANTI_ALIAS_FLAG);
public Dot(Context context, float x, float y, int r) {
super(context);
mPaint.setColor(0xFF000000); //Black
mWhite.setColor(0xFFFFFFFF); //White
this.x = x;
this.y = y;
this.r = r;
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
canvas.drawCircle(x, y, r+2, mWhite); //White stroke.
canvas.drawCircle(x, y, r, mPaint); //Black circle.
}
}
1870 次
3 に答える
1
ええと...独自のビューを作成するとき、それを達成するための最良の方法はdispatchTouchEvent
メソッドをオーバーライドすることです。私を信じて、いくつかのシナリオではうまく機能しませんsetOnTouchListener
。onTouchEvent
で行う必要があるのはこれだけですView
。
@Override
public boolean dispatchTouchEvent(MotionEvent event) {
// put your logic here
return super.dispatchTouchEvent(event);
}
于 2010-11-02T01:26:45.223 に答える
0
onTouchListenerはクリックされたビューのみを通知し、正確な場所は通知しないため、Aaron Saundersの回答はビュー(ボタンなど)に対して機能します。ボタンを作成せずにイベントがどこにあったかを正確に知る必要がある場合は、アクティビティクラスでこれを試してください。
@Override
onTouchEvent(MotionEvent event) {
int _x = event.getX();
int _y = event.getY();
// do stuff
}
注:onTouchEventは、イベントがビューによって処理されない場合にのみ呼び出されます。
ドキュメンテーション
(誰かが改行を追加する方法を教えてもらえますか?)
于 2010-11-02T01:16:33.760 に答える
0
于 2010-11-02T00:17:11.863 に答える