Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

anypwx/MyTimer

Repository files navigation

MyTimer

是一个简单仿时间滑动选择器

温馨提示

此demo是用于实现原理的简单演示,需要者可以clone源码查看。 核心代码:控制item 显示在中间(实现的方式比较取巧,大家勿喷)

rcv_list.addOnScrollListener(new RecyclerView.OnScrollListener() {
 @Override
 public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
 super.onScrollStateChanged(recyclerView, newState);
 if(newState == RecyclerView.SCROLL_STATE_IDLE){ //停止滚动
 //如果停止滚动,则定位listview的位置
 final int firstVisibleItemPosition = ((LinearLayoutManager)rcv_list.getLayoutManager()).findFirstVisibleItemPosition();//获取每次在可见区域內的第一次坐标
 int lastVisibleItemPosition = ((LinearLayoutManager)rcv_list.getLayoutManager()).findLastVisibleItemPosition();//获取每次在可见区域內的最后一次坐标
 Log.i("pwx","firstVisibleItemPosition-- : "+firstVisibleItemPosition+",lastVisibleItemPosition-- : "+lastVisibleItemPosition);
 final int kk = (firstVisibleItemPosition + lastVisibleItemPosition)/2; //取两个坐标的中间值
 Log.i("pwx","最终位置: "+(kk+1)+"");
 rcv_list.getAdapter().notifyDataSetChanged(); //重置list
 handler.postDelayed(new Runnable() {
 @Override
 public void run() {
 ViewHolder v = (ViewHolder) rcv_list.findViewHolderForAdapterPosition(kk); //获取对应坐标的ViewHolder
 v.tv_dd.setTextSize(25);
 Toast.makeText(getApplicationContext(),v.tv_dd.getText(),Toast.LENGTH_SHORT).show();
 ///这里的定位需要解释一下
 /// 因为当滑动listvview停止的时候需要固定某个item,有一种被选中的视感
 /// 所以就拿firstVisibleItemPosition 作为定位点
 /// 但实际取的值却是可视区域中间的那个坐标的值 也就是 kk
 /// 再次说明一下,这里的定位纯粹是为了视觉上的假象的,然后也是为了
 /// 固定一个item,不固定的话,就会有出现一半item的现象///
 rcv_list.scrollToPosition(firstVisibleItemPosition);
 }
 },500);
// ViewHolder v = (ViewHolder) rcv_list.findViewHolderForAdapterPosition(kk);
// Toast.makeText(getApplicationContext(),v.tv_dd.getText(),Toast.LENGTH_SHORT).show();
// rcv_list.scrollToPosition(firstVisibleItemPosition);
 }
 }
 @Override
 public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
 super.onScrolled(recyclerView, dx, dy);
 }
 });
 }

效果图

About

是一个简单仿时间滑动选择器

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

Contributors

Languages

AltStyle によって変換されたページ (->オリジナル) /