2016-07-23 7 views
0

Почему мой setAnimation не работает в LongClickListener, где он отлично работает вне слушателя LongClick?setAnimation не работает в LongClickListener

Это мой Java-код для добавления анимации

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

Кроме того, мой shake.xml как:

<?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> 

и мой макет для cardview, для которого мне нужно встряхивания:

<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> 

Я просто хочу, чтобы, как только пользователь запустил элемент карты, карта должна начать дрожать, чтобы не ify, что при прикосновении долгое время его движение продолжается.

ответ

2

Попробуйте изменить это:

breakfast.setAnimation(shake); 

Для этого:

breakfast.startAnimation(shake); 

Вы настраиваете анимацию, но не запустить его.

+0

Спасибо @Guilherme P его работа! –

 Смежные вопросы

  • Нет связанных вопросов^_^