2016-07-23 10 views
0

Warum funktioniert meine setAnimation nicht in LongClickListener, wo es außerhalb des LongClick-Listeners funktioniert?setAnimation funktioniert nicht in LongClickListener

Das ist mein Java-Code für

Animation Hinzufügen
final Animation shake = AnimationUtils.loadAnimation(NavyashActivity.context, R.anim.shake); 
final CardView breakfast = (CardView) rootView.findViewById(R.id.breakfastcard); 
breakfast.setOnLongClickListener(new View.OnLongClickListener() { 
     @Override 
     public boolean onLongClick(View v) { 
      Log.e("shake long press","coming "); 
      // TODO Auto-generated method stub 
      breakfast.setAnimation(shake); 
      return true; 
     } 
    }); 

Auch ist mein shake.xml als:

<?xml version="1.0" encoding="utf-8"?> 
    <set xmlns:android="http://schemas.android.com/apk/res/android"> 
     <rotate 
      android:duration="70" 
      android:fromDegrees="-5" 
      android:pivotX="50%" 
      android:pivotY="50%" 
      android:repeatCount="5" 
      android:repeatMode="reverse" 
      android:interpolator="@android:anim/linear_interpolator" 
      android:toDegrees="5" /> 
     <translate 
      android:fromXDelta="-10" 
      android:toXDelta="10" 
      android:repeatCount="5" 
      android:repeatMode="reverse" 
      android:interpolator="@android:anim/linear_interpolator" 
      android:duration="70" /> 
    </set> 

und mein Layout für cardview, für die ich schütteln müssen:

<android.support.v7.widget.CardView 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_margin="15dp" 
    android:foreground="?android:attr/selectableItemBackground" 
    android:longClickable="true" 
    android:clickable="true"  
    android:id="@+id/breakfastcard"> 

    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:orientation="vertical" 
     android:background="@drawable/framebox"> 

     <TextView 
      android:layout_width="wrap_content" 
      android:id="@+id/breakfastheading" 
      android:gravity="center_horizontal" 
      android:layout_gravity="center_horizontal" 
      android:layout_height="wrap_content" 
      android:layout_marginBottom="2dp"/> 

     <TextView 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:id="@+id/breakfastdetails" 
      android:layout_margin="2dp"/> 
    </LinearLayout> 
</android.support.v7.widget.CardView> 

Ich möchte nur, dass sobald der Benutzer Longclicks das Cardview-Element die Karte sollte zu schütteln, um nicht zu starten Wenn man lange berührt, bewegt man sich fortwährend.

Antwort

2

Versuchen, dies zu ändern:

breakfast.setAnimation(shake); 

Um dies:

breakfast.startAnimation(shake); 

Sie die Animation einstellen, aber ausgehend es nicht.

+0

Dank @Guilherme P es funktioniert! –

Verwandte Themen