挨拶1とすべて、ストアMotionEvent値
。
MotionEvent
のACTION_MOVE
の中で私はX & Y
を私のCustomViewに渡し、座標/形状のそれぞれに対して固有のID値を返すメソッドを呼び出します。
指をあるシェイプから別のシェイプにドラッグすると、期待通りに複数の値がコンソールに返され、これらの値を後で使用するためにArray
に保存します。
6月22日7時28分:私が午前問題は、コンソールが4
コンソール出力がどのように見える示した場合に、それが唯一の店舗一つの値、私は値を格納しようとするということです:56.173 zar.myapp I /のSystem.out:値:354
6月22日07:28:56.193 zar.myapp I /のSystem.out:値:858
6月22日07:28:56.213 zar.myapp I/System.out:値:989
06-22 07:28:56.213 z ar.myapp I /のSystem.out:値:789
コード:
ArrayList XYcoords = new ArrayList();
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
return true;
case MotionEvent.ACTION_MOVE:
///Single value for each finger movement.
DotView endView = getChildForTouch((TableLayout) v, x, y);
XYcoords.add(endView.getId());
break;
case MotionEvent.ACTION_UP:
///I tried adding them from here as well.
///When I check the size of `XYcoords` it allways return 1
System.out.println("Array Size: " + XYcoords.size());
break;
DotViewクラス:ユニークなIDを割り当てることがDotview.setId(i);
:私は私が呼ぶ私のテーブルグリッドを構築し、私のMainActivity
で各セル(検証済み)に送信する。 (私は、関連するコードを共有):
private static class DotView extends View {
private static final int DEFAULT_SIZE = 100;
private Paint mPaint = new Paint();
private Rect mBorderRect = new Rect();
private Paint mCirclePaint = new Paint();
private int mRadius = DEFAULT_SIZE/4;
int id;
public DotView(Context context) {
super(context);
mPaint.setStrokeWidth(2.0f);
mPaint.setStyle(Style.STROKE);
mPaint.setColor(Color.RED);
mCirclePaint.setColor(Color.CYAN);
}
@Override
protected void onDraw(Canvas canvas) {
canvas.drawColor(Color.parseColor("#0099cc"));
mBorderRect.left = 0;
mBorderRect.top = 0;
mBorderRect.right = getMeasuredWidth();
mBorderRect.bottom = getMeasuredHeight();
canvas.drawRect(mBorderRect, mPaint);
canvas.drawCircle(getMeasuredWidth()/2, getMeasuredHeight()/2,
mRadius, mCirclePaint);
}
public void setId(Int id){
this.id = id;
}
public int getId()
{
return this.id;
}
}
getChildForTouch
private DotView getChildForTouch(TableLayout table, float x, float y) {
final int childWidth = ((TableRow) table.getChildAt(0))
.getChildAt(0).getWidth();
final int childHeight = ((TableRow) table.getChildAt(0))
.getChildAt(0).getHeight();
// find out the row of the child
int row = 0;
do {
if (y > childHeight) {
row++;
y -= childHeight;
} else {
break;
}
} while (y > childHeight);
int column = 0;
do {
if (x > childWidth) {
column++;
x -= childWidth;
} else {
break;
}
} while (x > childWidth);
return (DotView) ((TableRow) table.getChildAt(row))
.getChildAt(column);
}
詳細コードは、要求に応じて供給することができます。事前に
おかげ
'' 'endView.getId()' ''はビューIDを返すか、その値を生成するメソッドですか?その単一の値を計算する方法であれば、異なる値を返すようにしてください。 – danypata
カスタムメソッド 'endView.getId()'はXとYを使って、キャンバスに描画された各図形に割り当てられた一意のIDを取得します。そして、はい、それは異なる値を返します。上記の出力を参照してください。 – andre3wap
配列に含まれる1つの値は、生成した値ですか(コンソールに表示されますか?)。 – danypata