MVP+Retrotfit+RxJava+Fresco+banner
来源:互联网 发布:公务员网络课程 编辑:程序博客网 时间:2024/05/22 00:32
导入依赖
/*retrofit依赖*/ compile 'com.squareup.retrofit2:retrofit:2.0.2' compile 'com.squareup.okhttp3:okhttp:3.1.2' compile 'com.squareup.retrofit2:converter-gson:2.0.2' //若和观察者结合的话,需加上如下依赖: compile 'com.squareup.retrofit2:adapter-rxjava:2.1.0' compile 'io.reactivex:rxjava:1.0.14' compile 'io.reactivex:rxandroid:1.0.1' /*fresco依赖*/ compile 'com.facebook.fresco:fresco:0.11.0' compile 'com.youth.banner:banner:1.4.9'
初始化Fresco
public class Myapp extends Application{ @Override public void onCreate() { super.onCreate(); Fresco.initialize(this); }}
清单文件
<!--网络权限--><uses-permission android:name="android.permission.INTERNET"></uses-permission><!--注册图片,application里--> android:name=".app.Myapp"
布局activity_main
<com.youth.banner.Banner android:id="@+id/bn" android:layout_width="match_parent" android:layout_height="200dp"> </com.youth.banner.Banner>
封装Bean类
http://api.svipmovie.com/front/homePageApi/homePage.do最好一键封装
BnUri
public interface BnUri { /*注解,Get请求,接口后半部分,请求头在model里*/ @GET("homePageApi/homePage.do") /*import retrofit2.Call;*/ Call<BnBean> getBnCall();}
IBnModel
public interface IBnModel { public void getData(Observer<BnBean> observer);}
BnModel
public class BnModel implements IBnModel{ private BnBean bnBean; @Override public void getData(Observer<BnBean> observer) { Observable.create(new Observable.OnSubscribe<BnBean>(){ @Override public void call(final Subscriber<? super BnBean> subscriber) { Retrofit retrofit = new Retrofit.Builder() .baseUrl("http://api.svipmovie.com/front/") .addConverterFactory(GsonConverterFactory.create()) .addCallAdapterFactory(RxJavaCallAdapterFactory.create()) .build() ; /*gaigaigai*/ BnUri bnUri = retrofit.create(BnUri.class); Call<BnBean> call=bnUri.getBnCall(); call.enqueue(new Callback<BnBean>() { @Override public void onResponse(Call<BnBean> call, Response<BnBean> response) { bnBean=response.body(); subscriber.onNext(bnBean); subscriber.onCompleted(); } @Override public void onFailure(Call<BnBean> call, Throwable t) { } }); } }).subscribeOn(Schedulers.newThread()).observeOn(AndroidSchedulers.mainThread()).subscribe(observer); }}
IMainActivity
public interface IMainActivity { public void showBnView(List<BnBean.RetBean.ListBean.ChildListBean> bnlist);}
MainActivity
public class MainActivity extends AppCompatActivity implements IMainActivity { private Banner mBn; private List<BnBean.RetBean.ListBean.ChildListBean> bnlist; private PersenterActivity persenterActivity; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initView(); persenterActivity = new PersenterActivity(this); persenterActivity.getData(); bnlist = new ArrayList<>(); showBnView(bnlist); } private void initView() { mBn = (Banner) findViewById(R.id.bn); } @Override public void showBnView(List<BnBean.RetBean.ListBean.ChildListBean> bnlist) { /*重点*/ ArrayList<String> pic = new ArrayList<>(); for (int i = 0; i < bnlist.size(); i++) { pic.add(bnlist.get(i).getPic()); } mBn.setImages(pic); mBn.setImageLoader(new GlideImageLoader()); mBn.start(); }}
PersenterActivity
public class PersenterActivity { BnModel bnModel; IMainActivity iMainActivity; List<BnBean.RetBean.ListBean.ChildListBean> bnlist = new ArrayList<>(); public PersenterActivity(IMainActivity iMainActivity) { this.iMainActivity = iMainActivity; this.bnModel = new BnModel(); } public void getData(){ bnModel.getData(new Observer<BnBean>() { @Override public void onCompleted() { /* Log.i("1111111", "onCompleted()");*/ } @Override public void onError(Throwable e) { Log.i("111111", "onError()"+e.toString()); } @Override public void onNext(BnBean bnBean) { /* Log.i("111111", "onNext()");*/ bnlist.addAll(bnBean.getRet().getList().get(0).getChildList()); iMainActivity.showBnView(bnlist); Log.i("111111", "onNext()" + bnlist); } }); }}
图片加载器
public class GlideImageLoader extends ImageLoader{ @Override public void displayImage(Context context, Object path, ImageView imageView) { /** 注意: 1.图片加载器由自己选择,这里不限制,只是提供几种使用方法 2.返回的图片路径为Object类型,由于不能确定你到底使用的那种图片加载器, 传输的到的是什么格式,那么这种就使用Object接收和返回,你只需要强转成你传输的类型就行, 切记不要胡乱强转! */ //用fresco加载图片简单用法,记得要写下面的createImageView方法 Uri uri = Uri.parse((String) path); imageView.setImageURI(uri); } //提供createImageView 方法,如果不用可以不重写这个方法,主要是方便自定义ImageView的创建 @Override public ImageView createImageView(Context context) { //使用fresco,需要创建它提供的ImageView,当然你也可以用自己自定义的具有图片加载功能的ImageView SimpleDraweeView simpleDraweeView=new SimpleDraweeView(context); return simpleDraweeView; } }
其实可以直接导入第三方工具类(Myapp,GlideImageLoader ,RetrofitManager)
阅读全文
0 0
- MVP+Retrotfit+RxJava+Fresco+banner
- MVP+Fresco+RxJava
- MVP+Rectrofit+RXJAVA+Fresco
- MVP+Rectrofit+RXJAVA+Fresco
- Retrofit+RxJava+Fresco+MVP
- MVP+Rectrofit+RXJAVA+Fresco
- MVP+Fresco+Rxjava
- Retrofit+RxJava+Fresco+MVP
- MVP+XRexyclerview+RxJava+Retrofit+Fresco
- MVP+Retrofit+RxJava+fresco+RecyclerView
- MVP+RxJava+Retrofit实现Banner图
- MVP模式(Rxjava+retrofit+fresco)
- MVP+Fresco+RXJava+Retrofit+全选+反选
- MVP+Rxjava+Retrofit+Fresco网络请求数据
- 普通MVP+XRexyclerview+RxJava+Retrofit+Fresco
- MVP+RxJava+Retrofit+Fresco+屏幕适配
- MVP框架+RXJava+reftorfit请求网络数据+XRecycleView多条目展示(banner轮播+条目展示、刷新加载)、点击事件+fresco图片加载
- android MVP+Rectrofit+RXJAVA+Fresco结合简单使用
- ubuntu14.04如何在完美切换Python2和Python3
- tomcat7以上,设置maxPostSize="0"参数后台获取不到的问题
- 京东商城_购物车
- excel 导出,关于POI的使用经验
- spring MVC JSR303校验
- MVP+Retrotfit+RxJava+Fresco+banner
- 关于Webview在RecyclerView的第一个条目中,第一次加载时点击回顶部的问题
- 使用Keras做猫狗分类
- 单向链表
- java面试宝典--集合类
- 阿里云大数据助理工程师认证(ACA)
- 购物车子条目
- 增删改查排序 Month练习1
- MVP