动画不会在按钮单击时第二次应用

时间:2017-05-03 08:20:00

标签: android animation image-rotation

我发现我的动画在按钮点击时第二次不适用。我使用过this库。我希望用动画旋转图像。但问题是它只能工作一次。

这是我点击按钮上的代码

 btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                 ViewAnimator.animate(imageView)
                        .rotation(rotationAngle).duration(1000)
                         .repeatMode(ValueAnimator.RESTART)
                        .start();
                if(rotationAngle==360)
                {
                    rotationAngle=180;
                }
                else
                {
                    rotationAngle += 180;
                }
            }
        });

3 个答案:

答案 0 :(得分:1)

使用下面正常工作的代码,我也测试了

public class MainActivity extends AppCompatActivity {

private int rotationAngle = 180;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    final TextView tv = (TextView) findViewById(R.id.tv_testing);

    findViewById(R.id.btn_click).setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            ViewAnimator.animate(tv)
                    .rotation(rotationAngle).duration(1000)
                    .repeatMode(ValueAnimator.RESTART)
                    .start();

            if(rotationAngle==360)
            {
                rotationAngle=180;
            }
            else
            {
                rotationAngle += 180;
            }
        }
    });
}

}

希望对你有所帮助

答案 1 :(得分:0)

我测试了这段代码,看起来它运行正常。如果您想要始终顺时针旋转图像,请尝试下一步: Init的默认值为rotationAngle

 private float rotationAngle=179.99f;

.99f - 因为360度是0度,你需要更少的旋转方向

然后设置onClickListener:

btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                ViewAnimator.animate(imageView)
                        .rotation(rotationAngle).duration(1000)
                        .repeatMode(ValueAnimator.RESTART)
                        .start();
                if(rotationAngle>=360)
                {
                    rotationAngle=179.99f;
                }
                else
                {
                    rotationAngle += 180;
                }
            }
        });

答案 2 :(得分:0)

因为使用

WORKDIR /src/CoreWebApp
RUN dotnet build CoreWebApp.csproj -c Release -o /app
Run dotnet ef database update

您应该使用

ViewAnimator.animate(imageView)
                        .rotation(rotationAngle).duration(1000)

它只能运行一次的原因是,如果您使用旋转,则它将旋转到旋转的程度(对于您的情况为180),因为创建了活动而不是当前位置。