首页 理论教育 Java程序中动态导入和手势识别实现方法

Java程序中动态导入和手势识别实现方法

时间:2023-06-28 理论教育 版权反馈
【摘要】:动态导入:在Java程序中通过addView方法填充View,如下代码所示,在程序中定义3个ImageView控件并为它们设置图片,再调用ViewFlipper的addView方法添加。表2-2-1ViewFlipper控件中的常用方法为ViewFlipper添加手势识别。2)内部类:SimpleOnGestureListener。STEP 1:创建一个内部类实现OnGestureListener,并实现其中的所有的抽象方法。STEP 3:首先为ViewFlipper控件注册onTouchListener监听器,事件处理者为本类。参考代码如下:3)定义手势事件处理GestureDetector类的对象。图2-2-4学习强国App主页面顶部标题栏

Java程序中动态导入和手势识别实现方法

ViewFlipper动态导入View

Android自带的一个多页面管理控件ViewFlipper,可以自动播放实现图片翻转功能。为ViewFlipper控件加入View有以下两种方法。

(1)静态导入:所谓的静态导入就是像上面布局参考代码加粗显示的代码行,用<include>将每个页面添加到ViewFlipper的中间。

(2)动态导入:在Java程序中通过addView方法填充View,如下代码所示,在程序中定义3个ImageView控件并为它们设置图片,再调用ViewFlipper的addView方法添加。

(3)常用方法。表2-2-1列出了ViewFlipper控件中的常用方法。

表2-2-1 ViewFlipper控件中的常用方法

(4)为ViewFlipper添加手势识别。一般情况下,View类有个View.OnTouchListener内部接口,通过重写它的onTouch(View v,MotionEvent event)方法,可以处理一些touch事件,但是这个方法太过简单,如果需要处理一些复杂的手势,用这个接口就会很麻烦。Android SDK提供了GestureDetector(Gesture:手势,Detector:识别)类,通过这个类可以识别很多的手势。GestureDetector这个类对外提供了两个接口和一个内部类:

1)接口:OnGestureListener,OnDoubleTapListener。

2)内部类:SimpleOnGestureListener。

这个内部类,其实是两个接口中所有函数的集成,它包含了这两个接口里所有必须要实现的函数而且都已经重写,但所有方法体都是空的。

下面使用OnGestureListener接口来为ViewFlipper控件添加手势识别。

STEP 1:创建一个内部类实现OnGestureListener,并实现其中的所有的抽象方法。此处也可以使用其他的方式来实现这个接口,比如本类或匿名对象。参考代码如下:

STEP 2:创建GestureDetector类型的对象。参考代码如下:

方法中的参数分别为上下文对象和内部类的对象,内部类对象来完成事件监听。(www.xing528.com)

STEP 3:首先为ViewFlipper控件注册onTouchListener监听器,事件处理者为本类。然后在实现的onTouch抽象方法中完成手势识别的转移,将监听交给上面的gestureDetector来完成。

1)为ViewFlipper注册监听器。参考代码如下:

2)本类实现OnTouchListener监听器。参考代码如下:

3)定义手势事件处理GestureDetector类的对象。参考代码如下:

4)在onTouch方法中完成手势监听事件转移。参考代码如下:

STEP 4:现在,ViewFlipper已具有了手势识别的事件监听,接下来在内部编写滑屏监听的方法onFling()中编写方法体,完成向左、向右滑动时翻转图片。参考代码如下:

STEP 5:此时运行程序,在ViewFlipper控件上滑动手指并没有实现图片的翻转,是由于ViewFlipper中的onClick事件和onFling事件冲突,解决方法是在onDown方法中加入如下语句。

【课后任务】

根据本节课的内容,读者可以完成学习强国App主页面顶部的设计与实现(图2-2-4)。

图2-2-4 学习强国App主页面顶部标题栏

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈