web-dev-qa-db-ja.com

ピカソとグライドを使用して黒のImageViewを取得する

問題

私はAndroid「スライドショー」機能を備えているはずのアプリを書いています。ピカソに基づいて この素敵なライブラリ を見つけました。私が欲しかったもの、そしてそれはほとんどの場合うまくいきました。

問題は、画像がスライドに読み込まれないことがあることですImageView...下のスクリーンショットにあるように、「黒いキャンバス」しか表示されません。

enter image description here

ドローアブルのローカルリソースから画像を読み込んでいます。ポートレートモードで発生することもあれば、ランドスケープモードで発生することもあります。どの画像を使用するかは関係ありません。「黒さ」が発生することもあります。

編集:

  • 私はAndroid 5.0.2および4.4.2-を使用しています。4.4.2では発生しないようです。5.0.2。

  • これは、Moto X2014でAndroid 5.1で発生しました。

  • 私がロードしようとしている画像は、900x445の解像度でディスク上に45KBあります。

  • 提案されているようにレイアウト四角形をオンにしました。結果は次のとおりです。

Single slide

そして、それはスクロールでそのように保ちます。

enter image description here

そして時々、それは黒の代わりに白になります(または白、そして黒)。

enter image description here

私が試した他の何か:ファイルをそのフォルダーからres/drawableに変更したとき、私のドローアブルはres/drawable-xxxhdpiフォルダーにありました。 5.0.2デバイス。 wtf ???

これまでに何を試しましたか

スライドに複数の画像をロードするために、さまざまな画像を試しました。さらに、ライブラリでピカソをグライドに変更する このプルリクエスト も試しました。何も機能していないようで、エラーはランダムに見えます。

ローカルストレージ上の実際のドローアブルの代わりにWebからの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にエラーがスローされていないため、これを解決するのが非常に困難になっています。

何か案は?

42
Mauker

Drawable-nodpiという名前のリソースフォルダーをそのフォルダーに作成し、別のフォルダーやドローアブルフォルダーの代わりに画像を配置します。

1
Praveen

このライブラリは、初めて使用したときは問題なく動作します。本当に素敵な図書館です。

最初

SliderLayoutは何からも参照されていません。ここで魔法が起こります。 xmlレイアウトを作成し、SliderLayoutで参照します。その後、startAutoScroll()を呼び出し、onPause()でstopAutoScroll()を呼び出すことを忘れないでください。

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

上記のリンクは基本的にあなたが必要とするすべてです。

問題は、scrollView内にあることでもある可能性があります。スクロールコールバックが誤動作している可能性があります。

シンプルなレイアウトを作成し、シンプルなスライダーから始めて、カスタマイズを進めていきます。

幸運を。

0
Arnold Balliu

ViewPagerImageViewを使用して、画像URIの配列をアダプターに渡してみましたか?自分で実装すれば、回避/デバッグがはるかにうまくいくと思います。

0
esoxjem