come fare l'animation cliccabile in android

Ho fatto una semplice animation per un'image e ho impostato l'evento OnClick sull'image per fare un brindisi. Il problema è che ho fatto l'image ha iniziato a fare l'animation sul onCreate e ho fatto impostare l'image da click e sparare il toast, ma il problema è che l'image non è cliccabile, ma se premendo la posizione originale del l'image viene avviata (l'image non si muove con l'animation)

thx per il tuo aiuto

  • implementare AsyncTask in Fragment android
  • barra di tabella verticale in android
  • Quando utilizzare un servizio o AsyncTask o Handler?
  • SQLite: Escaping Special Characters
  • Riprodurre i file multimediali situati nella cartella risorse
  • Come redirect l'utente alla scheda di revisione della pagina app su Google Play da un browser?
  • questo è il codice di animation nella cartella anim (translate.xml)

    <?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android" android:interpolator="@android:anim/linear_interpolator"> <translate android:fromXDelta="-80%p" android:toXDelta="80%p" android:duration="20000" android:repeatCount="100" android:repeatMode="restart" /> </set> 

    e questa è la class di attività

     package com.example.animatest; import android.app.Activity; import android.os.Bundle; import android.util.Log; import android.view.View; import android.view.View.OnClickListener; import android.view.animation.Animation; import android.view.animation.AnimationUtils; import android.widget.ImageView; import android.widget.Toast; public class MainActivity extends Activity { private ImageView image01; private long aefe; private ImageView image1; private ImageView image2; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); image01 = (ImageView) findViewById(R.id.imageView1); final Animation animTranslate1 = AnimationUtils.loadAnimation(this, R.anim.translate); image01.startAnimation(animTranslate1); image01.setOnClickListener(new OnClickListener() { @Override public void onClick(View view) { Toast.makeText(MainActivity.this, "hello", Toast.LENGTH_SHORT) .show(); } }); } } 

  • Come salvare un arraysList <LatLng> con SharedPreferences
  • Leggi la velocità di SharedPreferences
  • Avere un problema durante la verifica della casella di controllo generata dynamicmente attraverso la visualizzazione di elenco
  • Che cosa significa "Failure " in Android Studio?
  • Pinch Zoom in android per un'image?
  • Sony SmartWatch - come get il nome del pacchetto dell'host host
  • 3 Solutions collect form web for “come fare l'animation cliccabile in android”

    Durante l'intera animation, la visualizzazione rimane nella posizione precedente (posizione in cui è iniziata l'animation). È appena disegnato in un altro punto. Dovresti spostare la visualizzazione animata dopo la fine dell'animation:

    Registra un ascoltatore alla tua animation. http://developer.android.com/reference/android/view/animation/Animation.AnimationListener.html

    Nella tua implementazione onAnimationEnd, modificare il layout dell'attività in modo che assomiglia allo stato / layout finale della tua animation.

    Aggiorna dopo il tuo commento:

    L'unico modo che vedo di farlo è creare la propria animation personalizzata nel codice Java e implementare il metodo "protetto void applyTransformation (float interpolatedTime, Transformation t)". Ad esempio, nella nostra applicazione abbiamo un'animation che effettua una vista in giro invece di disegnarlo in una posizione diversa. Ad esempio sotto è un esempio di un'animation che aumenta o diminuisce l'altezza effettiva di una vista:

     public class ViewHeightAnimation extends Animation { private final View view; private final float diffHeight; private final int startHeight; public ViewHeightAnimation(View view, float diffHeight, int startHeight) { this.view = view; this.diffHeight = diffHeight; this.startHeight = startHeight; setDuration(200); setInterpolator(new AccelerateDecelerateInterpolator()); } @Override protected void applyTransformation(float interpolatedTime, Transformation t) { android.view.ViewGroup.MarginLayoutParams layoutParams = (android.view.ViewGroup.MarginLayoutParams)view.getLayoutParams(); layoutParams.height = Math.round(startHeight + (diffHeight * interpolatedTime)); view.setLayoutParams(layoutParams); } @Override public boolean willChangeBounds() { return true; } } 

    La tua animation sarebbe diversa, ma utilizza 'getLayoutParams ()' e 'setLayoutParams ()' per modificare la posizione di View (ImageView) e cambiare layoutParams.topMargin e layoutParams.leftMargin appropriatamente.

    Se non si è preoccupati per Android 2.x o inferiore, l'utilizzo di ObjectAnimator (3,0 o superiore) o di ViewPropertyAnimator (3,1 o ​​superiore) è una soluzione migliore, come accennato in altre risposte precedenti.

    Fammi sapere se questo ti aiuta.

    prova come questo:

     final Animation animTranslate1 = AnimationUtils.loadAnimation(this,R.anim.translate); animTranslate1.setFillAfter(true); image01.startAnimation(animTranslate1); 

    Se ciò non funziona, dovrai utilizzare il nuovo framework Property Animation (indicato nella risposta alla precedente domanda duplicata)

    Vedi qui per saperne di più

    Il modo in cui animate il tuo imageView è solo quello di spostare il suo aspetto, in modo che in realtà il tuo imageView sia ancora in posizione vecchia. Non c'è un modo semplice per fare quello che vuoi, con animazioni di questo tipo. Si consiglia di utilizzare ObjectAnimators …

    L'Android è un fan Android di Google, tutto su telefoni Android, Android Wear, Android Dev e applicazioni Android Games e così via.