ImageView мерцает между рисованием - PullRequest
0 голосов
/ 04 ноября 2019

У меня есть приложение для Android с различными графическими элементами (ImageViews). Некоторые ImageViews можно изменить, нажав их, и тогда они покажут другую графику. У меня есть две системы для этого, и моя проблема одинакова для обеих.

В первом случае я наложил два 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 

1 Ответ

0 голосов
/ 04 ноября 2019

В верхней части моей головы, попробуйте следующее:

  1. Переместите весь код findViewById на onCreate своей активности, чтобы не вызывать его несколько раз.

  2. Насколько велики активы R.drawable.lampaljus, R.drawable.lampaslockn и другие по размерам. Потому что попытка загрузки объектов высокого разрешения, особенно PNG, займет много памяти.

Но я могу предложить лучшее решение, если вы сможете опубликовать целые xml и Activity/Fragment код.

...