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.
参看源码:
参数: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)
滑动到~~~~
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)
滑动到~~~~
相关文章推荐
- shell 二维数组
- 嵌入式 Linux进程含义知多少
- CentOS7修改主机名
- zabbix中通过shell脚本进行微信监控告警
- xargs用法详解
- 成员变量和属性@property
- Linux-Load Average解析
- 在Ubutun 14.04 Desktop LTS上部署Hadoop 2.7.1(伪分布式)
- linux安装dhcp服务器
- Hadoop 实例14 MultipleInputs实战2:多文件输入执行join操作
- 缓冲区溢出分析第05课:编写通用的ShellCode
- CentOS6服务管理之DNS-本地DNS服务器的搭建
- CentOS7将firewalld换成iptables
- 缓冲区溢出分析第04课:ShellCode的编写
- linux用date更改时间还原
- Linux的内核态与用户态切换
- linux平常出现的一些故障
- Spark入门实战系列--4.Spark运行架构
- Get open Popups
- linux sed 命令