申明变量:
public int selectPosition;
实现listview的onScroll接口:
mMusicList.setOnScrollListener(new AbsListView.OnScrollListener() {
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
if(scrollState==SCROLL_STATE_IDLE){
if(view instanceof ListView){
View v = view.getChildAt(0);
int position= view.getFirstVisiblePosition();
if(-v.getTop()>v.getHeight()/2){
scrollAnim((ListView) view,position, v.getTop(),-v.getHeight());
selectPosition=position+1;
}else {
scrollAnim((ListView) view,position, v.getTop(),0);
selectPosition=position;
}
}
}
}
@Override
public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
}
});
滚动到就近项:
private void scrollAnim(final ListView v, final int position, int y1, int y2){
ValueAnimator valueAnimator= ValueAnimator.ofInt(y1,y2);
valueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator animation) {
v.setSelectionFromTop(position,((Integer) animation.getAnimatedValue()).intValue());
}
});
valueAnimator.setDuration(150);
valueAnimator.start();
}
代码转载修改来自:
https://blog.csdn.net/u011453163/article/details/52960329