仿探探图片卡左右滑动效果

效果图:


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:自己的RecyclerViewmyAdapter:适配器,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>



猜你喜欢

转载自blog.csdn.net/xy8199/article/details/78803453
今日推荐