Android示例应用:开源框架Glide的使用

2019-12-17 13:02| 发布者: |

Android开源结构Glide的运用-示例运用

加载网络图片

引进对应的库

compile 'com.android.support:recyclerview-v7:25.0.0'
compile 'com.github.bumptech.glide:glide:3.7.0'

创立RecyclerView的布局res/layout/fragment_list.xml

 ?xml version="1.0" encoding="utf-8"? 
 android.support.v7.widget.RecyclerView
 xmlns:android="http://schemas.android.com/apk/res/android"
 android:layout_width="match_parent"
 android:layout_height="match_parent"
 android:id="@+id/recycler_view" /android.support.v7.widget.RecyclerView 

创立RecyclerView的每个item的布局 res/layout/list_item.xml

需求留意不要都写成match_parent或wrap_content,否则就显现不出来瀑布流的作用

 ?xml version="1.0" encoding="utf-8"? 
 LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 android:orientation="vertical" android:layout_width="match_parent"
 android:layout_height="wrap_content" 
 ImageView
 android:layout_width="match_parent"
 android:layout_height="wrap_content"
 android:adjustViewBounds="true"
 android:id="@+id/image"/ 
 /LinearLayout 

创立RecyclerView的适配器,GankAdapter.java,首要的代码逻辑如下

@Override
public ViewHolder onCreateViewHolder {
 View v = LayoutInflater.from.inflate;
 return new ViewHolder;
@Override
public void onBindViewHolder {
 final String url = mItems.get;
 Log.e;
 Glide.with
 .load
 .placeholder
 .diskCacheStrategy
 .into;
 holder.image.setOnClickListener{
 @Override
 public void onClick {
 Intent intent = new Intent;
 intent.setClass;
 intent.putExtra;
 mContext.startActivity;
@Override
public int getItemCount {
 return mItems.size;
public class ViewHolder extends RecyclerView.ViewHolder{
 ImageView image;
 public ViewHolder {
 super;
 image = itemView.findViewById;
}

显现RecyclerView,创立一个Fragment来显现 GankFragment.java
首要的显现逻辑如下:


@Nullable
@Override
public View onCreateView {
 View v = inflater.inflate;
 mClient = new OkHttpClient;
 mReyclerView =  v.findViewById;
 mReyclerView.setLayoutManager);
 mAdapter = new GankAdapter,mUrls);
 mReyclerView.setAdapter;
 loadApi;
 mReyclerView.addOnScrollListener {
 @Override
 public void onScrollStateChanged {
 super.onScrollStateChanged;
 @Override
 public void onScrolled {
 super.onScrolled;
 if){
 Log.e;
 index += 1;
 loadApi;
 return v;
}

为了加载网络图片,引进了OkHttpClient的第三方库

compile 'com.squareup.okhttp3:okhttp:3.4.1'

加载网络的图片的逻辑

private void loadApi{
 Request request = new Request.Builder.url.build;
 mClient.newCall.enqueue {
 @Override
 public void onFailure {
 Log.e;
 e.printStackTrace;
 @Override
 public void onResponse throws IOException {
 if){
 String result = response.body.string;
 try {
 JSONObject json = new JSONObject;
 JSONArray array = new JSONArray);
 for;i++){
 JSONObject ob = array.getJSONObject;
 mUrls.add);
 Log.e);
 mHandler.sendEmptyMessage;
 }catch {
 e.printStackTrace;
}

运用Glide加载本地图片,和网络图片运用的是同一个适配器的代码GankAdapter.java
显现逻辑代码LocalAlbumFragment.java,首要是从本地图画数据库中加载数据


private void loadAlbum{
 AsyncTask Void, Void, Void asyncTask = new AsyncTask Void, Void, Void  {
 @Override
 protected Void doInBackground {
 Cursor c = getContext.getContentResolver.query;
 if 0 c.moveToFirst){
 while ){
 mData.add));
 return null;
 @Override
 protected void onPostExecute {
 mHandler.sendEmptyMessage;
 asyncTask.execute;
}

运用Glide库时,能够对图画做一些改换处理,如:圆角,含糊等处理,运用Glide的.bitmapTransform办法,
自己需求写对应的改换的办法,可是现在有很好的第三方库现已对一些常用的改换做了封装,能够直接运用,不要重复造轮子
引进第三方图画改换库 :glide-transformations



compile 'jp.wasabeef:glide-transformations:2.0.1'

这个库供给许多的改换,如 取舍相关的,色彩改变相关的,含糊相关的等,详细的请参阅 源码
试用了一个圆形的作用


Glide.with
 .load
 .placeholder
 .diskCacheStrategy
 .bitmapTransform) //运用圆形改换,还能够运用其他的改换
 .into;

当然,假如对这些作用都不满足,能够自己写对应的改换作用

<
>
关于我们
AB模版网成立于2014年,我们是一家专注用户体验设计开发与互联网品牌建设的设计公司,创立至今为2000多位客户提供了创新与专业的设计方案。设计服务范围包括:交互原型设计、产品视觉设计、网站设计与开发建设、移动及软件产品界面设计、图标设计、品牌及平面设计等。

联系我们

13588889999服务时间:9:00-18:00)

admin@adminbuy.cn

官方微信官方微信

部门热线

前   台:13588889999
业务部:13588889999
客服部:13588889999
技术部:13566667777
人事部:13566667777

咨询电话13588889999 返回顶部
返回顶部