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

来源:互联网 发布:mac 返回快捷键 编辑:程序博客网 时间:2024/06/06 05:38

效果图:


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>



原创粉丝点击