KamiSempai писал(а):evgenyukraine писал(а):Подскажите пожалуйста как можно реализовать такую простую вещь как обработчик события нажатия на View который двигается. Например, мне нужно чтобы картинка - ImageView перемещалась по экрану, и при нажатии на нее она исчезала. Я уже мучаюсь три дня с этим, даже пробовал использовать NineOldAndroids библиотеку, работает только если я запускаю на устройстве с андроидом старше 14 API, а на телефоне c 9 API не работает, никак не реагирует на нажатие. Но ведь я видел кучу игр где такая простая функциональность реализована на андроиде младших версий.
Эта анимация предназначена для визуальных эффектов. Фатически, их позиция остается неизменной.
В играх применяется совершенно другой подход. Там используются не ImageView.
Не соглашусь с вами, на 4 андроиде все прекрасно работает, и я использую это в игре. У меня в методе создается анимация для ImageView и при нажатии ImageView исчезает. Как такую простую функциональность сделать на андроид 2.2?
Вот мой код который замечательно работает:
private void GoFly(final ImageView bubble)
{
if(!bubbles.contains(bubble))
return;
bubble.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
bubbles.remove(v);
MainLayoutFrame.removeView(v);
v = null;
MainLayoutFrame.invalidate();
app.playSound(app.sound_wand);
}
});
int lastX = bubblesLastPoints.get(bubble).x;
int lastY = bubblesLastPoints.get(bubble).y;
int newPosX = MyGetRandom(lastX-Radius < 0 ? 0 : lastX-Radius, lastX + Radius > displayWidth-130 ? displayWidth-130 : lastX + Radius);
int newPosY = MyGetRandom(lastY-Radius < 0 ? 0 : lastY-Radius, lastY + Radius > displayHeight-130 ? displayHeight-130 : lastY + Radius);
bubblesLastPoints.get(bubble).x = newPosX;
bubblesLastPoints.get(bubble).y = newPosY;
AnimatorSet set = new AnimatorSet();
set.playTogether(
ObjectAnimator.ofFloat(bubble, "rotation", 0, -360),
ObjectAnimator.ofFloat(bubble, "translationX", lastX, newPosX),
ObjectAnimator.ofFloat(bubble, "translationY", lastY, newPosY)
);
set.addListener(new AnimatorListener() {
@Override
public void onAnimationStart(Animator animation) {
}
@Override
public void onAnimationRepeat(Animator animation) {
}
@Override
public void onAnimationEnd(Animator animation) {
GoFly(bubble);
}
@Override
public void onAnimationCancel(Animator animation) {
// TODO Auto-generated method stub
}
});
set.setDuration(3 * 1000).start();
}