监听HorizontalScrollView滑动到最左/最右
来源:互联网 发布:雷盾网络验证通杀器 编辑:程序博客网 时间:2024/06/07 17:47
监听ScrollView滑动停止后,滚动条的位置,是在最左?最右?其它地方?
1,先定制HorizontalScrollView
import android.content.Context;
import android.graphics.Rect;
import android.util.AttributeSet;
import android.widget.HorizontalScrollView;
public class ScrollViewCustom extends HorizontalScrollView
{
private Runnable scrollerTask;
private int intitPosition;
private int newCheck = 100;
private int childWidth = 0;
public interface OnScrollStopListner
{
/**
* scroll have stoped
*/
void onScrollStoped();
/**
* scroll have stoped, and is at left edge
*/
void onScrollToLeftEdge();
/**
* scroll have stoped, and is at right edge
*/
void onScrollToRightEdge();
/**
* scroll have stoped, and is at middle
*/
void onScrollToMiddle();
}
private OnScrollStopListner onScrollstopListner;
public ScrollViewCustom(Context context, AttributeSet attrs)
{
super(context, attrs);
scrollerTask = new Runnable()
{
@Override
public void run()
{
int newPosition = getScrollX();
if (intitPosition - newPosition == 0)
{
if(onScrollstopListner == null)
{
return;
}
onScrollstopListner.onScrollStoped();
Rect outRect = new Rect();
getDrawingRect(outRect);
if(getScrollX() == 0)
{
onScrollstopListner.onScrollToLeftEdge();
}
else if(childWidth + getPaddingLeft() + getPaddingRight() == outRect.right)
{
onScrollstopListner.onScrollToRightEdge();
}
else
{
onScrollstopListner.onScrollToMiddle();
}
} else
{
intitPosition = getScrollX();
postDelayed(scrollerTask, newCheck);
}
}
};
}
public void setOnScrollStopListner(OnScrollStopListner listner)
{
onScrollstopListner = listner;
}
public void startScrollerTask()
{
intitPosition = getScrollX();
postDelayed(scrollerTask, newCheck);
checkTotalWidth();
}
private void checkTotalWidth()
{
if(childWidth > 0)
{
return;
}
for(int i = 0; i < getChildCount(); i++)
{
childWidth += getChildAt(i).getWidth();
}
}
2,使用
protected void onCreate(Bundle savedInstanceState)
{
final ScrollViewCustom scrollView;
scrollView.setOnTouchListener(new OnTouchListener()
{
public boolean onTouch(View v, MotionEvent event)
{
if (event.getAction() == MotionEvent.ACTION_UP)
{
scrollView.startScrollerTask();
}
return false;
}
});
scrollView.setOnScrollStopListner(new OnScrollStopListner()
{
public void onScrollToRightEdge()
{
}
public void onScrollToMiddle()
{
}
public void onScrollToLeftEdge()
{
}
public void onScrollStoped()
{
}
});
- 监听HorizontalScrollView滑动到最左/最右
- 监听HorizontalScrollView滑动到最左/最右
- Android ViewPager与仿Gallery的HorizontalScrollView互相滑动监听
- ScrollView的滑动监听(以HorizontalScrollView为例)
- 【android】判断HorizontalScrollView/ScrollView滑到最左/上和最右/下
- HorizontalScrollView滑动
- 自定义HorizontalScrollView嵌套HorizontalListView实现手势监听、按钮监听滑动功能
- HorizontalScrollView嵌套在ListView,实现从右向左滑动单个删除,当滑动出来后,解决HorizontalScrollView被ListView回收+多个删除
- Android 监听 ScrollView 滑动到最底部
- HorizontalScrollView 自动滑动
- 横向滑动HorizontalScrollView+Gridview
- HorizontalScrollView 滑动处理
- android 横向滑动 HorizontalScrollView
- HorizontalScrollView随页面滑动
- HorizontalScrollView之水平滑动
- Android HorizontalScrollView左右滑动
- HorizontalScrollView横向滑动
- HorizontalScrollView横向滑动
- python定时邮件发送
- ERP三不要
- 啦啦啦啦
- yii的一点一滴
- detailsview和gridview的绑定
- 监听HorizontalScrollView滑动到最左/最右
- 内存详解
- @JoinTable和@JoinColumn
- AIX配置BIEE
- matplotlib图表图片生成
- OGRE创建场景、摄像机、视口的基本流程
- google广告系统
- 加密狗
- 把十进制的n转化成r进制的数的模板