图像加载时间太长?

编辑:

在做了一个方法跟踪之后,每当我用紫色正方形切换时,图形就会上升很多。当我用蓝色或绿色圆圈切换时,它会保持低电平:

enter image description here

以下是与紫色正方形交换的方法:

enter image description here

我有一个交换两个按钮的应用程序。有一个红色按钮,当它被点击时,它会从其他三个按钮中随机选择一个按钮,然后交换。

我尝试通过交换图像来做到这一点。在onClickListener中,我只听带有红色按钮的按钮的点击。

  1. 获取随机图像
  2. 将其设为空白
  3. 查找红色按钮
  4. 提供随机图像具有的红色按钮背景(交换)
  5. 给出随机图像(现在是空白的)红色背景

如果这令人困惑...离开它。但:

每当我将图像从较大的图像切换到较小的图像时,该过程都会花费更长的时间。在两个较小的图像之间切换时,它要快得多。我该如何解决这个问题。是否有适合Android的特定图像大小?

enter image description here

下面是布局代码:

https://gist.github.com/anonymous/813883bce89606d2a82e

正如您在图像中看到的那样,与紫色正方形相比,将背景图像与蓝色圆圈交换所需的时间要短得多(很多!)。为什么。。。?



为什么根据图像大小,这种方式(我只是更改图像并检查带有红色图像的按钮)会变慢?我应该使用什么大小的图像?

非常感谢您抽出宝贵时间


答案 1

我的第一个猜测是,你有一些需要很长时间才能加载的大PNG。

但是,我们有很好的工具来帮助我们真正找到答案 - 所以我们不必猜测!

在执行切换时,执行方法跟踪(可在 Android Studio 的 CPU 选项卡中查看,或在 Eclipse+ADT 中的 DDMS 视图中提供),您应该会看到需要时间的内容。


答案 2

我没有你问题的确切答案,但只有2个建议:

1)确保在绘图之前先缩放图像。

2) 使用相对布局会导致您的视图组测量你的孩子两次,而不是一次。因此,请确保您没有执行任何触发点击事件重新布局的操作

3)我建议你把这些视图放在GridView或GridLayout中,然后当你需要交换你的视图时,只需交换数据中视图的位置(例如数组),然后调用 notifyDataSetChanged();希望这有帮助


推荐