您的位置:首页 > 运维架构

Developer-ScrollView

2015-09-09 15:04 543 查看
一、综述

scrollview不能够单独使用,需要配合子布局,比如vertical的linearlayout。同时注意,scrollview里面不要放置listview,因为会在竖直滑动 动作上造成冲突。同时,TextView有自己的滑动,不需要scrollview。再者,ScrollView只支持竖直方向的滑动,如果是水平方向,需要使用HorizontalScrollView

继承自:

java.lang.Object

↳ android.view.View

↳ android.view.ViewGroup

↳ android.widget.FrameLayout

↳ android.widget.ScrollView

二、常用方法

1、dispatchKeyEvent(KeyEvent event)

把一个key event分配给在focus path上的下一个view。这条路从视图树的顶端到当前视图。如果这个视图已经focus,会分给自己。要不然会分配给下一个节点。这个方法也能够开启任何key listener。

参数:event 待分配的key事件

返回:如果已经handle则返回true,相反返回flase

2、draw(Canvas canvas)

手动着色(绘制)指定Canvas的view。该函数调用前,该view必须已经全局布局。当加载一个view的时候,实施onDraw类而不是复写。

参数:canvas 需要着色的view

3、public void fling(int velocityY)(急行的意思)

参数:在Y方向上的初始速度。正数表示是向屏幕下方滑动,即到达scrolll的顶部。

4、onGenericMotionEvent(MotionEvent event)

实现该方法用于处理一般动作事件。Generic motion events 描述 joystick movements, mouse hovers, track pad touches, scroll wheel movements and other input events.

参看源码:

public boolean onGenericMotionEvent(MotionEvent event) {
if (event.isFromSource(InputDevice.SOURCE_CLASS_JOYSTICK)) {
if (event.getAction() == MotionEvent.ACTION_MOVE) {
// process the joystick movement...
return true;
}
}
if (event.isFromSource(InputDevice.SOURCE_CLASS_POINTER)) {
switch (event.getAction()) {
case MotionEvent.ACTION_HOVER_MOVE:
// process the mouse hover movement...
return true;
case MotionEvent.ACTION_SCROLL:
// process the scroll wheel movement...
return true;
}
}
return super.onGenericMotionEvent(event);
}


参数:event 处理的事件

返回:如果处理了则返回true,否则返回false

5、onInterceptTouchEvent(MotionEvent ev)

用于拦截所有的触摸屏幕的动作事件。允许监听子view的事件,并且接管过来。

注意其与onTouchEvent()方法的

1)接收到down事件

2)子view处理或者返回给你当前的onTouchEvent()方法处理。意味着你应该使onTouch()事件返回true,这样才能够继续查看接下来的gesture,而不是找父view处理。同时,如果你返回了true,在onInterceptTouchEvent(MotionEvent ev)方法里面就接收不到了。

3)如果该方法返回false,event会先发送到这里,然后再给目标的onTouchEvent()方法

4)如果这里返回true,就不会接收到event了

参数:ev 分发的事件

返回:见3),4)

6、public boolean onTouchEvent(MotionEvent ev)

处理click事件

返回:true则是可以处理,否则不能

7、pageScroll(int direction)

处理page up/down事件,就是快速地翻页,并且focus到新区域的最高或最底

参数:FOCUS_UP或者FOCUS_DOWN

返回:如果使用就返回true,否则flase

8、requestChildFocus(View child, View focused)

当子视图请求焦点时

参数:child :子视图 foucus:当前有焦点的视图

9、requestLayout()

无效视图已经有所改变的时候调用。(还是不太懂)

10、onMeasure(int widthMeasureSpec, int heightMeasureSpec)

根据view和内容决定宽度和高度。复写该方法时,需要调用setMeasuredDimension(int,int)来保存测量好的宽度和高度。同时需要确定view的最小的高度和宽度getSuggestedMinimumHeight()和getSuggestedMinimunWidth()。

参数:width.. 父view规定的横向空间

height...父view规定的纵向空间

11、onSaveInstanceState()

保存重现当前实例的最基本的要素。

返回:返回一个 parcelable 的对象

12、public void scrollTo (int x, int y)

滑动到~~~~
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: