viewpager + RecyclerView(探探)
主要实现的效果图为:跟探探效果差不多,不过在外部加多了一个viewpager,类似探探的效果图,这里就不贴了,主要是借助recyclerview.layoutManager去处理,在网络上也可以搜索得到,git上有一个ZLayoutManager-master,有需要的可以留言我,我发送给你,运行下来也是效果挺好,
前提需要引入一个 layoutmanager的module,代码编程主要是这样:
package com.mcxtzhang.flowlayoutmanager.swipecard; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.RecyclerView; import android.support.v7.widget.helper.ItemTouchHelper; import android.util.Log; import android.view.View; import android.widget.Button; import android.widget.ImageView; import com.mcxtzhang.commonadapter.rv.CommonAdapter; import com.mcxtzhang.commonadapter.rv.ViewHolder; import com.mcxtzhang.flowlayoutmanager.R; import com.mcxtzhang.layoutmanager.swipecard.CardConfig; import com.mcxtzhang.layoutmanager.swipecard.OverLayCardLayoutManager; import com.mcxtzhang.layoutmanager.swipecard.RenRenCallback; import com.squareup.picasso.Picasso; import java.util.List; public class SwipeCardActivity extends AppCompatActivity { RecyclerView mRv; CommonAdapter<SwipeCardBean> mAdapter; List<SwipeCardBean> mDatas; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_swipe_card); mRv = (RecyclerView) findViewById(R.id.rv); mRv.setLayoutManager(new OverLayCardLayoutManager()); mRv.setAdapter(mAdapter = new CommonAdapter<SwipeCardBean>(this, mDatas = SwipeCardBean.initDatas(), R.layout.item_swipe_card) { public static final String TAG = "zxt/Adapter"; @Override public void convert(ViewHolder viewHolder, SwipeCardBean swipeCardBean) { viewHolder.setText(R.id.tvName, swipeCardBean.getName()); viewHolder.setText(R.id.tvPrecent, swipeCardBean.getPostition() + " /" + mDatas.size()); Picasso.with(SwipeCardActivity.this).load(swipeCardBean.getUrl()).into((ImageView) viewHolder.getView(R.id.iv)); } }); //初始化配置 CardConfig.initConfig(this); ItemTouchHelper.Callback callback = new RenRenCallback(mRv, mAdapter, mDatas); ItemTouchHelper itemTouchHelper = new ItemTouchHelper(callback); itemTouchHelper.attachToRecyclerView(mRv); findViewById(R.id.btnRefresh).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { mDatas.add(new SwipeCardBean(100, "http://news.k618.cn/tech/201604/W020160407281077548026.jpg", "增加的")); mAdapter.notifyDataSetChanged(); } }); } }
上面是没用注解的,我自己是用annotation编程的,
import android.support.v7.widget.RecyclerView; import android.support.v7.widget.helper.ItemTouchHelper; import android.util.Log; import android.widget.Toast; import com.fusquare.henji.philips.BaseFragment; import com.fusquare.henji.philips.R; import com.fusquare.henji.philips.bean.Buildbean; import com.mcxtzhang.commonadapter.rv.CommonAdapter; import com.mcxtzhang.commonadapter.rv.ViewHolder; import com.mcxtzhang.layoutmanager.swipecard.CardConfig; import com.mcxtzhang.layoutmanager.swipecard.OverLayCardLayoutManager; import com.mcxtzhang.layoutmanager.swipecard.RenRenCallback; import org.androidannotations.annotations.AfterInject; import org.androidannotations.annotations.AfterViews; import org.androidannotations.annotations.EFragment; import org.androidannotations.annotations.ViewById; import java.util.List; /** * Created by ${Echo} on 2018/2/7. */ @EFragment(R.layout.fragment_build) public class BuildFragment extends BaseFragment { @ViewById(R.id.build_rv) RecyclerView build_rv; CommonAdapter<Buildbean> mAdapter ; List<Buildbean> mDates; @AfterViews protected void initView(){ build_rv.setLayoutManager(new OverLayCardLayoutManager()); build_rv.setAdapter(mAdapter = new CommonAdapter<Buildbean>(getActivity(),mDates = Buildbean.initDatas(),R.layout.item_build) { @Override public void convert(ViewHolder viewHolder, Buildbean buildbean) { } }); //初始化配置 CardConfig.initConfig(getActivity()); ItemTouchHelper.Callback callback = new RenRenCallback(build_rv, mAdapter, mDates); ItemTouchHelper itemTouchHelper = new ItemTouchHelper(callback); itemTouchHelper.attachToRecyclerView(build_rv); } @AfterInject protected void initData(){ } }
实现的效果为同时viewpager+touch上下左右滑动,在build中注意要添加部分属性:
dependencies { compile fileTree(include: ['*.jar'], dir: 'libs') compile "org.androidannotations:androidannotations-api:$AAVersion" apt"org.androidannotations:androidannotations:$AAVersion" compile 'com.android.support.constraint:constraint-layout:1.0.1' compile project(':layoutmanager') }
然后就完成了;需要一起交流学习提升,可以加入QQ群:673663681;此群为新建,希望为真正活跃,积极学习android的童鞋。广告者误入!