Android滚轮实现LinearSnapHelper
16lz
2021-01-23
Android滚轮实现LinearSnapHelper
LinearSnapHelper可以帮助Android的RecyclerView实现滚轮效果,所谓滚轮效果,就是在列表内容滚动时候,总是把某一项内容处于屏幕(视野)正中间。
本例特意把RecyclerView设置成水平方向,更容易观察出滚轮实现的效果。同时把RecyclerView
的子item故意设置大一些,左右滑动时候的效果如图,可以看出,总是有一个item处于屏幕正中间:
实现代码:
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); } } }}
更多相关文章
- Android 滑动效果高级篇(七)—— 华丽翻页效果
- Android XML�O置屏幕方向(android:screenOrientation)详解
- Android 各种实现Tab效果的实现方式
- Android TextView显示文字过长时添加阴影渐变消失效果
- Android控件阴影效果的几种实现方法
- Android TextView实现滚动跑马灯效果Marquee
- Android中实现滑动效果