Mvp练习题 电影滑动
来源:互联网 发布:淘宝卖家发货幽默短信 编辑:程序博客网 时间:2024/06/15 11:34
final String catalogId = "402834815584e463015584e539330016";
String HOST = "http://api.svipmovie.com/front/
//影片分类
columns/getVideoList.do
参数:catalogId 分类id 已经给出
pnum 传入 为能随机获取视频请传入getNextPage(),此方法已经给出
private int getNextPage() { if (SystemUtils.isNetworkConnected()) { page = StringUtils.getRandomNumber(1, 108); } return page;}
public static int getRandomNumber(int min, int max) { return new Random().nextInt(max) % (max - min + 1) + min;} ////////////////////////////////////////////////////////////////接口
////////////////////////////////1
package com.example.zk2.view;public interface Iview { void onSuccess(Object o); void onFailed(Exception e);}
////////////////////////////////////2
package com.example.zk2.model;import java.util.Map;public interface Imodel { void getData(Map<String,String> map);}/////////////////////////////////////3//////////////////////////////////////4Bean类package com.example.zk2.persenter;import java.util.Map;public interface BasePresenter { void getData(Map<String,String> map);}//////////////////////////////////////5
package com.example.zk2.http;import com.example.zk2.bean.Dabean;import java.util.Map;import io.reactivex.Flowable;import retrofit2.http.POST;import retrofit2.http.QueryMap;public interface ApiService { @POST("columns/getVideoList.do") Flowable<Dabean> getNews(@QueryMap Map<String, String> map);}
////////////////////////////////////6
package com.example.zk2.http;import retrofit2.Retrofit;import retrofit2.adapter.rxjava2.RxJava2CallAdapterFactory;import retrofit2.converter.gson.GsonConverterFactory;public class RetrofitUtils { private static volatile RetrofitUtils instance; private final ApiService apiService; private RetrofitUtils(){ Retrofit retrofit=new Retrofit.Builder() .addConverterFactory(GsonConverterFactory.create()) .addCallAdapterFactory(RxJava2CallAdapterFactory.create()) .baseUrl("http://api.svipmovie.com/front/").client(new OkHttpClient.Builder().build())
.build(); apiService = retrofit.create(ApiService.class);}public static RetrofitUtils getInstance(){if (instance==null){synchronized (RetrofitUtils.class){if (null==instance){instance=new RetrofitUtils();} } }return instance; }public ApiService getApiService(){
return apiService; }}///////////////////////////////////////7
package com.example.zk2.model;import android.util.Log;import com.example.zk2.bean.Dabean;import com.example.zk2.http.RetrofitUtils;import com.example.zk2.persenter.NewsPresenter;import java.util.Map;import io.reactivex.Flowable;public class NewsModel implements Imodel { private NewsPresenter presenter; public NewsModel(NewsPresenter presenter){ this.presenter=presenter; } @Override public void getData(Map<String, String> map) { Flowable<Dabean> news = RetrofitUtils.getInstance().getApiService().getNews(map); presenter.getNews(news); Log.e("TAG","请求==="+map.toString()); }}////////////////////////////////////////8
package com.example.zk2.persenter;import android.util.Log;import com.example.zk2.bean.Dabean;import com.example.zk2.model.Imodel;import com.example.zk2.model.NewsModel;import com.example.zk2.view.Iview;import java.util.Map;import io.reactivex.Flowable;import io.reactivex.android.schedulers.AndroidSchedulers;import io.reactivex.schedulers.Schedulers;import io.reactivex.subscribers.DisposableSubscriber;public class NewsPresenter implements BasePresenter{ private Iview iv; private DisposableSubscriber subscriber; public void attacView(Iview iv){ this.iv=iv; } public void detachView(){ if (iv!=null){ iv=null; } if (subscriber!=null){//rxjava的防止内存泄漏 if (!subscriber.isDisposed()){ subscriber.isDisposed(); } } } public void getNews(Flowable<Dabean> news){ news.subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribeWith(new DisposableSubscriber<Dabean>() { @Override public void onNext(Dabean dabean) { if (dabean!=null){ Log.d("aaaaa", "onNext: ++++++"+dabean.toString()); iv.onSuccess(dabean); } } @Override public void onError(Throwable t) { } @Override public void onComplete() { } }); } @Override public void getData(Map<String, String> map) { Imodel model=new NewsModel(this);//多态 this是当前的p层、 model.getData(map); Log.e("TAG","sss"); }}////////////////////////////////////////9package com.example.zk2.adapter;import android.support.v4.view.ViewPager;import android.view.View;public class ZoomOutPageTransformer implements ViewPager.PageTransformer { private static final float MIN_SCALE = 0.85f; private static final float MIN_ALPHA = 0.5f; @Override public void transformPage(View view, float position) { int pageWidth = view.getWidth(); int pageHeight = view.getHeight(); if (position < -1) { // [-Infinity,-1) 不可见状态 // This page is way off-screen to the left. view.setAlpha(0); //透明度设置为0 } else if (position <= 1) { // [-1,1] 可见状态,设置动画效果 // Modify the default slide transition to shrink the page as well float scaleFactor = Math.max(MIN_SCALE, 1 - Math.abs(position)); float vertMargin = pageHeight * (1 - scaleFactor) / 2; float horzMargin = pageWidth * (1 - scaleFactor) / 2; if (position < 0) { view.setTranslationX(horzMargin - vertMargin / 2); } else { view.setTranslationX(-horzMargin + vertMargin / 2); } // Scale the page down (between MIN_SCALE and 1) view.setScaleX(scaleFactor); view.setScaleY(scaleFactor); // Fade the page relative to its size. view.setAlpha(MIN_ALPHA + (scaleFactor - MIN_SCALE) / (1 - MIN_SCALE) * (1 - MIN_ALPHA)); } else { // (1,+Infinity] 不可见状态 // This page is way off-screen to the right. view.setAlpha(0); } }}///////////////////////////////////////////10package com.example.zk2.fragment;import android.os.Bundle;import android.support.annotation.Nullable;import android.support.v4.app.Fragment;import android.support.v4.view.PagerAdapter;import android.support.v4.view.ViewPager;import android.util.Log;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.Button;import android.widget.ImageView;import android.widget.TextView;import com.bumptech.glide.Glide;import com.example.zk2.R;import com.example.zk2.adapter.ZoomOutPageTransformer;import com.example.zk2.bean.Dabean;import com.example.zk2.persenter.NewsPresenter;import com.example.zk2.view.Iview;import java.util.HashMap;import java.util.List;import java.util.Map;import java.util.Random;public class Fragment3 extends Fragment implements Iview{ private ViewPager viewPager; private NewsPresenter presenter; private Button button; private List<Dabean.RetBean.ListBean> list; private Map<String, String> map = new HashMap<>(); private PagerAdapter pagerAdapter; @Nullable @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fragment3, container, false); viewPager = view.findViewById(R.id.vp); button = view.findViewById(R.id.buton); return view; } @Override public void onActivityCreated(@Nullable Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); initView(); viewPager.setPageTransformer(true, new ZoomOutPageTransformer()); button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { if(list!=null){ list.clear(); } initView(); pagerAdapter.notifyDataSetChanged(); } }); } private void initView() { map.put("catalogId","402834815584e463015584e539330016"); map.put("pnum",getpage()+""); presenter = new NewsPresenter(); presenter.attacView(this); presenter.getData(map); } //防止内存泄漏 @Override public void onDestroy() { super.onDestroy(); if (presenter!=null){ presenter.detachView(); } } @Override public void onSuccess(Object o) { Dabean bean= (Dabean) o; list = bean.getRet().getList(); pagerAdapter = new PagerAdapter() { @Override public int getCount() { return list.size(); } @Override public boolean isViewFromObject(View view, Object object) { return view == object; } @Override public Object instantiateItem(ViewGroup container, int position) { Dabean.RetBean.ListBean listBean = list.get(position); View v = View.inflate(getActivity(), R.layout.item, null); ImageView img = v.findViewById(R.id.img); TextView title = v.findViewById(R.id.tv_title); TextView tvt = v.findViewById(R.id.name); title.setText(listBean.getTitle()); tvt.setText(listBean.getDescription()); Glide.with(getActivity()).load(listBean.getPic()).into(img); container.addView(v); Log.e("--------适配器的数据:", listBean.getTitle()); return v; } @Override public void destroyItem(ViewGroup container, int position, Object object) { container.removeView((View) object); } }; viewPager.setAdapter(pagerAdapter); } @Override public void onFailed(Exception e) { } //随机数 private int getpage() { int max = 108; int min = 1; Random random = new Random(); int s = random.nextInt(max) % (max - min + 1) + min; return s; }}
- Mvp练习题 电影滑动
- 队列的滑动窗口最大值练习题.
- Android 播放电影时滑动屏幕调整屏幕亮度
- Android 播放电影时滑动屏幕调整屏幕亮度
- 电影
- 电影
- 电影
- 电影
- 电影
- 电影
- 电影
- 电影
- 电影
- 电影
- 电影
- 电影
- 电影
- 电影
- 精通正则表达式:4
- R语言——自定义函数求置信区间
- python学习系列(五)字典
- 初学一周犯错经验总结
- Vim 基本命令总结
- Mvp练习题 电影滑动
- 如何提高写代码的效率?
- Viewpager刷新数据问题
- 哈尔滨理工大学第七届程序设计竞赛决赛(网络赛-高年级组)B 幸运大奖
- 卡片切换
- 转自ACMore_Xiong,时刻提醒自己多想到模运算
- 怎样才能赚到钱系列(八):走出舒适区
- 图的深度遍历-邻接链表表示
- LeetCode20. Valid Parentheses