背景に赤色の基本ビューを作成しました。アクティビティでそのビューを使用しています。setOnTouch listnerを同じビューにしました。タッチイベントの 私はそのビューを移動しています。MotionEvent.ACTION_MOVEの再描画ビュー
Before touch event it looks like this
After MotionEvent.ACTION_MOVE it look like this
モーションイベントの後、私は、ビューがredrawn.Iになりたい白い部分が表示されたくありません。
Googleマップがどの方向にも地図を移動するように再描画する必要があります。次のコード
が私の基本的なカスタムビュー
public class CustomVIew extends View {
public CustomVIew(Context context) {
super(context);
}
public CustomVIew(Context context, AttributeSet attrs) {
super(context, attrs);
}
public CustomVIew(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
canvas.drawColor(Color.RED);
}
}
であるこれは私のOnTouchメソッドの実装です
@Override
public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
_xDelta = v.getX() - event.getRawX();
_yDelta = v.getY() - event.getRawY();
Log.d(TAG, "onTouch: X:" + _xDelta + " Y:" + _yDelta);
break;
case MotionEvent.ACTION_MOVE:
v.animate()
.x(event.getRawX() + _xDelta)
.y(event.getRawY() + _yDelta)
.setDuration(10)
.start();
break;
default:
return false;
}
return true;
}
ありがとう事前
なぜあなたは再描画するために 'v.invalidate()'メソッドを使用していませんか? –
@mehd azizi私はアニメーションの後でontouchメソッドを取得するビューでivalidateをtryedが、その動作していません。それは新しい位置に全体のビューをdra draging、それはマップのように再描画されていません – Amit