Анимация не работает правильно - PullRequest
2 голосов
/ 12 июля 2011

Когда телефон трясется, он должен отображать анимацию. Анимация работает в первый раз, но при следующем встряхивании она этого не сделает. Все остальное работает правильно, потому что каждый раз, когда я встряхиваю его, каждый раз отображается новый текст. Просто анимация не сделает это снова после первого. У меня есть анимация для onehot, но это не должно повлиять на запуск анимации снова?

Вот упражнение, над которым я работаю. Вслед за его 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 голосов
/ 15 сентября 2011

Работает ли это?

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

Это то, как я неоднократно применял анимацию к элементам TextView.

В противном случае, поскольку вы изменили ImageView, возможно, вам может понадобиться v.postInvalidate () потом?

...