该帖已经被评为良好帖
|
|
---|---|
作者 | 正文 |
发表时间:2009-04-17
最后修改:2009-04-17
Android SDK提供了一个listener类来侦测各种不同的手势: SimpleOnGestureListener. 你只需要实现自己所关心的手势就可以了. Swipe在android里面是叫Fling ^_^ 首先创建自己的一个手势detector类: class MyGestureDetector extends SimpleOnGestureListener { @Override public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) { } 一个划动的手势有几个特征, 比如是在x或者y轴上近乎直线的划动, 中途路径的偏差不能太大, 而且划动需要一定的速度, 所以我们定义几个定量: private static final int SWIPE_MIN_DISTANCE = 120; private static final int SWIPE_MAX_OFF_PATH = 250; private static final int SWIPE_THRESHOLD_VELOCITY = 200; 然后在onFling方法中, 判断是不是一个合理的swipe动作: if(e1.getX() - e2.getX() > SWIPE_MIN_DISTANCE && Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) { viewFlipper.setInAnimation(slideLeftIn); viewFlipper.setOutAnimation(slideLeftOut); viewFlipper.showNext(); } else if (e2.getX() - e1.getX() > SWIPE_MIN_DISTANCE && Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) { viewFlipper.setInAnimation(slideRightIn); viewFlipper.setOutAnimation(slideRightOut); viewFlipper.showPrevious(); } 这里的viewFlipper是含有多个view的一个container, 可以很方便的调用prev/next view, 加上animation动画, 可以达到一些不错的效果: viewFlipper = (ViewFlipper)findViewById(R.id.flipper); slideLeftIn = AnimationUtils.loadAnimation(this, R.anim.slide_left_in); slideLeftOut = AnimationUtils.loadAnimation(this, R.anim.slide_left_out); slideRightIn = AnimationUtils.loadAnimation(this, R.anim.slide_right_in); slideRightOut = AnimationUtils.loadAnimation(this, R.anim.slide_right_out); 自定义的animation可以查看具体的XML, 比如从左边进来的一个动画: <set xmlns:android="http://schemas.android.com/apk/res/android"> <translate android:fromXDelta="100%p" android:toXDelta="0" android:duration="800"/> </set> 当然最后不要忘记在你的Activity中override onTouch方法来获取手势action: @Override public boolean onTouchEvent(MotionEvent event) { if (gestureDetector.onTouchEvent(event)) return true; else return false; } 这是view animation的一个截图: 源代码在附件中 ^_^ 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2009-04-17
我在想用模似器怎么测试多点触摸..
|
|
返回顶楼 | |
发表时间:2009-04-18
hetylei 写道 我在想用模似器怎么测试多点触摸..
鼠标 + 键盘 可以模拟吧... |
|
返回顶楼 | |
发表时间:2009-04-21
好贴,,受教了。。。随便问一下,,大牛们,,,哪里来的这么多时间来研究新技术呀?工作之余?社会生活安排的时间比例又占多少呢?
|
|
返回顶楼 | |
发表时间:2009-04-21
jiachengxi38 写道 好贴,,受教了。。。随便问一下,,大牛们,,,哪里来的这么多时间来研究新技术呀?工作之余?社会生活安排的时间比例又占多少呢?
30多岁的人了, 该玩的都玩了, 以前开过酒吧, 哈哈. 现在静下心来低调学习... 俗话说得好: 时间就像乳沟, 挤挤还是有的... |
|
返回顶楼 | |
发表时间:2009-04-22
终于可以发帖了,真是等了好久了,每次注册一个帐号都要等一天才能发帖,但后来又忘了帐号。真是晕。我每天几乎会来看一下,今天我也回个帖。我可是冲着lordhong来的哦。看了你的很多帖子,非常的不错,也感谢你给我们提供好的资料。但移动的这个版块现在有点冷清的,我相信以后会火的,我也会,我因为最近也想搞移动方面的开发,我本来是做j2ee的,但是我所在公司是做移动应用的,感觉自己是在给他们做陪衬的,而且他们是用c++做的开发,也瞧不起java,晕死,心里不爽啊,的确在操作比效底层东西上面java还是不行,速度也的确有点慢。最近有空在看c++,想着这个还是比效有用,计算机上和手机上都可做开发,而且经久不衰的,java这两年不行了,真是成白菜价了,所以也想往 C/c++ 这个方向发展,但自己还一直在犹豫,不知道具体的方向,手机的平台也多。
|
|
返回顶楼 | |
发表时间:2009-04-22
flygo 写道 终于可以发帖了,真是等了好久了,每次注册一个帐号都要等一天才能发帖,但后来又忘了帐号。真是晕。我每天几乎会来看一下,今天我也回个帖。我可是冲着lordhong来的哦。看了你的很多帖子,非常的不错,也感谢你给我们提供好的资料。但移动的这个版块现在有点冷清的,我相信以后会火的,我也会,我因为最近也想搞移动方面的开发,我本来是做j2ee的,但是我所在公司是做移动应用的,感觉自己是在给他们做陪衬的,而且他们是用c++做的开发,也瞧不起java,晕死,心里不爽啊,的确在操作比效底层东西上面java还是不行,速度也的确有点慢。最近有空在看c++,想着这个还是比效有用,计算机上和手机上都可做开发,而且经久不衰的,java这两年不行了,真是成白菜价了,所以也想往 C/c++ 这个方向发展,但自己还一直在犹豫,不知道具体的方向,手机的平台也多。
我也终于可以发帖了... 这几天连续做了好几次脑残测试... Orz... 就冲你是冲我来的... 我就回答下... 一般人... 我不告诉的... 你公司具体是做什么的? embedded linux吗? 一般这些只用到C, C++反而较少, 太底层了. android基本上都是通过JNI(Java Native Interface)来call这些C的库. 对于我们新手来说, 起步是挺困难的. 我们可以先从Android的代码开始看, 由浅入深, 慢慢深入到C方面. 这需要一个过程, 要有耐心和恒心. 不过如果你可以精通android的源码的话, 已经是大牛一只了. 我最近开始看了下android的源码, 那个打击啊... 人与人的差距... 真大啊~~~~~~ |
|
返回顶楼 | |
发表时间:2009-04-22
提起jni来调用c的so库真是寒!!!因为最近用到,所以以后我能不用我死都不会去jni调c 的,稳定性大打折扣,动不动jvm就挂了,java这里没了地位了,我们想控制也控制不了,只有去找c 那边的,受制于人啊。。
|
|
返回顶楼 | |
发表时间:2009-04-22
lordhong 写道 flygo 写道 终于可以发帖了,真是等了好久了,每次注册一个帐号都要等一天才能发帖,但后来又忘了帐号。真是晕。我每天几乎会来看一下,今天我也回个帖。我可是冲着lordhong来的哦。看了你的很多帖子,非常的不错,也感谢你给我们提供好的资料。但移动的这个版块现在有点冷清的,我相信以后会火的,我也会,我因为最近也想搞移动方面的开发,我本来是做j2ee的,但是我所在公司是做移动应用的,感觉自己是在给他们做陪衬的,而且他们是用c++做的开发,也瞧不起java,晕死,心里不爽啊,的确在操作比效底层东西上面java还是不行,速度也的确有点慢。最近有空在看c++,想着这个还是比效有用,计算机上和手机上都可做开发,而且经久不衰的,java这两年不行了,真是成白菜价了,所以也想往 C/c++ 这个方向发展,但自己还一直在犹豫,不知道具体的方向,手机的平台也多。
我也终于可以发帖了... 这几天连续做了好几次脑残测试... Orz... 就冲你是冲我来的... 我就回答下... 一般人... 我不告诉的... 你公司具体是做什么的? embedded linux吗? 一般这些只用到C, C++反而较少, 太底层了. android基本上都是通过JNI(Java Native Interface)来call这些C的库. 对于我们新手来说, 起步是挺困难的. 我们可以先从Android的代码开始看, 由浅入深, 慢慢深入到C方面. 这需要一个过程, 要有耐心和恒心. 不过如果你可以精通android的源码的话, 已经是大牛一只了. 我最近开始看了下android的源码, 那个打击啊... 人与人的差距... 真大啊~~~~~~ 做windows mobile平台和symbian的平台上面的应用,好像他们提供的sdk也只能用c++来写吧。我也在看看android方面 的,但是国内好像一款像样的手机还没出来,前景不知道怎么样啊,我倒是有兴趣做symbian上的应用开发,但是学习周期比较长,犹豫中。。。 问一下lordhong哥,不知道symbian的以后还会这样火吗,毕竟在国内nokia手机还是最多的。但听说国外用nokia的人并不是很多。。。。呵呵,还有问一下你平时用的c/c++做开发多吗? android倒是在开发语言上有点底子,毕竟也做了几年的j2ee的,但j2me没做过,可能有些思想要转变一下。但我现在是想搞搞c/c++了,因为就算不用在的手机上在别处也可用。 最后想问怎么国内的人会看不起java,就觉得用c/c++是很高级的事情的呢?真郁闷,国外也这样吗? |
|
返回顶楼 | |
发表时间:2009-04-22
symbian的开发门槛比较高, 不过貌似开源了, 不知道对开发者的支持会不会好转.
我现在没怎么用C/C++, java够头痛的了. iphone上是用objective-c. 国内因为做外包的太多, 所以java是白菜价了. 但做得好啊的, 也是大牛. HTML做的好其实很不容易... |
|
返回顶楼 | |