简单入门使用Retrofit+ rxjava 下载图片
来源:互联网 发布:php exec 异步执行 编辑:程序博客网 时间:2024/04/29 11:25
现在比较流行所以就尝试写了一个demo。发现确实比较好用,
首先,导入相关的库
//rxJava
compile ‘io.reactivex:rxjava:latest.release’
compile ‘io.reactivex:rxandroid:latest.release’
//network - squareup
compile ‘com.squareup.retrofit2:retrofit:latest.release’
compile ‘com.squareup.retrofit2:adapter-rxjava:latest.release’
compile ‘com.squareup.okhttp3:okhttp:latest.release’
compile ‘com.squareup.okhttp3:logging-interceptor:latest.release’
首先获取Retrofit实例对象
Retrofit retrofit = new Retrofit.Builder() .baseUrl(“http://pic41.nipic.com“) .addCallAdapterFactory(RxJavaCallAdapterFactory.create())
.build();
----------------
在使用Retrofit的时候它的网路访问时通过注解来实现,要有一个定义访问参数和访问类型的接口
interface ServiceApi{
@GET(“/20140509/4746986_145156378323_2.jpg”)
Observable<ResponseBody>downloadPcFromNet();
其中可以定义post请求,也可以设置请求参数,相关使用百度一下
---------------
下来获取ServiceApi
ServiceApi service = retrofit.create(ServiceApi.class);
rxjava最方便的就是没有handler 没有去显示的new 子线程,没有去用异步加载。代码看起来比较整洁,下面放demo了 ,没有分包久一个类解决所有问题
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
private ImageView mImageView ;
private ProgressDialog progressBar;
@Overrideprotected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mImageView =(ImageView)findViewById(R.id.image); progressBar = new ProgressDialog(this); com.example.hefei.myapplication.ViewUtils.setOnClick(this,this,R.id.text);}@Overridepublic void onClick(View v) { Load();}private void Load() { progressBar.show(); getService().downloadPicFromNet() .subscribeOn(Schedulers.newThread()) .map(new Func1<ResponseBody, Bitmap>() { @Override public Bitmap call(ResponseBody responseBody) { return BitmapFactory.decodeStream(responseBody.byteStream()); } }) .observeOn(AndroidSchedulers.mainThread()) .subscribe(new Subscriber<Bitmap>() { @Override public void onCompleted() { progressBar.hide(); } @Override public void onError(Throwable e) { progressBar.hide(); } @Override public void onNext(Bitmap bitmap) { mImageView.setImageBitmap(bitmap); } });}interface ServiceApi{ @GET("/20140509/4746986_145156378323_2.jpg") Observable<ResponseBody> downloadPicFromNet();}public ServiceApi getService(){ Retrofit retrofit = new Retrofit.Builder() .baseUrl("http://pic41.nipic.com") .addCallAdapterFactory(RxJavaCallAdapterFactory.create()) //添加Rxjava .build(); return retrofit.create(ServiceApi.class);}
}
大家可以根据需求自己改动,良心制作,测试无残留,你值得拥有
- 简单入门使用Retrofit+ rxjava 下载图片
- Rxjava+Retrofit 简单使用
- Retrofit+Rxjava简单使用
- 使用Retrofit和Rxjava下载启动图图片
- Rxjava+Retrofit的简单使用
- 简单地使用下RxJava + Retrofit
- MVP+retrofit+rxjava+Knife的简单使用
- Retrofit和Rxjava的简单使用
- Retrofit和Rxjava的简单使用
- rxjava retrofit 下载
- Retrofit+rxjava上传图片
- Retrofit+RxJava上传图片
- Retrofit+RxJava 简单学习
- rxjava+retrofit简单demo
- 简单的RxJava+Retrofit
- Retrofit+RxJava 简单封装
- Rxjava+Retrofit简单封装
- Retrofit简单入门及使用
- 怎样确定点击的是哪一个cell上的按钮
- C++:类型转换运算符
- Java程序设计(六)网络编程之HttpURLConnection的使用
- OpenCV代码提取: threshold函数的实现
- ubuntu(gtx1080)安装caffe
- 简单入门使用Retrofit+ rxjava 下载图片
- 1058. A+B in Hogwarts (20)
- 高通平台如何抓取死机定屏log
- 平衡二叉树
- Java基础知识漫谈-送给迷茫的我们
- iOS 8 VoIP Notifications(没完)
- Java设置Client Socket链接Server超时时间
- 随便说说removeFromSuperview方法
- 总定义push,pop方向