42 votes

Mise en noir ImageView à l'aide de Picasso et de la Glisse

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.

enter image description here

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:

Single slide

Et il garder comme ça sur parchemin.

enter image description here

Et parfois, il devient blanc au lieu de noir (Ou blanc, puis noir).

enter image description here

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?

1voto

Praveen Kanwar Points 1

Créer Un Dossier de Ressources Nommé drawable-nodpi dans ce dossier mettre vos images à la place des différents dossiers ou drawable dossier.

0voto

esoxjem Points 18

Avez-vous essayé d'utiliser un ViewPager avec un ImageView et le passage d'un tableau d'image Uri sur la carte? Je pense que vous seriez en mesure d'éviter/debug beaucoup mieux si vous l'appliquer à vous-même.

0voto

ArnoldB Points 248

Cette bibliothèque fonctionne très bien pour moi, la première fois que je l'ai utilisé. C'est vraiment une très belle bibliothèque.

Première

SliderLayout n'est pas référencé par quoi que ce soit. C'est là que la magie se produit. Faire une mise en page xml et de le désigner par SliderLayout. Après cela, n'oubliez pas d'appeler startAutoScroll() et dans onPause() stopAutoScroll().

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

Le lien ci-dessus est essentiellement tout ce que vous besoin.

Deuxième

Le problème pourrait aussi être que c'est à l'intérieur d'un scrollView. Le défilement des rappels peuvent être défaillante.

Faire une mise en page simple, commencer avec un simple curseur et votre façon de travailler avec les personnalisations.

Bonne chance.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X