我有一个具有不同图形元素(ImageViews)的android应用。可以通过按某些ImageView来更改它们,然后它们将显示另一个图形。我为此有两个系统,而我的问题都相同。

在第一种情况下,我将两个ImageView彼此叠加,然后分别调用它们并以编程方式设置其可见性。在第二种情况下,我使用函数“ setImageResource”并在不同的可绘制对象之间进行更改。

在这两种情况下,我都有一个问题,即该应用程序似乎经常“启动”,并且一瞬间就为每个具有图形替换的元素显示了错误的“其他”图形元素。短暂显示错误的图形,然后跳回正确的图形。

我在网上找不到任何有关此问题的信息,这里的任何人都知道此问题或对可能的问题有任何线索?

相关代码:

public void setLight1(int bo) // changes a graphical element by drawable
{
    ImageView vw = (ImageView) findViewById(R.id.light_1);

    if (bo > 0)
        vw.setImageResource(R.drawable.lampaljus);
    else
        vw.setImageResource(R.drawable.lampaslockn);
}

private void setStickMid(int stick) // changing between two layered imageViews
{
    switch (stick)
    {
        case 1:
            ImageView vw_1 = (ImageView) findViewById(R.id.stick_1_up);
            vw_1.setVisibility(View.INVISIBLE);
            ImageView vw_2 = (ImageView) findViewById(R.id.stick_1);
            vw_2.setVisibility(View.VISIBLE);
            break;
    // the rest of the switch statement omitted, just more of the same

最佳答案

尝试以下方法:


将所有findViewById代码移至活动的onCreate,以避免多次调用。
尺寸R.drawable.lampaljusR.drawable.lampaslockn和其他资产的大小是明智的。因为尝试加载高分辨率可绘制对象(尤其是PNG)会占用大量内存。


但是,如果您可以发布整个xmlActivity/Fragment代码,那么我可以提供更好的解决方案。

08-05 01:19