setAnimation 在 LongClickListener 中不起作用
setAnimation not working in LongClickListener
为什么我的 setAnimation 在 LongClickListener 中不起作用,而它在 LongClick 侦听器外部工作正常?
这是我的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>
我只希望一旦用户长按 cardview 元素,卡片就应该开始摇动,以通知长时间被触摸它会连续移动。
尝试改变这个:
breakfast.setAnimation(shake);
为此:
breakfast.startAnimation(shake);
您正在设置动画但未启动它。
为什么我的 setAnimation 在 LongClickListener 中不起作用,而它在 LongClick 侦听器外部工作正常?
这是我的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>
我只希望一旦用户长按 cardview 元素,卡片就应该开始摇动,以通知长时间被触摸它会连续移动。
尝试改变这个:
breakfast.setAnimation(shake);
为此:
breakfast.startAnimation(shake);
您正在设置动画但未启动它。