Ich habe auf Basisansicht erstellt, die rote Farbe im Hintergrund hat. Ich verwende diese Ansicht in meiner Aktivität. Ich habe SetOnTouch Listner auf die gleiche Ansicht festgelegt. bei Berührungsereignissen verschiebe ich diese Ansicht.Redraw-Ansicht auf MotionEvent.ACTION_MOVE
Before touch event it looks like this
After MotionEvent.ACTION_MOVE it look like this
Nach Bewegung Ereignis möchte ich im Hinblick auf sein redrawn.I wollen nicht weiß Teil gezeigt werden.
sollte es neu zu zeichnen wie google map macht auf der moving map in eine beliebige richtung.
folgender Code ist mein Grund benutzerdefinierten Ansicht
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);
}
}
Das ist meiner OnTouch Methode Implementierung
@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;
}
Thanx im Voraus
warum Sie nicht verwenden 'v.invalidate()' Methode neu zu zeichnen? –
@Mehd Azizi Ich versuchte Ivalidate auf Sicht, die ich in OnTouch-Methode nach der Animation, aber es funktioniert nicht .Es nur Dragging ganze Ansicht auf neue Position, es ist nicht neu zeichnen wie Karte – Amit