当电话被摇动时,它应该显示动画。动画第一次运作,但下一次动摇它不会这样做。其他一切都正常工作,因为每次摇动它都会每次显示新文本。它只是动画在第一次之后不再做。我确实为oneshot设置了动画,但这不会影响动画再次触发吗?
这是我正在使用的活动。其次是xml布局。
public class Ask extends Activity{
private SensorManager mSensorManager;
private ShakeEventListener mSensorListener;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.ask);
mSensorListener = new ShakeEventListener();
mSensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
mSensorManager.registerListener(mSensorListener,
mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER),
SensorManager.SENSOR_DELAY_UI);
final ImageView v = (ImageView)findViewById(R.id.talk);
mSensorListener.setOnShakeListener(new ShakeEventListener.OnShakeListener() {
public void onShake() {
v.setBackgroundResource(R.anim.budtalk);
AnimationDrawable talking = (AnimationDrawable)v.getBackground();
talking.start();
}
});
}
}
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/page1"
>
<ImageView android:background="@drawable/page2ani1" android:layout_width="fill_parent" android:layout_height="fill_parent" android:id="@+id/talk"></ImageView>
</RelativeLayout>
答案 0 :(得分:0)
这有用吗?
final Animation ani = AnimationUtils.loadAnimation(this,R.anim.budtalk);
//later
v.startAnimation(ani);
这就是我将动画重复应用于TextView元素的方法。
如果失败了,因为你已经改变了ImageView,或许你之后可能需要一个v.postInvalidate()?