2 baby bonnie Baby_Bonnie 于 2012.12.11 17:03 提问

imageView中旋转动画的问题

在屏幕上有一个ImageView,我想让这个视图可以向左旋转,然后再向右旋转,我使用以下代码给ImageView添加动画:

new RotateAnimation(20f, 50f,Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);

anim.setInterpolator(new LinearInterpolator());
anim.setRepeatCount(Animation.INFINITE);
anim.setDuration(700);

// Start animating the image
final ImageView splash = (ImageView) findViewById(R.id.mobileshake);
splash.startAnimation(anim);

问题是,现在ImageView的这个动画形式只能旋转一次。我想的是先向左旋转,然后再向右旋转。
如何能让ImageView动起来?

2个回答

curie_87
curie_87   2012.12.11 17:37
已采纳

使用以下代码可以实现动画

final RotateAnimation anim1 = new RotateAnimation(20f, 50f,Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);
        anim1.setInterpolator(new LinearInterpolator());
        //anim1.setRepeatCount(Animation.INFINITE);
        anim1.setDuration(300);

        final RotateAnimation anim2 = new RotateAnimation(50f, 20f,Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);
        anim2.setInterpolator(new LinearInterpolator());
        //anim2.setRepeatCount(Animation.INFINITE);
        anim2.setDuration(300);

        final ImageView splash = (ImageView) findViewById(R.id.mobileshake);
        anim1.setAnimationListener(new AnimationListener(){

            public void onAnimationEnd(Animation animation) {
                // TODO Auto-generated method stub
                splash.startAnimation(anim2);
            }

            public void onAnimationRepeat(Animation animation) {
                // TODO Auto-generated method stub

            }

            public void onAnimationStart(Animation animation) {
                // TODO Auto-generated method stub

            }});
        anim2.setAnimationListener(new AnimationListener(){

            public void onAnimationEnd(Animation animation) {
                // TODO Auto-generated method stub
                splash.startAnimation(anim1);
            }

            public void onAnimationRepeat(Animation animation) {
                // TODO Auto-generated method stub

            }

            public void onAnimationStart(Animation animation) {
                // TODO Auto-generated method stub

            }});

        splash.startAnimation(anim1);
baimy1985
baimy1985   2012.12.11 21:15

你要的效果是不是两个动画呢? 先向左然后隔一小段时间再向右,如果是的话,两个设置下先后时间顺序在放在一个动画集合里应该就可以了

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!