Glide-Android下高效加载多媒体文件




1. 实例 

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.ListView;

import com.bumptech.glide.Glide;

/**
 * Android Glide是一个开源的图片加载和缓存处理的第三方框架
 * Android Glide使自身内部已经实现了缓存策略,使得开发者摆脱Android图片加载的琐碎事务,专注逻辑业务的代码。
 * Android Glide使用便利,短短几行简单明晰的代码,即可完成大多数图片从网络(或者本地)加载、显示的功能需求
 * 使用Android Glide,需要先下载Android Glide的库
 * 把jar包下载后导入到本地的libs里面即可直接使用
 *
 * Glide 支持获取,解压展示视频, 图像和GIFs,
 * Glide有一个可弹性的api可以让开发者自定义网络栈技术,
 * 默认使用HttpUrlConnection , 你可以替换为  Google’s Volley或者 OkHttp
 *
 */


public class MainActivity extends Activity {
    private Activity mActivity;
    private ListView mListviewMain;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mActivity = this;
        /**
         * 初始化控件
         */
        assignViews();
        /**
         * 为Listview设置显示数据
         */
        mListviewMain.setAdapter(new ImageAdapter());
    }
    private void assignViews() {
        mListviewMain = (ListView) findViewById(R.id.listview_main);
    }
    class ImageAdapter extends BaseAdapter{
        @Override
        public int getCount() {
            return 100;
        }
        @Override
        public Object getItem(int position) {
            return position;
        }
        @Override
        public long getItemId(int position) {
            return 0;
        }
        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            if (convertView == null) {
                convertView = View.inflate(mActivity,R.layout.item_listview_main,null);
            }
            ImageView iv = (ImageView) convertView.findViewById(R.id.listview_imageview);
            Glide.with(mActivity).load("http://www.xxjxsj.cn/article/UploadPic/2009-10/2009101018545196251.jpg")
                    .centerCrop()
            /**
             * 缺省的占位图片,一般可以设置成一个加载中的进度GIF图
             */.placeholder(R.mipmap.ic_launcher).crossFade().into(iv);

            return convertView;
        }
    }










2. 使用其他的网络请求框架

2.1 使用Volley

Gradle

dependencies {
    compile 'com.github.bumptech.glide:volley-integration:1.0.+'
    compile 'com.mcxiaoke.volley:library:1.0.+'
}

Maven
<dependency>
    <groupId>com.github.bumptech.glide</groupId>
    <artifactId>volley-integration</artifactId>
    <version>1.0.1</version>
    <type>jar</type>
</dependency>
<dependency>
    <groupId>com.mcxiaoke.volley</groupId>
    <artifactId>library</artifactId>
    <version>1.0.5</version>
    <type>aar</type>
</dependency>

然后Activity或者程序中,注册Volley为基本模块

public void onCreate() {
  Glide.get(this).register(GlideUrl.class, InputStream.class,
        new VolleyUrlLoader.Factory(yourRequestQueue));
  ...
}


2.2 使用 OkHttp

Gradle

dependencies {
    compile 'com.github.bumptech.glide:okhttp-integration:1.0.+'
    compile 'com.squareup.okhttp:okhttp:2.0.+'
}


Maven

<dependency>
    <groupId>com.github.bumptech.glide</groupId>
    <artifactId>okhttp-integration</artifactId>
    <version>1.0.1</version>
    <type>jar</type>
</dependency>
<dependency>
    <groupId>com.squareup.okhttp</groupId>
    <artifactId>okhttp</artifactId>
    <version>2.0.0</version>
    <type>jar</type>
</dependency>



然后Activity或者程序中,注册Volley为基本模块

public void onCreate() {
  Glide.get(this).register(GlideUrl.class, InputStream.class,
        new OkHttpUrlLoader.Factory(yourOkHttpClient));
  ...
}




















早起的年轻人 CSDN认证博客专家 移动开发 项目管理 Java
只要用心去做,每一件事情还是有可能成功的,当然成功是没有界限的,只不过是达到自己心里的那个目标,公众号:我的大前端生涯,一个爱喝茶的程序员,通常会搞搞SpringBoot 、Herbinate、Mybatiys、Android、iOS、Flutter、Vue、小程序等.
©️2020 CSDN 皮肤主题: 代码科技 设计师:Amelia_0503 返回首页