如何从左开始为ImageView设置动画以填充屏幕?

时间:2019-06-21 05:43:22

标签: java android android-animation

我在ImageView中设置了一个图像,并且希望对其进行动画处理,这样一来,屏幕上一开始就什么也不显示,并且图像从左进入并向右走,最后充满了屏幕

在我检查图像的代码中,图像从左输入,但没有填满屏幕,并且在其后留有空白

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

3 个答案:

答案 0 :(得分:1)

您发布的动画代码似乎运行良好。您遇到的问题是imageview本身及其在屏幕上的位置。

您说您的imageview没有占用全部空间,并在其后面留有空白空间, 因此要解决此问题,只需使您的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();
}

答案 1 :(得分:0)

使用 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 组合动画

答案 2 :(得分:0)

步骤1:在 res

anim 目录中的 left_to_right_anim 文件下面创建
<?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:

现在计算动画的时间,以及当您的图像视图在右侧一侧停止进行动画处理并将其设置到屏幕上时。 为此,您可以在启动动画时使用用户处理程序。 线程的run()方法用于获取动画的时间。 谢谢;)