如何获得scrollview的滑动位置

 我来答
兄弟连教育
2016-08-08 · 百度知道合伙人官方认证企业
兄弟连教育
兄弟连教育成立于2006年,11年来专注IT职业教育,是国内专业的IT技术培训学校。2016年成功挂牌新三板(股票代码:839467)市值过亿。开设专注程序员培训专注php、Java、UI、云计算、Python、HTML5、
向TA提问
展开全部
有时候我们需要判断scrollview滑动到了哪一个位置。下面这部分代码完整的说明了如何判断scrollvew滑动到哪一个位置:
[mw_shl_code=java,true]public
class MyScrollView extends ScrollView {
public MyScrollView(Context
context, AttributeSet attrs) {
super(context,
attrs);

handler = new Handler() {

public void handleMessage(Message msg) {

if (msg.what == 1) {

/*这样做为什么可以成功?

*
认真思考它。如果思考明白了,尤其是getMeasuredHeight()与getHeight方法有什么区别,那么整个View的绘制过程可以说你就十分清晰。如果确实不明白,留言吧!我会比较详细的说明的。

*/
if
(view.getMeasuredHeight() <= getScrollY() + getHeight()

&& getScrollY() != 0) {

onScrollListener.onButtom();

} else if (getScrollY() == 0) {

onScrollListener.onTop();

} else

onScrollListener.onScroll();
}

}
};
//
对事件的处理一定是对view刻画完毕之后才开始的,所以,getHeight是有值的

setOnTouchListener(new OnTouchListener() {

@Override
public boolean onTouch(View v, MotionEvent
event) {
view = getChildAt(0);

if (MotionEvent.ACTION_UP == event.getAction()) {

handler.sendEmptyMessage(1);

}
//return false与return
true 是有区别的,如果返回false,scrollview是裤蔽不笑纯亮是有滑动的。百度一下这两个有什么区别就知道为什么要这么做了

return false;
}

});
}

public MyScrollView(Context context,
AttributeSet attrs, int defStyle) {
super(context, attrs,
defStyle);
// TODO Auto-generated constructor stub

}

private OnScrollListener onScrollListener;
private
Handler handler;
private View view;

public void
setOnScrollListener(OnScrollListener onScrollListener) {

this.onScrollListener = onScrollListener;

}
}
/*
*这个小demo只是为了展示如何判断用户滑动到了scrollview的位置。还有很多碰宽优化性能的方法,比如新开线程和将一些代码放在新的方法中,在Activity里面调用它!

*/[/mw_shl_code]
XML文件布局如下:[mw_shl_code=java,true]<?xml version="1.0"
encoding="utf-8"?>
<org.chongshi.test.MyScrollView
xmlns:android="http://schemas.android.com/apk/res/android"

android:layout_width="fill_parent"

android:layout_height="fill_parent"
android:id="@+id/scrollView"
>

<TextView
android:id="@+id/text"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

/>

</org.chongshi.test.MyScrollView>[/mw_shl_code]
MainActivity的代码如下:
[mw_shl_code=java,true]public
class MainActivity extends Activity {
private MyScrollView
scrollView;
private TextView textView;
@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

scrollView=(MyScrollView) findViewById(R.id.scrollView);

textView=(TextView) findViewById(R.id.text);
StringBuilder
s=new StringBuilder();
for(int i=0;i<150;i++){

s.append("这是一个scrollView的测试");

s.append("\n");
}
textView.setText(s);

scrollView.setOnScrollListener(new OnScrollListener() {

@Override

public void onTop() {

Log.e("OnTop", "OnTop");
}

@Override

public void onScroll() {

Log.e("OnScroll", "OnScroll");
}

@Override

public void onButtom() {

Log.e("OnButtom", "OnButtom");

}
});

}

}[/mw_shl_code]
OnScrollListener代码:[mw_shl_code=java,true]public
interface OnScrollListener {

public void
onButtom();
public void onTop();
public void
onScroll();

}
[/mw_shl_code]
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式