- 浏览: 506428 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (200)
- java基础 (30)
- ajax (19)
- 乱写 (5)
- groovy (2)
- db (8)
- gwt (0)
- jee (2)
- 我关注的开源 (1)
- RIA AIR (1)
- spring (11)
- lucene (0)
- 工具 (10)
- 百科 (2)
- linux (6)
- android (40)
- 移动开发 (21)
- 代码片断 (15)
- tomcat (1)
- css (1)
- html5 (2)
- jquery (2)
- playframework (3)
- web (2)
- nio (3)
- design (1)
- nosql (3)
- 日志 (12)
- mysql (4)
- 图表 (1)
- python (3)
- ruby (1)
- git (0)
- hibernate (1)
- springboot (1)
- guava (1)
- mybatis (0)
- 工作问题 (3)
- php (1)
最新评论
-
linzm1990:
踩了很多坑啊。。。。
hibernate @Nofound 与@ManyToOne fetch lazy的问题 -
Ccccrrrrrr:
...
转: Spring boot 文件上传 -
rmzdb:
兄弟,你这个东西,在ie内核的浏览器,貌似不识别 文件名
工作问题:http下载文件,中文文件名在firefox下乱码问题 -
107x:
问题解决了,谢谢!
工作问题:http下载文件,中文文件名在firefox下乱码问题 -
klxqljq:
额鹅鹅鹅
android布局实现头尾固定, 中间多余内容可以滚动
转自: http://www.cnblogs.com/-OYK/archive/2011/08/03/2126691.html
当我们捕捉到Touch操作的时候,如何识别出用户的Gesture?这里我们需要GestureDetector.OnGestureListener接口的帮助,于是我们的GestureTest类就变成了这个样子。
随后,在onTouch()方法中,我们调用GestureDetector的onTouchEvent()方法,将捕捉到的MotionEvent交给 GestureDetector 来分析是否有合适的callback函数来处理用户的手势。
接下来,我们实现了以下6个抽象方法,其中最有用的当然是onFling()、onScroll()和onLongPress()了。我已经把每一个方法代表的手势的意思写在了注释里,大家看一下就明白了。
我们来试着做一个onFling()事件的处理吧,onFling()方法中每一个参数的意义我写在注释中了,需要注意的是Fling事件的处理 代 码中,除了第一个触发Fling的ACTION_DOWN和最后一个ACTION_MOVE中包含的坐标等信息外,我们还可以根据用户在X轴或者Y轴上的 移动速度作为条件。比如下面的代码中我们就在用户移动超过100个像素,且X轴上每秒的移动速度大于200像素时才进行处理。
注意:
我们需要在onCreate中tv.setOnTouchListener(this);之后添加如下一句代码。
只有这样,view才能够处理不同于Tap(轻触)的hold(即ACTION_MOVE,或者多个ACTION_DOWN),我们同样可以通过layout定义中的android:longClickable来做到这一点。
public class GestureTest extends Activity implements OnTouchListener{ @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); // init TextView TextView tv = (TextView) findViewById(R.id.page); // set OnTouchListener on TextView tv.setOnTouchListener(this); // show some text tv.setText(R.string.text); } @Override public boolean onTouch(View v, MotionEvent event) { Toast.makeText(this, "onTouch", Toast.LENGTH_SHORT).show(); return false; }
当我们捕捉到Touch操作的时候,如何识别出用户的Gesture?这里我们需要GestureDetector.OnGestureListener接口的帮助,于是我们的GestureTest类就变成了这个样子。
public class GestureTest extends Activity implements OnTouchListener, OnGestureListener { .... }
随后,在onTouch()方法中,我们调用GestureDetector的onTouchEvent()方法,将捕捉到的MotionEvent交给 GestureDetector 来分析是否有合适的callback函数来处理用户的手势。
@Override public boolean onTouch(View v, MotionEvent event) { // OnGestureListener will analyzes the given motion event return mGestureDetector.onTouchEvent(event); }
接下来,我们实现了以下6个抽象方法,其中最有用的当然是onFling()、onScroll()和onLongPress()了。我已经把每一个方法代表的手势的意思写在了注释里,大家看一下就明白了。
// 用户轻触触摸屏,由1个MotionEvent ACTION_DOWN触发 @Override public boolean onDown(MotionEvent e) { // TODO Auto-generated method stub Toast.makeText(this, "onDown", Toast.LENGTH_SHORT).show(); return false; } // 用户轻触触摸屏,尚未松开或拖动,由一个1个MotionEvent ACTION_DOWN触发 // 注意和onDown()的区别,强调的是没有松开或者拖动的状态 @Override public void onShowPress(MotionEvent e) { // TODO Auto-generated method stub } // 用户(轻触触摸屏后)松开,由一个1个MotionEvent ACTION_UP触发 @Override public boolean onSingleTapUp(MotionEvent e) { // TODO Auto-generated method stub return false; } // 用户按下触摸屏、快速移动后松开,由1个MotionEvent ACTION_DOWN, 多个ACTION_MOVE, 1个ACTION_UP触发 @Override public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) { // TODO Auto-generated method stub return false; } // 用户长按触摸屏,由多个MotionEvent ACTION_DOWN触发 @Override public void onLongPress(MotionEvent e) { // TODO Auto-generated method stub } // 用户按下触摸屏,并拖动,由1个MotionEvent ACTION_DOWN, 多个ACTION_MOVE触发 @Override public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) { // TODO Auto-generated method stub return false; }
我们来试着做一个onFling()事件的处理吧,onFling()方法中每一个参数的意义我写在注释中了,需要注意的是Fling事件的处理 代 码中,除了第一个触发Fling的ACTION_DOWN和最后一个ACTION_MOVE中包含的坐标等信息外,我们还可以根据用户在X轴或者Y轴上的 移动速度作为条件。比如下面的代码中我们就在用户移动超过100个像素,且X轴上每秒的移动速度大于200像素时才进行处理。
@Override public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) { // 参数解释: // e1:第1个ACTION_DOWN MotionEvent // e2:最后一个ACTION_MOVE MotionEvent // velocityX:X轴上的移动速度,像素/秒 // velocityY:Y轴上的移动速度,像素/秒 // 触发条件 : // X轴的坐标位移大于FLING_MIN_DISTANCE,且移动速度大于FLING_MIN_VELOCITY个像素/秒 if (e1.getX() - e2.getX() > FLING_MIN_DISTANCE && Math.abs(velocityX) > FLING_MIN_VELOCITY) { // Fling left Toast.makeText(this, "Fling Left", Toast.LENGTH_SHORT).show(); } else if (e2.getX() - e1.getX() > FLING_MIN_DISTANCE && Math.abs(velocityX) > FLING_MIN_VELOCITY) { // Fling right Toast.makeText(this, "Fling Right", Toast.LENGTH_SHORT).show(); } return false; }
注意:
我们需要在onCreate中tv.setOnTouchListener(this);之后添加如下一句代码。
tv.setLongClickable(true);
只有这样,view才能够处理不同于Tap(轻触)的hold(即ACTION_MOVE,或者多个ACTION_DOWN),我们同样可以通过layout定义中的android:longClickable来做到这一点。
发表评论
-
android listview
2012-07-13 17:37 930ListView与Button的共存问题解决, 解决在list ... -
演化理解 Android 异步加载图片
2011-11-09 09:55 902LinearLayout 布局,其下放了5个ImageView ... -
android常用颜色
2011-11-07 08:49 1284常用颜色值: 可以完美的颜色比对的网站: http://w ... -
dialog,activity 屏蔽Home键详解
2011-11-03 09:39 0http://www.iteye.com/topic/1116 ... -
android SlidingDrawer example
2011-11-03 09:35 0http://disanji.net/2010/12/16/a ... -
play flash swf file in android with webview
2011-11-03 09:34 0http://androidforums.com/applic ... -
AnimationDrawable 在Dialog中不能动画的原因(转)
2011-11-03 09:33 1303原来在dialog的onCreate onStart调用的时候 ... -
Free Android UI library & component roundup
2011-11-03 09:27 1150http://java.dzone.com/articles/ ... -
Android Fundamentals: Scheduling Recurring Tasks
2011-11-03 09:26 984http://mobile.tutsplus.com/tuto ... -
Android ListView pull up to refresh 改造(转)
2011-11-03 09:25 2100转自: http://dengyin2000.iteye.co ... -
Android中dp和px之间进行转换
2011-11-03 09:02 2268在xml布局文件中,我们既可以设置px,也可以设置dp(或者d ... -
view的setTag() 和 getTag()应用
2011-10-31 12:19 29936View中的setTag(Onbect)表示给View添加一个 ... -
使用getIdentifier()获取资源Id
2011-10-31 12:15 8461使用getIdentifier()获取资源Id int i ... -
ListView的长按菜单___源码分析
2011-10-24 09:28 2598ListView的长按菜单___源码分析 Android的l ... -
让你的Android程序兼容多种分辨率
2011-10-24 09:20 1029http://www.android123.com.cn/an ... -
andr菜单
2011-10-24 09:18 1212Android 菜单 菜单分为两种:系统菜单和上下文菜单。 ... -
Android 长按显示上下文菜单代码
2011-10-24 09:14 5943Android 长按显示上下文 ... -
Android Asynchronous Http Client
2011-10-19 10:27 2910转自: loopj.com/android-async-htt ... -
Android canvas.drawBitmap实现透明效果
2011-09-02 14:22 23441以下是针对,canvas.drawBitmap方法实施透明效 ... -
android资源别名
2011-08-30 14:24 2324详细请参考: http://developer.android ...
相关推荐
总结起来,Android触屏手势识别涉及了触摸事件处理、`GestureDetector`、`ScaleGestureDetector`、`GestureOverlayView`以及自定义手势识别等多个方面。理解并熟练运用这些知识点,可以创建出更加直观、友好的用户...
在Android开发中,触屏手势识别是提升用户体验的关键技术之一。这个"Android触屏手势识别Demo源码"提供了一个实际的示例,帮助开发者理解如何在Android应用中实现手势识别功能。下面将详细讲解Android触屏手势的基础...
Android触摸屏手势识别是Android系统中一项关键的交互技术,它允许用户通过触摸屏幕执行各种操作,如滑动(Fling)、滚动(Scroll)等,从而提升应用程序的用户体验。在Android开发中,手势识别主要依赖于`...
在Android应用程序开发中,触屏手势识别是提升用户体验的关键技术之一。`GestureTest.zip`这个压缩包文件包含了一个专门用于研究和实践Android触屏手势识别的项目实例,它可以帮助开发者深入理解并掌握这一核心技术...
在Android开发中,触屏手势识别是用户交互设计的关键部分,它使得用户可以通过直观的手势进行操作,提高应用的易用性和用户体验。GestureTest是一个典型的Android应用源码示例,用于帮助开发者理解和实现各种触屏...
在Android平台上,触屏手势识别是用户交互设计的重要组成部分,它极大地丰富了用户与设备的交互方式,使得操作更加直观和便捷。`GestureTest.zip`这个压缩包包含了一个关于Android触屏手势识别的示例项目,我们可以...
在Android平台上,触屏手势识别是一项关键的技术,它使得用户可以通过直观的手势操作与应用程序进行交互。本项目“Android 触屏手势识别GestureTest”是一个毕业设计示例,旨在帮助学生理解和实现Android应用中的...
在Android系统中,触屏手势识别是用户交互的重要组成部分,它极大地丰富了用户与设备的互动方式。"GestureTest"通常是一个示例项目,用于帮助开发者理解和实现Android平台上的手势识别功能。在这个压缩包文件中,...
"安卓Android源码——触屏手势识别GestureTest.zip"是一个专注于手势识别的项目,它帮助开发者深入理解如何在Android应用中实现对用户触摸屏幕行为的智能解析。 在Android系统中,触屏手势识别是通过`...
Android 触屏手势识别GestureTest.zip项目安卓应用源码下载Android 触屏手势识别GestureTest.zip项目安卓应用源码下载 1.适合学生毕业设计研究参考 2.适合个人学习研究参考 3.适合公司开发项目技术参考