android页面横向滚动,揭秘Android界面水平滑动与竖直滑动实现

第四步,实现OnTouchListener接口和onTouch()方法。

现在我来解释下为何不能滑动,因为当发生触屏事件时,Android系统没有直接调用myGestureDetector和OnGestureListener里的方法,也不可能把MotionEvent类型的参数传递给onFling()函数。因此,按照前面的思路我们下面还需让myGestureDetector中的方法被调用,并获得参数。

为此,我们需要实现OnTouchListener接口和onTouch()方法,因为当一个View上发生触摸事件,android系统会调用的这个方法,并传递给它MotionEvent对象作为参数。

publicclassMainActivityextendsActivityimplementsOnGestureListener, OnTouchListener {}然后,对myViewFlipper设置触屏事件监听器。

// MainActivity继承了OnTouchListener接口

myViewFlipper.setOnTouchListener(this);

现在是伟大工程的最后一步啦,欢呼吧。我们实现onTouch()方法,在里面调用myGestureDetector对象的onTouchEvent()方法,并把MotionEvent类型参数event传递进去,这样我们的手势识别方法就能处理现在的触屏手势啦。

/*

* 实现OnTouchListener接口中的onTouch()方法,当View上发生触屏时间时调用,传如一个View和一个运动事件event,我们将

* 这个event传给OnGestureListener接口的onTouchEvent()方法处理,这样我们的OnFling()就能工作了

*/

publicbooleanonTouch(View v, MotionEvent event) {

returnmyGestureDetector.onTouchEvent(event);

}

好了,现在你可以再次运行程序看看效果了,我不会再抖包袱了。

啰啰嗦嗦写了那么多,想必大家对整个功能的实现过程,需要的类、接口与方法,以及它们的功能都有一个了解了吧。

我们还有两个较简单的功能要实现,请继续往下看。

一个Activity对应多个View时的空间注册

当我们只有一个View对应一个Activity时,View里的控件注册自然在这个Activity里完成,现在多个View对应一个Activity,又该如何注册呢?我们别忘了Activity是管家的角色,这些工作自然还是给这个它完成。我在代码里已经给每个View里的Button控件完成了注册,按下Button后可以显示一个Toast,因为太简单这里就不浪费笔墨了,有兴趣的朋友可以下载源代码来研究。

a7cd3ccaada70ae0078c5313a59ef61a.gif

最后是屏幕竖直滑动的实现。

比起水平滑动它实在太简单了,因为android直接提供了一种View来处理,我们直接在layout文件里使用标签就可以了。需要注意的是,ScrollView下只能包含一个子元素,因此如果你的ScrollView下有多个View控件,请像我一样用个属于ViewGroup的Layout将它们包起来,再将这个Layout放入ScrollView标签中。

xmlns:android="http://schemas.android.com/apk/res/android"

android:orientation="vertical"

android:layout_width="match_parent"

android:layout_height="match_parent"

>

android:orientation="vertical"

android:layout_width="match_parent"

android:layout_height="match_parent">

android:text="这是第三个View,也是一个ScrollView"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

/>

android:id="@+id/thiedButton"

android:text="第三个View上的提示"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

/>

5784b1b7c9bd4abaf3995f6266919475.gif

Ok,所有要介绍的知识点都介绍完了,���望这些知识对大家有用。真正的编程中的界面滑动效果可能比这个复杂,希望大家坚信android是强大的,拿出锲而不舍的精神克服这些困难。0b1331709591d260c1c78e86d0c51c18.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值