【问题标题】:Set Images one by one一张一张设置图片
【发布时间】:2018-05-29 17:26:51
【问题描述】:

我是新开发的,所以我想问这个问题,如果它很愚蠢,对不起

我有 6 个不同的 ImageViews 和 6 个图像,我怎样才能将图像设置为 ImageViews 以便它们在点击时出现一些延迟,比如 1 秒?现在它们同时出现

private int[] images;
private int[] containers;

@Override
protected void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    images = new int[] {R.drawable.wale,
                        R.drawable.btrfly,
                        R.drawable.cat,
                        R.drawable.dog,
                        R.drawable.fish,
                        R.drawable.dolphin};
    containers = new int[] {R.id.container1,
                            R.id.container2,
                            R.id.container3,
                            R.id.container4,
                            R.id.container5,
                            R.id.container6};

    for (int i = 0; i<containers.length; i++) {
        final ImageView temp = findViewById(containers[i]);
        temp.setImageResource(R.drawable.placeholder);

    }

    Button load = findViewById(R.id.btnLoad);
    load.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            for ( int i =0; i<containers.length; i++) {
                final ImageView temp = findViewById(containers[i]);
                temp.setImageResource(images[i]);
            }
        }
    });
}

【问题讨论】:

  • 欢迎来到 Stack Overflow(我注意到这是你在这里的第一天)。请显示一些代码,以便我们更好地了解您的情况(我已经有了一些大致的想法,但我想确保我是正确的,而不是猜测)
  • 方法的开头好像不见了——是onCreate()吗?
  • 是的,它是 onCreate
  • 我把遗漏的部分编辑进去了,如有错误请指正
  • 再次感谢您!我已经编辑了一小部分,现在它工作正常!谢谢!

标签: android image imageview android-imageview


【解决方案1】:

您可以像这样使用postDelayed()android.os.Handler

final int baseDelay = 1000;
final Handler handler = new Handler();

load.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            for (int i = 0; i < containers.length; i++) {
                    final int ifinal = i;
                    handler.postDelayed(new Runnable(){
                    public void run(){
                    final ImageView temp = findViewById(containers[ifinal]);                       
                    temp.setImageResource(images[ifinal]);
                    }
                }, i * baseDelay);

            }
        }
    });

【讨论】:

  • 非常感谢您的帮助!我试试看!
  • @YuryPilath - 如果我在没有 IDE 的情况下编写代码会发生这种情况:感谢您的编辑 :)
猜你喜欢
  • 1970-01-01
  • 2021-12-14
  • 2016-09-07
  • 2015-07-05
  • 2012-11-09
  • 2014-04-07
  • 1970-01-01
  • 2021-12-01
  • 1970-01-01
相关资源
最近更新 更多