Как анимировать ImageView слева, чтобы заполнить экран? - PullRequest
0 голосов
/ 21 июня 2019

У меня есть изображение, установленное в ImageView, и я хочу анимировать его таким образом, чтобы изначально на экране ничего не отображалось, а изображение входило слева, двигалось вправо и, наконец, заполняло экран

В коде, который я проверяю, изображение входит слева, но не заполняет экран и остается пустым позади себя

ObjectAnimator transAnimation= 
ObjectAnimator.ofFloat(imageView,"translationX",-100,100);
transAnimation.setDuration(3000);//set duration
transAnimation.start();//start animation

Ответы [ 3 ]

1 голос
/ 21 июня 2019

Код для анимации, который вы разместили, кажется, работает нормально. Проблема, которая у вас есть, связана с самим изображением и местом, которое оно занимает на вашем экране.

Вы сказали, что ваше изображение не занимает много места и оставляет пустое пространство позади него, чтобы исправить это, просто сделайте ваш imageview width = match_parent. и если это все еще не работает, тогда добавьте scaleType = centerCrop

ОБНОВЛЕНИЕ:

Добавьте этот код в свой onCreate ()

imageView.post(new Runnable() {
        @Override
        public void run() {
            startImageAnimation();
        }
    });


 private void startImageAnimation() {
    ObjectAnimator animation = ObjectAnimator.ofFloat(imageView, "translationX",-(imageView.getWidth()), 0);
    animation.setDuration(1100);
    animation.start();
}
0 голосов
/ 21 июня 2019

шаг 1: создать ниже left_to_right_anim файл в anim каталоге res

<?xml version="1.0" encoding="utf-8"?>
<set
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:interpolator="@android:anim/linear_interpolator"
    android:fillAfter="true">

   <translate
        android:fromXDelta="0%p"
        android:toXDelta="75%p"
        android:duration="800" />
</set>

шаг 2:

//your image view
imageView = (ImageView) findViewById(R.id.img);

//name of animation from anim directory
animSlide = AnimationUtils.loadAnimation(getApplicationContext(),
                    R.anim.left_to_right_anim);

// Start the animation like this
imageView.startAnimation(animSlide);

шаг 3:

теперь вычислите время анимации, и когда ваше изображение будет анимировано в справа в сторону остановите и установите его на экране.Для достижения этого вы можете обработчик пользователя при запуске анимации. Thread () метод run () используется для получения времени вашей анимации. спасибо;)

0 голосов
/ 21 июня 2019

Как насчет использования TransistionManager ?

            val slideRight= Slide()
            slideRight.slideEdge = Gravity.RIGHT
            slideRight.mode = Slide.MODE_IN
            slideRight.addTarget(logoImageView)
            slideRight.duration = ANIMATION_DURATION

            TransitionManager.beginDelayedTransition(parentContainer, slideRight)
            logoImageView.visibility = VISIBLE

Это фрагмент моего рабочего кода в Kotlin

Также вы можете использовать TransitionSet для объединения анимаций

...