为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

喵喔喔 2022-12-21 10:03:24
目标:单击应用程序中的图像并使其淡出以显示不同的图像。我的方法:使第一个图像在 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(),它实际上在开头设置了图像资源
查看完整描述

3 回答

?
守着星空守着你

TA贡献1799条经验 获得超8个赞

我认为这会对您有所帮助:

淡入淡出 Java 中的 Android 动画

所以像这样在 onClickListener 中使用:

image1.setOnClickListener(new View.OnClickListener() {

            @Override

            public void onClick(View v) {

                image1.setVisibility(View.GONE);


                //Animation...


                image2.setVisibility(View.VISIBLE);


            }

        });


查看完整回答
反对 回复 2022-12-21
?
肥皂起泡泡

TA贡献1829条经验 获得超6个赞

你永远不会告诉image1.setImageResource(R.drawable.cat2);等待 2000 毫秒然后执行,所以 image2 一点击它就出现了。


解决方案:image1.setImageResource(R.drawable.cat2); 2000ms后 调用


   new Handler().postDelayed(() -> {

        image1.setImageResource(R.drawable.cat2);

        }, 2000);

这可能会有所帮助。


查看完整回答
反对 回复 2022-12-21
?
慕桂英546537

TA贡献1848条经验 获得超10个赞

动画在您的代码中是异步的——它不会阻塞/等待,而是启动动画(或者更确切地说,将要启动的动画排队),然后立即执行设置图像的下一行。如果您想在动画完成后更新您的图像,您可以使用withEndAction并提供回调。


image1.animate()

    .alpha(0f)

    .setDuration(2000)

    .withEndAction(new Runnable() {

      @Override

      public void run() {

        image1.setImageResource(R.drawable.cat2);

      }

    })

    .start();


查看完整回答
反对 回复 2022-12-21
  • 3 回答
  • 0 关注
  • 121 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号