在Android中为ImageView设置图像的最便宜的方法

时间:2014-11-29 13:27:27

标签: android imageview

我需要为游戏快速(以毫秒为单位)更改图像。我使用ImageViews和setImageResource()将图像设置为ImageViews。下面是记录操作执行时间的日志。

  1. 10ms - Pattern4
  2. 10ms - Pattern4
  3. 4ms - Pattern4
  4. 6ms - Pattern4
  5. 172ms - Pattern3
  6. 186ms - Pattern1
  7. 174ms - Pattern2
  8. 84ms - Pattern1
  9. 45ms - Pattern2
  10. 196ms - Pattern3
  11. 9ms - Pattern3
  12. 4ms - Pattern2
  13. 70ms - Pattern1
  14. 0ms - Pattern1
  15. 2ms - Pattern3
  16. 40ms - Pattern2
  17. 代码:

        for (int i = 0; i < 9; i++) {
            buttons[i].setImageResource(current_set[i + 2]);
            buttons[i].setTag(current_set[i + 2]);
            buttons[i].requestLayout();
        }
    

    上面提到的持续时间是执行相同操作的16个方法调用所花费的时间(为9个ImageView设置图像)。

    1. 为什么模式中同一组9张图片的持续时间完全不同于setImageResource()9次(每次方法调用)?

    2. 你能否建议其他技术来减少“setImagResource()”所带来的时间消耗?

    3. 非常感谢。

1 个答案:

答案 0 :(得分:0)

我认为您可以将图像添加到LevelListDrawable,为按钮设置此drawable,然后使用setLevel()为按钮设置图像,因此不需要requestLayout()。

for (int i = 0; i < 9; i++) {
        buttons[i].setImageLevel(current_set[i + 2]); // current_set now store image level
        buttons[i].setTag(current_set[i + 2]);
        //buttons[i].requestLayout();
    }