glide 显示 加载不出来 图片
在Android设备上,加载网络图片一直是一个头疼的问题,因为Android设备种类繁多(当然最主要的是配置),处理的稍不周到轻则应用卡顿,严重者就会出现OOM的,导致程序挂掉。现如今网络上有很多图片库,如 Universal-Image-Loader,Picasso,Fresco,Glide等等。相信列举出的这几个库大家都不陌生,这也是目前最火的图片库了。由于个人的喜好原因(主要是别人介绍说Gl
·
问题
本来想写个Demo用下glide,虽说之前用过,但是只是简单地使用,并没有深入研究。但是,却遇到问题:
新建好项目之后,在布局中加了ImageView.
<?xml version="1.0" encoding="utf-8"?>
<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是不是没有正确引用等等,但是没有结果
分析
想着如此能看到报错信息就好了,可是查看log,也没有我想要的信息。
后来发现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;
}
};
}
打印出log如下:
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加上
<uses-permission android:name="android.permission.INTERNET"/>
于是成功了。
更多推荐
已为社区贡献1条内容
所有评论(0)