有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java动画无法正常工作

当手机晃动时,它应该会显示动画。动画第一次工作,但下一次摇动它不会这样做。其他一切都正常工作,因为每次我摇晃它时,它都会显示新文本。只是第一次之后动画不会再做了。我确实为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:安卓="http://schemas.安卓.com/apk/res/安卓"
    安卓:orientation="vertical"
    安卓:layout_width="fill_parent"
    安卓:layout_height="fill_parent"
    安卓:background="@drawable/page1"
    >

  <ImageView 安卓:background="@drawable/page2ani1" 安卓:layout_width="fill_parent" 安卓:layout_height="fill_parent" 安卓:id="@+id/talk"></ImageView>
</RelativeLayout>

共 (1) 个答案

  1. # 1 楼答案

    这行吗

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

    这就是我反复将动画应用于TextView元素的方式

    如果做不到这一点,因为您已经更改了ImageView,那么以后可能需要一个v.postInvalidate()