Le problème
Je suis en train d'écrire une application Android qui est censé avoir un "Diaporama" sur elle. J'ai trouvé cette belle bibliothèque, basé sur Picasso, qui fait exactement ce que je voulais, et il a très bien fonctionné la plupart du temps.
Le problème est que, parfois, mes images ne sont pas chargées dans la diapositive ImageView
... Il montre seulement une "toile noir" comme vous pouvez le voir sur la capture d'écran ci-dessous.
Je suis le chargement de l'image à partir d'une ressource locale à partir de mon un drawable. Parfois, il arrive sur mode Portrait, parfois sur le mode Paysage. Il n'est pas question que l'image que j'utilise, parfois, que "noir" qui se passe.
EDIT: je suis sous Android 5.0.2 et 4.4.2 - Il ne semble pas se produire sur 4.4.2. Uniquement sur la version 5.0.2.
Deuxième edit: C'est arrivé sur un Moto X 2014 avec android 5.1.
Troisième édition: Les images que je suis en train de charger ont 45KB sur le disque avec une résolution de 900x445.
Pourtant, un autre edit: j'ai tourné sur la mise en page rects, comme l'a suggéré, et voici les résultats:
Et il garder comme ça sur parchemin.
Et parfois, il devient blanc au lieu de noir (Ou blanc, puis noir).
Autre chose, j'ai essayé: Mon un drawable étaient situés sur l' res/drawable
le dossier, quand j'ai changé les fichiers de ce dossier dans le dossier res/drawable-xxxhdpi
le curseur a travaillé sur la version 5.0.2 de l'appareil. wtf???
Ce que j'ai essayé jusqu'à présent
J'ai essayé différentes images, de charger plusieurs images sur la diapositive, et même ce pull request que les changements de Picasso à Glisser sur la lib. Rien ne semble fonctionner et l'erreur semble aléatoire.
Une fois que j'ai essayé d'utiliser l'Url à partir du web à la place de l'un drawable sur le local de stockage, il a travaillé. Avec exactement les mêmes images.
Voici la façon dont je suis le chargement des images:
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>
Je suis en suivant le tutoriel de la libs page wiki. Et sans erreurs se sont jetés sur le LogCat, ce qui rend ce beaucoup plus difficile à résoudre.
Des idées?