妹子图APP(一)—— Retrofit+Glide+Gson加载网络图片
compile 'com.squareup.retrofit2:retrofit:2.0.0-beta4'//Retrofit2所需要的包compile 'com.squareup.retrofit2:converter-gson:2.0.0-beta4'//ConverterFactory的Gson依赖包compile 'com.squareup.retrofit2:converter-scalars:2.0.0-beta4'//ConverterFactory的String依赖包
//工程的build.gradle文件中
repositories {mavenCentral()
}
//Module的build.gradle文件中
dependencies {compile 'com.github.bumptech.glide:glide:3.7.0'compile 'com.android.support:support-v4:19.1.0'
}
<uses-permission android:name="android.permission.INTERNET"/>
http://route.showapi.com/197-1?showapi_appid=34276&showapi_sign=731d68d6d56b4d789d6571f530ee28ef&num=10
https://www.showapi.com/ //接口基地址197-1 //接口地址showapi_appid //易源应用IDshowapi_sign //身份验证num //每页返回的数据条数page //页数(非必须)
@Query、@QueryMap://用于Http Get请求传递参数
@Field://用于Post方式传递参数,需要在请求接口方法上添加@FormUrlEncoded,即以表单的方式传递参数
@Body: //用于Post,根据转换方式将实例对象转化为对应字符串传递参数.//比如Retrofit添加GsonConverterFactory则是将body转化为gson字符串进行传递
@Path: //用于URL上占位符
@Part: //配合@Multipart使用,一般用于文件上传
@Header://添加http header
@Headers://跟@Header作用一样,只是使用方式不一样,@Header是作为请求方法的参数传入,@Headers是以固定方式直接添加到请求方法上POST请求
public interface ApiService {@POST("197-1")@FormUrlEncodedCall<GirlBean> getGirls(@Field("showapi_appid") String showapi_appid,@Field("showapi_sign") String showapi_sign,@Field("num") int num ,@Field("page") int page);
// //GET请求
// @GET("197-1")
// Call<GirlBean> getGirls(@Query("showapi_appid") String showapi_appid,
// @Query("showapi_sign") String showapi_sign,
// @Query("num") int num ,
// @Query("page") int page);}
public class GirlsRequest {public static final String baseurl = "http://route.showapi.com/";public static final String showapi_appid = "34276";public static final String showapi_sign = "731d68d6d56b4d789d6571f530ee28ef";public static final int num = 10;//创建Retrofit对象Retrofit mRetrofit = new Retrofit.Builder().baseUrl(baseurl)//请求基地址//添加转换器,直接将内容转换成String或者json//.addConverterFactory(ScalarsConverterFactory.create()).addConverterFactory(GsonConverterFactory.create()).build();public void getGirlList(final RequsetCallback requsetCallback, int page) {//创建请求的接口ApiService mApiService = mRetrofit.create(ApiService.class);Call<GirlsBean> mCall = mApiService.getGirls(showapi_appid,showapi_sign,num,page);//利用Call对象,发起网络请求mCall.enqueue(new Callback<GirlsBean>() {//请求成功@Overridepublic void onResponse(Call<GirlsBean> call, Response<GirlsBean> response) {//成功获得正确数据if (response.body().getShowapi_res_code() == 200) {requsetCallback.onFinish(response.body());} else {//错误数控requsetCallback.onError(response.body().getShowapi_res_error());}}//失败@Overridepublic void onFailure(Call<GirlsBean> call, Throwable t) {requsetCallback.onError("网络请求失败");}});}//自定义回调接口public interface RequsetCallback<T>{void onFinish(T data);void onError(String msg);}
}
Glide.with(context).load(imageUrl).into(imageView);
Glide.with(context).load(imageUrl).placeholder(R.mipmap.ic_launcher).into(imageView);
Glide.with(context).load(imageUrl).error(R.mipmap.ic_launcher).into(imageView);
@Overridepublic void onBindViewHolder(final MyViewHolder holder, int position) {//Glide设置图片(未加载则用粉色替代)Glide.with(mContext).load(mList.get(position).getPicUrl()).centerCrop().placeholder(R.color.colorAccent).into(holder.mImageView);}
public class MainActivity extends AppCompatActivity implements GirlsRequest.RequsetCallback<GirlsBean>{private RecyclerView mRecyclerView;private MyAdapter mAdapter;private GridLayoutManager mGridLayoutManager;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);mRecyclerView = (RecyclerView) findViewById(R.id.recyclerview);//RecyclerView 设置行列mGridLayoutManager = new GridLayoutManager(this,2);//VERTICAL代表有多少列,HORIZONTAL就代表有多少行,mRecyclerView.setLayoutManager(mGridLayoutManager);GirlsRequest request = new GirlsRequest();//调用getGirlList方法请求数据request.getGirlList(this,1);}@Overridepublic void onFinish(GirlsBean data) {//得到适配器mAdapter = new MyAdapter(this,data.getShowapi_res_body().getNewslist());//设置适配器mRecyclerView.setAdapter(mAdapter);}@Overridepublic void onError(String msg) {//吐司错误信息Toast.makeText(this,msg,Toast.LENGTH_SHORT).show();}
}
妹子图APP(一)—— Retrofit+Glide+Gson加载网络图片相关推荐
- Android使用Glide框架加载网络图片(解决无报错图片不显示问题)
清单文件中添加访问网络权限并防止图片不显示 activity加载自己云服务器网页图片 package com.example.app3;import androidx.appcompat.app.Ap ...
- 妹子图APP(四)—— SQLite保存数据实现离线图片查看
接上文: 妹子图APP(三)-- RecyclerView的Item点击事件和图片保存至本地 前面实现了加载网络图片并保存至本地,但无法实现离线查看已缓存的图片,现在需要实现离线查看缓存的图片 Gli ...
- 超棒的Glide图片加载
GitHub开源:https://github.com/bumptech/glide 超棒的工具,竟然还可以加载.gif !!Glide完全基于Picasso,沿袭了其简洁风格,并在其基础上做了大量优 ...
- Universal-Image-Loader,android-Volley,Picasso、Fresco和Glide开源组件加载网络图片的优缺点比较...
在android中的加载网络图片是一件十分令人头疼的事情,在网上有着许多关于加载网络图片的开源库,可以让我们十分方便的加载网络图片.在这里我主要介绍一下我自己在使用Volley, Picasso, U ...
- Android Glide图片加载框架(二)源码解析之with()
文章目录 一.前言 二.如何阅读源码 三.源码解析 1.with() Android Glide图片加载框架系列文章 Android Glide图片加载框架(一)基本用法 Android Glide图 ...
- Android开发笔记(一百七十一)使用Glide加载网络图片
如何方便而又快速地显示网络图片,一直是安卓网络编程的热门课题,前些年图片缓存框架Picasso.Fresco等等大行其道,以至于谷歌按捺不住也开发了自己的Glide开源库.由于Android本身就是谷 ...
- 加载网络图片Glide+圆角 fragment的动态添加 底部图标点击选中
一.加载网络图片Glide+圆角 1.添加网络请求. <!-- 添加权限 --><uses-permission android:name="android.permiss ...
- Glide图片加载框架的使用
1. 介绍 Glide是一个快速高效的Android图片加载库,注重于平滑的滚动.Glide提供了易用的API,高性能.可扩展的图片解码管道(decode pipeline),以及自动的资源池技术.G ...
- Android图片加载框架最全解析(七),实现带进度的Glide图片加载功能
转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/78357251 本文同步发表于我的微信公众号,扫一扫文章底部的二维码或在微信搜索 郭 ...
最新文章
- 2020年全国压岁钱榜单出炉,今年小朋友压岁钱归谁?
- linux-basic(6)linux的文件权限与目录配置
- 小旭的互联网营销之微信营销
- 【连载】如何掌握openGauss数据库核心技术?秘诀三:拿捏存储技术(3)
- java对象的内存分配_java对象在内存的分配问题
- JS - Math对象
- 监听独立于数据库服务器的配置,解决ORA-12520及ORA-12545错误
- centos服务器修改密码,linux centos默认的密码
- Mysql CPU占用100%查询
- Excel·VBA考勤打卡记录统计结果
- 猜数游戏,随机生成一个1~100的数进行猜测。
- 深入浅出Apache DolphinScheduler
- 托福艺术导向(纪录片《文明》单词总结)PART1
- APP开发-第三方SDK使用
- 半角和全角的区别 java_全角和半角区别
- 【UFUN开发板评测】小巧而不失精致,简单而不失内涵——uFun开发板开箱爆照
- 开脑洞:数字文明的等级
- 中文颜色名称与RGB颜色对照表
- 【路径规划】基于蚁群算法求解运钞车路径规划VRPSD问题matlab代码
- 电脑无法访问网页,但qq可以用?一篇文章帮你解决(非常详细)