Я создал на базовом представлении, который имеет красный цвет в background.I использую этот вид в своей деятельности. У меня есть listOnTouch 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;
}
Thanx заранее
почему вы не используете '' v.invalidate) метод (перерисовать? –
@mehd azizi i tryed ivalidate on view, который я получаю в методе ontouch после анимации, но его не работает. Он просто рисует весь вид на новую позицию, он не перерисовывается, как карта – Amit