CardsLib с библиотеками вращающихся колес — получение ширины и высоты должно быть> 0 при пролистывании

#android

#Android

Вопрос:

Я создаю приложение, которое использует обе библиотеки Android-spinnerwheel и cardsLib. SpinnerWheel работает просто отлично, но когда я пытаюсь использовать swipe для удаления функции cardsLib, что-то происходит с spinnerWheel. Ошибка заключается в следующем:

 06-21 10:43:04.873  17102-17102/com.bitcoinwatcher.app E/AndroidRuntimeFATAL EXCEPTION: main
    java.lang.IllegalArgumentException: width and height must be > 0
            at android.graphics.Bitmap.createBitmap(Bitmap.java:638)
            at android.graphics.Bitmap.createBitmap(Bitmap.java:620)
            at antistatic.spinnerwheel.AbstractWheelView.recreateAssets(AbstractWheelView.java:185)
            at antistatic.spinnerwheel.AbstractWheel.onLayout(AbstractWheel.java:457)
 

Я думаю, мне каким-то образом нужно сообщить колесу, что оно удаляется, но я не смог выяснить, как именно.
Даже если мне удастся это сделать, это произойдет до того, как произойдет моя реализация:

     @Override
    public void onSwipe(Card card) {
    }

    @Override
    public void onUndoSwipe(Card card) {
    }
}
 

Комментарии:

1. В ошибке указано, что ширина и высота должны быть> 0. Вы это проверили?

Ответ №1:

Что ж, решение довольно простое. Похоже, что CardsLib непрерывно рисует ползунок, даже когда он не виден, заставляя его рисовать с шириной / высотой растрового изображения 0. Добавление следующей проверки безопасности

 if (width == 0 || height == 0)
    return;
 

для AbstractWheelView.java устранения проблемы.
итак, в заключение,

 protected void recreateAssets(int width, int height) {
    if (width == 0 || height == 0)
        return;
    mSpinBitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
    mSeparatorsBitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
    setSelectorPaintCoeff(0);
}