glideはロードできない画像を表示します

9120 ワード

に質問
本当はDemo用にglideを書こうと思っていたのですが、前に使ったことがありますが、簡単に使うだけで、深く研究していませんでした.しかし、問題が発生しました.新しいプロジェクトを作成した後、レイアウトにImageViewを追加しました.

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/activity_main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context="com.kite.imageloader.MainActivity">

    <ImageView
        android:id="@+id/image"
        android:src="@mipmap/ic_launcher"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />
LinearLayout>

次に、glide依存を追加します.最後に、MainActivityに次のコードを書いてテストします.
public class MainActivity extends AppCompatActivity {
    private static final String TAG = "MainActivity";
    ImageView imageView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        imageView = (ImageView) findViewById(R.id.image);
        Toast.makeText(this, "kkk", Toast.LENGTH_SHORT).show();
        Glide.with(this).load("http://7xi8d6.com1.z0.glb.clouddn.com/16124047_121657248344062_4191645221970247680_n.jpg")
                .into(imageView);
    }

このようにして、画像がなかなか表示されないので、依存していないのか、追加していないのか、ImageViewのidが正しく引用されていないのかなど考えていましたが、結果は出ませんでした
ぶんせき
これでエラーメッセージが見られるといいと思っていたのですが、ロゴを見ても、私が欲しい情報はありませんでした.後にGlideがlistener()メソッドを提供していることが分かった.そこで私はそれを加えました.
package com.kite.imageloader;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.widget.ImageView;
import android.widget.Toast;

import com.bumptech.glide.Glide;
import com.bumptech.glide.load.resource.drawable.GlideDrawable;
import com.bumptech.glide.request.RequestListener;
import com.bumptech.glide.request.target.Target;

public class MainActivity extends AppCompatActivity {
    private static final String TAG = "MainActivity";
    ImageView imageView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        imageView = (ImageView) findViewById(R.id.image);
        Toast.makeText(this, "kkk", Toast.LENGTH_SHORT).show();
                Glide.with(this).load("http://7xi8d6.com1.z0.glb.clouddn.com/16124047_121657248344062_4191645221970247680_n.jpg")
                .listener(mRequestListener)
                .into(imageView);

   RequestListener mRequestListener = new RequestListener() {
        @Override
        public boolean onLoadFailed(@Nullable GlideException e, Object model, Target target, boolean isFirstResource) {
            Log.d(TAG, "onException: " + e.toString()+"  model:"+model+" isFirstResource: "+isFirstResource);
            imageView.setImageResource(R.mipmap.ic_launcher);
            return false;
        }

        @Override
        public boolean onResourceReady(Object resource, Object model, Target target, DataSource dataSource, boolean isFirstResource) {
            Log.e(TAG,  "model:"+model+" isFirstResource: "+isFirstResource);
            return false;
        }
    };
}

ロゴは次のように印刷されます.
D/MainActivity: onException: java.lang.SecurityException: Permission denied (missing INTERNET permission?)  model:http://7xi8d6.com1.z0.glb.clouddn.com/16124047_121657248344062_4191645221970247680_n.jpg isFirstResource: true

元:Permission denied(missing INTERNET permission?)
そこで私はAndroidManifestにを加えて成功しました.