Подтвердить что ты не робот

Получение черного ImageView с использованием Picasso и Glide

Проблема

Я пишу приложение для Android, которое должно иметь функцию "Слайд-шоу". Я нашел эту симпатичную библиотеку, основанную на Picasso, которая делает именно то, что я хотел, и она отлично работала большую часть времени.

Проблема в том, что мои изображения не загружаются в слайд ImageView... Он показывает только "черный холст", как вы можете видеть на скриншоте ниже.

введите описание изображения здесь

Я загружаю изображение из локального ресурса из моих чертежей. Иногда это происходит в режиме портрета, иногда в ландшафтном режиме. Не имеет значения, какое изображение я использую, иногда происходит "чернота".

EDIT: Я использую Android 5.0.2 и 4.4.2. Кажется, что это не происходит в 4.4.2. Только на 5.0.2.

Второе редактирование: Это произошло на Moto X 2014 с android 5.1.

Третье редактирование: Изображения, которые я пытаюсь загрузить, имеют 45 КБ на диске с разрешением 900x445.

Тем не менее, другое редактирование: Я включил компоновку, как было предложено, и это были результаты:

Single slide

И это происходит в прокрутке.

введите описание изображения здесь

И иногда он становится белым, а не черным (или белый, затем черный).

введите описание изображения здесь

Что-то еще, что я пробовал: Мои чертежи были расположены в папке res/drawable, когда я изменил файлы из этой папки на res/drawable-xxxhdpi слайдер, работающий на устройстве 5.0.2, WTF???дел >

Что я пробовал до сих пор

Я пробовал разные изображения, загружал несколько изображений на слайде и даже этот запрос на растяжение, который меняет Picasso на Glide на lib, Кажется, что ничего не работает, и ошибка кажется случайной.

Как только я попытался использовать URL-адреса из Интернета вместо фактических чертежей на локальном хранилище, он сработал. С теми же изображениями.

Вот как я загружаю изображения:

Fragment.java

private SliderLayout slider;
private PagerIndicator indicator;

// ...

private void setupSlider() {

    HashMap<String,Integer> file_maps = new HashMap<>();

    file_maps.put("Blah",R.drawable.banner_1);
    file_maps.put("Bleh",R.drawable.banner_2);
    file_maps.put("Blih",R.drawable.banner_3);
    file_maps.put("Bloh",R.drawable.banner_4);

    for (String name : file_maps.keySet()) {

        DefaultSliderView dsv = new DefaultSliderView(getActivity());

        dsv.description(name)
                .image(file_maps.get(name))
                .error(R.drawable.banner_error)
                .empty(R.drawable.empty)
                .setScaleType(BaseSliderView.ScaleType.Fit)
                .setOnSliderClickListener(this);

        //add your extra information
        dsv.bundle(new Bundle());
        dsv.getBundle()
                .putString("extra",name);

        slider.addSlider(dsv);
    }

    slider.setPresetTransformer(SliderLayout.Transformer.Default);
    slider.setCustomIndicator(indicator);
    slider.setCustomAnimation(new DescriptionAnimation());
    slider.setDuration(4000);
    slider.addOnPageChangeListener(this);

}

fragment.xml

<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    xmlns:custom="http://schemas.android.com/apk/res-auto"
    tools:context="com.example.fragments.Fragment"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content">

    <ScrollView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/sv_main">

        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:id="@+id/rl_main">

            <com.daimajia.slider.library.SliderLayout
                android:id="@+id/slider"
                android:layout_width="match_parent"
                android:layout_height="200dp"
                />
            <com.daimajia.slider.library.Indicators.PagerIndicator
                android:id="@+id/custom_indicator"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentEnd="true"
                android:layout_alignParentRight="true"
                android:layout_below="@+id/slider"
                custom:shape="oval"
                custom:selected_color="#00BFA5"
                custom:unselected_color="#55333333"
                custom:selected_padding_left="@dimen/spacing_medium"
                custom:selected_padding_right="@dimen/spacing_medium"
                custom:selected_padding_top="3dp"
                custom:selected_padding_bottom="@dimen/spacing_small"
                custom:unselected_padding_left="@dimen/spacing_medium"
                custom:unselected_padding_right="@dimen/spacing_medium"
                custom:unselected_padding_top="@dimen/spacing_small"
                custom:unselected_padding_bottom="4dp"
                custom:selected_width="@dimen/spacing_medium"
                custom:selected_height="@dimen/spacing_medium"
                custom:unselected_width="6dp"
                custom:unselected_height="6dp"
                />

            <LinearLayout
                android:orientation="vertical"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:layout_below="@+id/custom_indicator"
                android:id="@+id/ll_main_body">

            </LinearLayout>

        </RelativeLayout>

    </ScrollView>

    <!-- Other stuff -->

</RelativeLayout>

Я следую учебник из библиотеки wiki. И никаких ошибок в LogCat не возникает, что затрудняет решение этой проблемы.

Любые идеи?

4b9b3361

Ответ 1

Создать папку ресурса Именованное drawable-nodpi в этой папке помещает ваши изображения вместо разных папок или папки с возможностью перемещения.

Ответ 2

Пробовали ли вы использовать ViewPager с ImageView и передавать массив URI изображений на адаптер? Я думаю, что вы сможете избежать/отлаживать намного лучше, если вы его реализуете самостоятельно.

Ответ 3

Эта библиотека отлично работает для меня, в первый раз, когда я ее использовал. Это действительно хорошая библиотека.

Первая

SliderLayout не ссылается ни на что. То, где происходит волшебство. Сделайте макет xml и обратитесь к нему с помощью SliderLayout. После этого не забудьте вызвать startAutoScroll() и в onPause() stopAutoScroll().

https://github.com/daimajia/AndroidImageSlider/wiki/Start-Using

Ссылка выше - это в основном все, что вам нужно.

Второй

Проблема также может заключаться в том, что она находится внутри scrollView. Обратные вызовы прокрутки могут быть неправильными.

Сделайте простой макет, начните с простого слайдера и поработайте с настройками.

Удачи.