动画无法正常工作

时间:2011-07-12 01:23:16

标签: java android layout animation accelerometer

当电话被摇动时,它应该显示动画。动画第一次运作,但下一次动摇它不会这样做。其他一切都正常工作,因为每次摇动它都会每次显示新文本。它只是动画在第一次之后不再做。我确实为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>

1 个答案:

答案 0 :(得分:0)

这有用吗?

final Animation ani = AnimationUtils.loadAnimation(this,R.anim.budtalk);
//later
v.startAnimation(ani);

这就是我将动画重复应用于TextView元素的方法。

如果失败了,因为你已经改变了ImageView,或许你之后可能需要一个v.postInvalidate()?