效果图:
1、实现如图效果
2、根据接口请求数据并展示
3、实现如效果视频的切换效果
4、换一批 可以切换随机切换一批电影数据
添加依赖:
项目的build.gradle
allprojects { repositories { jcenter() maven { url 'https://jitpack.io' } } }
APP下build.gradle
compile 'com.github.mcxtzhang:ZLayoutManager:V1.1.0'
Activity:
package com.bwie.com.wangruixin20171209.fragment; import android.os.Bundle; import android.support.annotation.Nullable; import android.support.v4.app.Fragment; import android.support.v7.widget.RecyclerView; import android.support.v7.widget.helper.ItemTouchHelper; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.Button; import com.bwie.com.wangruixin20171209.R; import com.bwie.com.wangruixin20171209.adapter.MyAdapter; import com.bwie.com.wangruixin20171209.bean.VideoBean; import com.bwie.com.wangruixin20171209.presenter.VideoPresenter; import com.bwie.com.wangruixin20171209.view.IView; import com.mcxtzhang.layoutmanager.swipecard.CardConfig; import com.mcxtzhang.layoutmanager.swipecard.OverLayCardLayoutManager; import com.mcxtzhang.layoutmanager.swipecard.RenRenCallback; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Random; /** * Created by Wangrx on 2017/12/9. */ public class ThreeFragment extends Fragment{ private int number; private VideoPresenter presenter; private List<VideoBean.RetBean.ListBean> list = new ArrayList<>(); private RecyclerView rcv; private Button btn; private MyAdapter myAdapter; @Nullable @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { View view = View.inflate(getContext(), R.layout.threefragment, null); rcv = view.findViewById(R.id.recyclerview); btn = view.findViewById(R.id.btn); return view; } @Override public void onActivityCreated(@Nullable Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); number = getRandomNumber(1, 108); getNet(number); btn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { number = getRandomNumber(1, 108); getNet(number); myAdapter.notifyDataSetChanged(); } }); } public void getNet(int num){ Map<String, String> map = new HashMap<>(); map.put("catalogId","402834815584e463015584e539330016"); map.put("pnum",num+""); presenter = new VideoPresenter(); presenter.getData(map); presenter.attachView(new IView() { @Override public void onSuccess(Object o) { if (o instanceof List){ List<VideoBean.RetBean.ListBean> data = (List<VideoBean.RetBean.ListBean>) o; rcv.setLayoutManager(new OverLayCardLayoutManager()); myAdapter = new MyAdapter(getContext(),data); CardConfig.initConfig(getActivity()); //三个参数:rcv:自己的RecyclerView,myAdapter:适配器,list:将自己的集合数据传进去,进行得到size数量 ItemTouchHelper.Callback callback = new RenRenCallback(rcv, myAdapter, data); //v7的触摸事件判断类 ItemTouchHelper itemTouchHelper = new ItemTouchHelper(callback); itemTouchHelper.attachToRecyclerView(rcv); //设置适配器 rcv.setAdapter(myAdapter); } } @Override public void onFailed(Exception e) { } }); } public int getRandomNumber(int min, int max) { return new Random().nextInt(max) % (max - min + 1)+min; } @Override public void onDestroy() { super.onDestroy(); if (presenter!=null){ presenter.detatchView(); } } }
适配器:
package com.bwie.com.wangruixin20171209.adapter; import android.content.Context; import android.support.v7.widget.RecyclerView; import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; import android.widget.TextView; import com.bumptech.glide.Glide; import com.bwie.com.wangruixin20171209.R; import com.bwie.com.wangruixin20171209.bean.VideoBean; import java.util.List; /** * Created by Wangrx on 2017/12/9. */ public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder>{ private Context context; private List<VideoBean.RetBean.ListBean> list; public MyAdapter(Context context, List<VideoBean.RetBean.ListBean> list) { this.context = context; this.list = list; } @Override public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View view = View.inflate(context, R.layout.item, null); ViewHolder holder = new ViewHolder(view); return holder; } @Override public void onBindViewHolder(ViewHolder holder, int position) { Glide.with(context).load(list.get(position).getPic()).into(holder.img); holder.title.setText(list.get(position).getDescription()); } @Override public int getItemCount() { return list.size(); } public class ViewHolder extends RecyclerView.ViewHolder { ImageView img; TextView title; ViewHolder(View itemView) { super(itemView); img = itemView.findViewById(R.id.img); title = itemView.findViewById(R.id.title); } } }
布局文件:
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@drawable/shape" > <Button android:id="@+id/btn" android:layout_width="100dp" android:layout_height="30dp" android:layout_centerHorizontal="true" android:layout_margin="30dp" android:background="#0c0" android:layout_alignParentBottom="true" android:text="换一批" android:textColor="#fff" /> <android.support.v7.widget.RecyclerView android:id="@+id/recyclerview" android:layout_above="@+id/btn" android:layout_width="match_parent" android:layout_height="match_parent"></android.support.v7.widget.RecyclerView> </RelativeLayout>
设置背景颜色
<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android"> <gradient android:angle="270" android:centerColor="#3e9302" android:endColor="#5d4802" android:startColor="#025d54" /> </shape>设置边框圆角背景颜色
<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" > <solid android:color="#fff" /> <stroke android:width="1dip" android:color="#ddd"/> <corners android:bottomLeftRadius="20dp" android:bottomRightRadius="20dp" android:topRightRadius="20dp" android:topLeftRadius="20dp"/> <gradient android:angle="270" android:centerColor="#026693" android:endColor="#023d5d" android:startColor="#1989a1" /> </shape>