2017-04-04 122 views
0

我有一個imageView,目前只是從translateAnimation從屏幕左邊移動到右邊。我希望用戶在屏幕上點擊imageView,然後將ImageView設置爲INVISIBLE。我的問題是因爲我使用翻譯動畫這不能完成。我應該如何做到這一點?並可以提供一個例子。Android:使imageView點擊動畫

我的代碼:

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); 
     } 
    }); 



} 
} 

謝謝。

+0

嘗試停止OnClickListener裏面的動畫。 –

+0

這很奇怪,因爲它適用於動畫的第一秒,並且imageview變爲INVISIBLE,但在此之後它不可點擊... –

+0

爲什麼您需要檢測隱藏視圖的點擊事件? – Darish

回答

1

fluent方法是更加舒適:

enemy1.animate() 
    .translationX(2500.0f) 
    .setDuration(10000) 
    .withStartAction(() -> enemy1.setTranslationX(-400.0f)); 
1

我來解決辦法:

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

我使用不同類型的動畫製作的。這很好。如果有人遇到同樣的問題,這是一個體面的解決方案。