Нет поворота изображения с помощью анимации поворота - PullRequest
0 голосов
/ 02 мая 2018

Использование анимации поворота в Android, но нет поворота изображения после нажатия кнопки.

public class MainActivity extends AppCompatActivity {
ImageView spinImage;
Button buton;

Random r;
int degree =0 , degreeold= 0;

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

    buton = (Button) findViewById(R.id.spinbutton);
     spinImage= (ImageView) findViewById(R.id.spinimage);
     r= new Random();

    buton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
          degreeold = degree % 360;
        degree = r.nextInt(3600)+720;
           degree= 4400;
            RotateAnimation rotate = new RotateAnimation( degreeold, degree,
                    RotateAnimation.RELATIVE_TO_SELF,0.5f,RotateAnimation.RELATIVE_TO_SELF , 0.5f);
            rotate.setDuration(3600);
            rotate.setFillAfter(true);
            rotate.setInterpolator( new DecelerateInterpolator());

            rotate.setAnimationListener(new Animation.AnimationListener() {
                @Override
                public void onAnimationStart(Animation animation) {

                }

                @Override
                public void onAnimationEnd(Animation animation) {

                }

                @Override
                public void onAnimationRepeat(Animation animation) {

                }
            });

            spinImage.setAnimation(rotate);
        }
    });
}

Я не могу найти ошибку, потому что на изображении нет поворота. при запуске и открытии приложения без задержки не возникает никаких ошибок, но при нажатии кнопки анимация отсутствует.

Ответы [ 2 ]

0 голосов
/ 02 мая 2018

Заменить spinImage.setAnimation(rotate); на spinImage.startAnimation(rotate);

0 голосов
/ 02 мая 2018

Вы не запустили анимацию. Попробуйте использовать spinImage.startAnimation(rotate);

setAnimation предназначен для того, чтобы дать вам более точный контроль, если вы хотите запустить анимацию с задержкой или вместе с другими анимациями.

Из документации:

Устанавливает следующую анимацию для этого просмотра. Если вы хотите, чтобы анимация воспроизводилась немедленно, используйте вместо этого startAnimation (android.view.animation.Animation). Этот метод обеспечивает детальный контроль времени начала и аннулирования, но вы должны убедиться, что 1) анимация имеет установленное время начала, и 2) родитель представления (который управляет анимацией своих дочерних элементов) будет недействительным, когда анимация должна начаться.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...