Android: сделайте imageView кликабельным для анимации

У меня есть imageView, который в настоящее время просто перемещается слева направо на экране с помощью translateAnimation. Я хотел бы, чтобы пользователь щелкал изображение, когда оно проходит по экрану, а затем это устанавливало бы для ImageView значение INVISIBLE. Моя проблема в том, что я использую Translate Animation, это невозможно сделать. Как мне это сделать? а можно пример привести.

Мой код:

package com.example.mr_br.ibcc_bomber_command;

import android.content.pm.ActivityInfo;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.view.animation.TranslateAnimation;
import android.widget.ImageView;
import android.widget.RelativeLayout;

public class front_gunner extends AppCompatActivity {



@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_front_gunner);
    //sets screen orientation on created
    this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);

    //animation
    final TranslateAnimation moveLefttoRight = new TranslateAnimation(-400, 2500, 0, 0);
    moveLefttoRight.setDuration(10000);
    moveLefttoRight.setFillAfter(false);



    //enemies
    final ImageView enemy1 = (ImageView) findViewById(R.id.enemy1);

    enemy1.setAnimation(moveLefttoRight);

    enemy1.setOnClickListener (new View.OnClickListener(){
        @Override
        public void onClick(View v) {
            enemy1.setVisibility(View.INVISIBLE);
        }
    });



}
}

Спасибо.


person George Brooks    schedule 04.04.2017    source источник
comment
попробуйте остановить анимацию внутри OnClickListener.   -  person Jonathan Aste    schedule 04.04.2017
comment
Это странно, потому что это работает в течение первой секунды анимации, и изображение становится НЕВИДИМЫМ, но после этого оно недоступно...   -  person George Brooks    schedule 04.04.2017
comment
почему вам нужно обнаруживать события кликов для невидимого просмотра?   -  person Darish    schedule 04.04.2017
comment
Мне нужно нажать на него, чтобы сделать его невидимым, вижу это как игру с врагом, летящим по экрану, щелчок уничтожает его.   -  person George Brooks    schedule 04.04.2017


Ответы (2)


быстрый подход гораздо приятнее:

enemy1.animate()
    .translationX(2500.0f)
    .setDuration(10000)
    .withStartAction(() -> enemy1.setTranslationX(-400.0f));
person azizbekian    schedule 04.04.2017

Решение, к которому я пришел:

 ObjectAnimator anim = ObjectAnimator.ofFloat(enemy1, "translationX", -400f, 2500f);
    anim.setDuration(10000);                  // Duration in milliseconds
    anim.start();

Я использовал другой тип аниматора. Это сработало отлично. Если кто-то еще сталкивается с той же проблемой, это достойное решение.

person George Brooks    schedule 04.04.2017