使用RecyclerView横向滑动实现仿到位的滑动(写的不好,还有未解决的地方)
来源:互联网 发布:交通仿真软件怎么用 编辑:程序博客网 时间:2024/05/16 12:48
import android.app.Activity;import android.os.Bundle;import android.support.v7.widget.LinearLayoutManager;import android.support.v7.widget.RecyclerView;import android.widget.TextView;import java.util.ArrayList;import java.util.List;/** * Created by guo */public class HorRecyclerActivity extends Activity { List<String> strings = new ArrayList<String>(); private RecyclerView mRecyclerView; private RecycleAdapter mAdapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_recyclerview); mRecyclerView = (RecyclerView) findViewById(R.id.activity_recycler_view); final TextView textView = (TextView) findViewById(R.id.activity_recycler_tv); for (int i = 0; i < 50; i++) { strings.add(i + "item"); } LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this); linearLayoutManager.setOrientation(LinearLayoutManager.HORIZONTAL); mRecyclerView.setLayoutManager(linearLayoutManager); //设置适配器 mAdapter = new RecycleAdapter(this, strings); mRecyclerView.setAdapter(mAdapter); mRecyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() { @Override public void onScrollStateChanged(RecyclerView recyclerView, int newState) { super.onScrollStateChanged(recyclerView, newState); //暂停的时候才能去定位item if (newState == RecyclerView.SCROLL_STATE_IDLE) { mRecyclerView.scrollToPosition(getCurrentPosition()); textView.setText(String.valueOf(getMiddlePosition())); } } @Override public void onScrolled(RecyclerView recyclerView, int dx, int dy) { super.onScrolled(recyclerView, dx, dy); } }); } /** * 获取中间位置 * * @return 当前值 */ private int getMiddlePosition() { return getCurrentPosition() + (RecycleAdapter.ITEM_COLUMN / 2); } /** * 获取滑动当前索引, 滑动偏移 / 每个滑动item宽度 * * @return 当前值 */ private int getCurrentPosition() { return (int) ((double) (mRecyclerView.computeHorizontalScrollOffset()) / (double) mAdapter.getScreenWidth()); }}import android.content.Context;import android.support.v7.widget.RecyclerView;import android.util.DisplayMetrics;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.TextView;import java.util.List;/** * Created by guo */public class RecycleAdapter extends RecyclerView.Adapter { private Context mContext; private List<String> mStrings; /** * 一行显示几列 */ public static final int ITEM_COLUMN = 1; public RecycleAdapter(Context context, List<String> strings) { this.mContext = context; this.mStrings = strings; } @Override public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View view = LayoutInflater.from(mContext).inflate(R.layout.item_cardview, parent, false); RecyclerView.LayoutParams lp = (RecyclerView.LayoutParams) view.getLayoutParams(); lp.width = getScreenWidth(); return new ViewHolder(view); } @Override public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) { if (holder != null) { setChildView((ViewHolder) holder, mStrings.get(position)); } } private void setChildView(ViewHolder holder, String str) { holder.card2.setText(str); } @Override public int getItemCount() { return mStrings == null || mStrings.isEmpty() ? 0 : mStrings.size(); } public static class ViewHolder extends RecyclerView.ViewHolder { TextView card2; public ViewHolder(View itemView) { super(itemView); card2 = (TextView) itemView.findViewById(R.id.item_card_2); } } // 获取屏幕宽度 public int getScreenWidth() { DisplayMetrics displayMetrics = mContext.getResources().getDisplayMetrics(); return displayMetrics.widthPixels / ITEM_COLUMN; }}关于RecyclerView还有很多的使用方法,更多的需要你去探究,本文参考下面这个博文写的 http://www.jianshu.com/p/4a647f6cbe42
0 0
- 使用RecyclerView横向滑动实现仿到位的滑动(写的不好,还有未解决的地方)
- 解决ScrollView嵌套RecyclerView(横向)或ListView(横向)时,横向滑动不顺畅的问题。
- Recyclerview横向的滑动与点击事件
- 仿qq横向滑动删除的 SwipeMenuListView
- UITableView 的横向滑动实现
- 我的Android成长之路(10)----利用recyclerView实现横向滑动
- 使用swiper写的m站横向滑动效果
- 图片的横向滑动
- 横向滑动的 ScrollView
- 横向滑动的 ListView
- 横向滑动的GridView
- 横向滑动的listview
- 横向滑动的Recycleview
- 横向滑动的ListView
- 横向滑动的注意事项
- 横向滑动的listview
- 解决ViewPager横向的ViewGroup滑动冲突的问题,例如HorizontalListView,RecyclerView,各种layout等
- 解决ViewPager横向的ViewGroup滑动冲突的问题,例如HorizontalListView,RecyclerView,各种layout等
- head tail 显示文件的前几行和最后几行
- MySQL执行Select语句将结果导出到文件的方法
- 关于linux-Centos 7下mysql 5.7.9的rpm包的安装方式
- Html5移动应用开发入门——环境搭建(IONIC)
- PullToRefresh(下拉刷新)源码浅析
- 使用RecyclerView横向滑动实现仿到位的滑动(写的不好,还有未解决的地方)
- 卸载注册表的挂接点
- NodeJS搭建博客系统(二)构建一个markdown页面
- BZOJ 1036 [ZJOI2008] 树的统计Count
- python3使用pickle读取文件提示TypeError或者UnicodeDecodeError的解决办法
- java常用加密方式2
- 《初入linux》--第二十部分-Apache服务器的几个实用技巧
- 思路题,多路归并(K Smallest Sums,UVA 11997)
- html的超链接