猿问

Java - 淡入淡出和显示图像的不同方法

我开始学习 Java,我遇到了一个 excersize,我需要淡出一个图像并通过淡入另一个图像来显示。


我对这个 excersize 的解决方案是有一个 imageView 并淡出第一张图像,然后将图像源切换到第二张图像并将 imageView 淡入以便它应该显示新图像。这样做它会通过淡出然后用新图像显示我想要的所有图像。


这是我的程序代码:


public void fade(View view){


    ImageView simpsonImageView = findViewById(R.id.simpsonsImageView);


    simpsonImageView.animate().alpha(0f).setDuration(3000);

    simpsonImageView.setImageResource(R.drawable.bart);

    simpsonImageView.animate().alpha(1f).setDuration(3000);

    simpsonImageView.animate().alpha(0f).setDuration(3000);

    simpsonImageView.setImageResource(R.drawable.lisa);

    simpsonImageView.animate().alpha(1f).setDuration(3000);

}

现在我在教程中看到我正在学习导师为每个图像使用不同的 imageView。我想知道这两个解决方案中哪个是正确的或至少可以接受的。或者它真的很重要并且两种解决方案都很好。


潇湘沐
浏览 196回答 1
1回答

倚天杖

只有在使用两个ImageViews时才能实现一件事:您可以对两个图像进行淡入淡出,以便屏幕永远不会完全空白。但是,在您的练习中,您只想按顺序交换图像。从性能的角度来看,一个ImageView可能比两个好,因为它显然会占用更少的内存和 CPU 时间,但我怀疑这会对现代设备产生明显的影响。因此,只要您不同时为大量图片制作动画(想想足球队而不是辛普森一家),两种解决方案都可以。请注意,使用您的代码原样将根本看不到动画,并且ImageView似乎只显示第二张图片。这是因为animate()触发动画但它不会等到动画完成。因此,您需要使用AnimationListenerorHandler.postDelayed()来交换图片并在上一个动画完成后立即开始下一个动画。
随时随地看视频慕课网APP

相关分类

Java
我要回答