Android滚轮实现LinearSnapHelper

LinearSnapHelper可以帮助Android的RecyclerView实现滚轮效果,所谓滚轮效果,就是在列表内容滚动时候,总是把某一项内容处于屏幕(视野)正中间。
本例特意把RecyclerView设置成水平方向,更容易观察出滚轮实现的效果。同时把RecyclerView
的子item故意设置大一些,左右滑动时候的效果如图,可以看出,总是有一个item处于屏幕正中间:

Android滚轮实现LinearSnapHelper_第1张图片

Android滚轮实现LinearSnapHelper_第2张图片


实现代码:

package zhangphil.test;import android.graphics.Color;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.support.v7.widget.LinearLayoutManager;import android.support.v7.widget.LinearSnapHelper;import android.support.v7.widget.RecyclerView;import android.util.TypedValue;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.LinearLayout;import android.widget.TextView;public class RVActivity extends AppCompatActivity {    private RecyclerView mRecyclerView;    private LinearSnapHelper mLinearSnapHelper;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        mRecyclerView = findViewById(R.id.recycler_view);        LinearLayoutManager mLayoutManager = new LinearLayoutManager(this);        mLayoutManager.setOrientation(LinearLayout.HORIZONTAL);        mRecyclerView.setLayoutManager(mLayoutManager);        mLinearSnapHelper = new LinearSnapHelper();        mLinearSnapHelper.attachToRecyclerView(mRecyclerView);        RecyclerView.Adapter mAdapter = new MyAdapter();        mRecyclerView.setAdapter(mAdapter);    }    private class MyAdapter extends RecyclerView.Adapter {        public MyAdapter() {            super();        }        @Override        public ViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {            View view = LayoutInflater.from(getApplicationContext()).inflate(android.R.layout.simple_list_item_2, null);            ViewHolder holder = new ViewHolder(view);            return holder;        }        @Override        public void onBindViewHolder(ViewHolder viewHolder, int i) {            viewHolder.text1.setText(String.valueOf(i));            viewHolder.text2.setText("pos:" + i);            int n = i % 2;            int color = n == 0 ? Color.DKGRAY : Color.LTGRAY;            viewHolder.itemView.setBackgroundColor(color);        }        @Override        public int getItemCount() {            return 20;        }        public class ViewHolder extends RecyclerView.ViewHolder {            public TextView text1;            public TextView text2;            public ViewHolder(View itemView) {                super(itemView);                text1 = itemView.findViewById(android.R.id.text1);                text1.setTextColor(Color.RED);                text1.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 160);                text2 = itemView.findViewById(android.R.id.text2);                text2.setTextColor(Color.BLUE);            }        }    }}

 

更多相关文章

  1. Android 滑动效果高级篇(七)—— 华丽翻页效果
  2. Android XML�O置屏幕方向(android:screenOrientation)详解
  3. Android 各种实现Tab效果的实现方式
  4. Android TextView显示文字过长时添加阴影渐变消失效果
  5. Android控件阴影效果的几种实现方法
  6. Android TextView实现滚动跑马灯效果Marquee
  7. Android中实现滑动效果

随机推荐

  1. android横竖屏切换参数
  2. android 模拟器安装
  3. Android Manifest.xml 分析
  4. TableLayout常用细节
  5. 线性布局的常用属性
  6. RelativeLayout参数意义
  7. [Android UI] Activity Maintheme (Andro
  8. Android RatingBar自定义替换系统图片
  9. Android(安卓)声明自身为应用市场
  10. [1] Android主要源代码组成