Проблема
Я пишу приложение для 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.
Тем не менее, другое редактирование: Я включил компоновку, как было предложено, и это были результаты:
И это происходит в прокрутке.
И иногда он становится белым, а не черным (или белый, затем черный).
Что-то еще, что я пробовал: Мои чертежи были расположены в папке 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 не возникает, что затрудняет решение этой проблемы.
Любые идеи?