【问题标题】:ImageView flickers between its drawablesImageView 在其可绘制对象之间闪烁
【发布时间】:2019-11-04 16:05:19
【问题描述】:

我有一个具有不同图形元素 (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 

【问题讨论】:

  • 请发布您的代码

标签: java android imageview drawable flicker


【解决方案1】:

在我的脑海中,试试这些:

  1. 将所有findViewById 代码移动到您的活动的onCreate,以避免多次调用它。

  2. R.drawable.lampaljusR.drawable.lampaslockn 和其他资产有多大,尺寸明智。因为尝试加载高分辨率绘图,尤其是 PNG,会占用大量内存。

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

【讨论】:

    猜你喜欢
    • 2011-03-10
    • 2017-05-23
    • 1970-01-01
    • 1970-01-01
    • 2015-11-20
    • 1970-01-01
    • 2011-09-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多