猿问

image.setImageResource() 什么时候在函数内设置图像资源?

目标:单击应用程序中的图像并使其淡出以显示不同的图像。


我的方法:使第一个图像在 2000 毫秒后消失,然后将第一个图像的图像资源更改为第二个图像以使第二个图像出现


我有一个由我的导师提供的正确解决方案,所以我不想要任何正确的解决方案。我想知道的是为什么我的解决方案不起作用,即为什么 setImageResource() 在开始时将 Image1 设置为 Image 2 尽管在最后调用它


这是我创建的淡入淡出功能,单击 image1 时会转到该功能


公共无效褪色(视图视图){


    ImageView image1 = findViewById(R.id.image1);

    image1.animate().alpha(0f).setDuration(2000); 


    image1.setImageResource(R.drawable.cat2);

}

实际输出:我一点击图像 1 就变成图像 2,然后图像 2 逐渐消失


问题:尽管在代码末尾调用了 setImageResource(),它实际上在开头设置了图像资源


喵喔喔
浏览 122回答 3
3回答

守着星空守着你

我认为这会对您有所帮助:淡入淡出 Java 中的 Android 动画所以像这样在 onClickListener 中使用:image1.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                image1.setVisibility(View.GONE);                //Animation...                image2.setVisibility(View.VISIBLE);            }        });

肥皂起泡泡

你永远不会告诉image1.setImageResource(R.drawable.cat2);等待 2000 毫秒然后执行,所以 image2 一点击它就出现了。解决方案:image1.setImageResource(R.drawable.cat2); 2000ms后 调用   new Handler().postDelayed(() -> {        image1.setImageResource(R.drawable.cat2);        }, 2000);这可能会有所帮助。

慕桂英546537

动画在您的代码中是异步的——它不会阻塞/等待,而是启动动画(或者更确切地说,将要启动的动画排队),然后立即执行设置图像的下一行。如果您想在动画完成后更新您的图像,您可以使用withEndAction并提供回调。image1.animate()    .alpha(0f)    .setDuration(2000)    .withEndAction(new Runnable() {      @Override      public void run() {        image1.setImageResource(R.drawable.cat2);      }    })    .start();
随时随地看视频慕课网APP

相关分类

Java
我要回答