图像需要太长时间才能加载?

时间:2015-11-27 05:16:51

标签: java android multithreading performance android-layout

编辑:

在进行方法跟踪后,每当我用紫色方块切换时,图形会上升很多。当我用蓝色或绿色圆圈切换时,它会保持低位:

enter image description here

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

enter image description here

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

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

  1. 获取随机图片
  2. 将其设为空白
  3. 寻找红色按钮
  4. 给出随机图像具有的红色按钮背景(交换)
  5. 提供随机图片(现在为空白)红色背景
  6. 如果这令人困惑......请留下。但是:

    每当我将图像从较大的图像切换为较小的图像时,该过程需要更长的时间。在两个较小的图像之间交换时要快得多。我该如何解决。是否有一个最适合Android的图像大小?

    enter image description here

    这是布局代码:

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

    正如你在图像中看到的那样,用蓝色圆圈比紫色方块交换背景图像需要花费更多(很多!)。为什么......?

    为什么(根据图像尺寸,我只是更改图像并检查带红色图像的按钮的方式)较慢? 我应该使用什么图片尺寸?

    非常感谢你的时间

3 个答案:

答案 0 :(得分:2)

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

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

在进行切换时,执行方法跟踪(在Android Studio的CPU选项卡中可用,或在Eclipse + ADT中的DDMS视图中),您应该看到花费时间的方法。

答案 1 :(得分:2)

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

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

2)使用RelativeLayout会导致ViewGroup测量您的孩子两次而不是一次。因此,请确保您不会触发任何触发点击事件的重新布局

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

答案 2 :(得分:2)

显然,图像尺寸会影响速度。所以,我所做的就是改变我的形象。我在照相馆做过这个,但你可以在paint中进行,或者你可以在image-sizer网站上进行。只需在谷歌搜索,然后输入维度56 x 56。出于某种原因,这些维度效果最好。

这是一个图像缩放工具:

http://www.picresize.com/

在这个网站上,只需从您的计算机中选择您的图像,然后下一个屏幕就会显示调整大小:enter image description here

paint中执行此操作:

enter image description here

虽然赏金已经结束,但我刚刚发布了这篇文章,以帮助人们知道如何做到这一点。 我仍然不知道为什么图像尺寸重要如果有人解释为什么我必须修复图像尺寸,我会非常感激,尽管我知道如何

谢谢,

的NullPointerException