效果图:
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:
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>