第7章 图片定时滑动播放效果 授课老师:高成珍 QQ号: QQ群: 、

Slides:



Advertisements
Similar presentations
网络应用程序设计 2014 JavaBean. JavaBean 及其属性 JavaBean 就是一种 Java 的组件技术 JavaBean 是 Java 类 JavaBean 通过约定的方法名实现属性功能 简单属性 void setXxx(Type value) Type getXxx() boolean.
Advertisements

7.1 内置对象概述及分类 JSP 视频教学课程. JSP2.2 目录 1. 内置对象简介 1. 内置对象简介 2. 内置对象分类 2. 内置对象分类 3. 内置对象按功能区分 3. 内置对象按功能区分 4. 内置对象作用范围 4. 内置对象作用范围.
广州市小学信息技术教学同步资源 第一册 第二章 第六节 《 Window窗口》 广州市荔湾区西华路小学 董绮珊.
第六 章数据库访问页 6.1 数据访问页视图 6.2 创建数据访问页 6.3 编辑数据访问页 6.4 查看数据访问页 退出.
在文章中插入图片 What to do? 任务一(1):请你在“愤怒的小鸟”这个文档中插入“红色小鸟”的图片。 要求:1、自学课本45-47页“做一做”的内容,找到在文档中插入图片的方法后,就动手试一试吧。 哪一小组最先完成,会加平时成绩10分噢,加油吧!
插入超链接 高邮市第一实验小学 范太国 任务一:设置文本超链接 任务一:设置文字超链接 步骤:1、选定文字并右击,在快捷菜单 中选择“超链接”命令。 2、在弹出的对话框中选择左侧“链接到:”中的“本文档中的位置(A)”项,在“请选择文档中的位置(C):”中选择需要链接的幻灯片,单击“确定”按钮。
UI(用户界面)集训班 Illustrator 高级班.
基于解释性语言的手机跨平台架构 Sloan Yi. Qt MTK.
第14章 c++中的代码重用.
C++中的声音处理 在传统Turbo C环境中,如果想用C语言控制电脑发声,可以用Sound函数。在VC6.6环境中如果想控制电脑发声则采用Beep函数。原型为: Beep(频率,持续时间) , 单位毫秒 暂停程序执行使用Sleep函数 Sleep(持续时间), 单位毫秒 引用这两个函数时,必须包含头文件
全国计算机等级考试 二级基础知识 第二章 程序设计基础.
在PHP和MYSQL中实现完美的中文显示
第九章 字符串.
Kvm异步缺页中断 浙江大学计算机体系结构实验室 徐浩.
Hadoop I/O By ShiChaojie.
Java Applet 介绍.
6.4 Notification 通知栏.
Jul 2014 HEAT部署Hadoop集群
走进编程 程序的顺序结构(二).
辅导课程六.
矢量距离路由.
第3章 Android事件处理 QQ号: QQ群: (Android编程-清华版)
网络常用常用命令 课件制作人:谢希仁.
2019/1/12 GDP设计协同 超级管理员操作手册 GDP项目组.
本节内容 模拟线程切换 视频提供:昆山滴水信息技术有限公司 官网地址: 论坛地址: QQ交流 :
用event class 从input的root文件中,由DmpDataBuffer::ReadObject读取数据的问题
SOA – Experiment 2: Query Classification Web Service
C++语言程序设计 C++语言程序设计 第七章 类与对象 第十一组 C++语言程序设计.
第二章 登录UNIX操作系统.
简单介绍 用C++实现简单的模板数据结构 ArrayList(数组, 类似std::vector)
直接扫描保存成TIF格式, 其他图片格式用Windows XP自带的 Windows图片与传真查看器打开
VisComposer 2019/4/17.
实验四、TinyOS执行机制实验 一、实验目的 1、了解tinyos执行机制,实现程序异步处理的方法。
第2章 手机屏幕的区域划分 授课老师:高成珍 QQ号: QQ群: 、
VB与Access数据库的连接.
计算机网络与网页制作 Chapter 07:Dreamweaver CS5入门
第4章 Excel电子表格制作软件 4.4 函数(一).
iSIGHT 基本培训 使用 Excel的栅栏问题
螢幕觸控及手勢辨別 靜宜大學資管系 楊子青.
《手把手教你学STM32-STemWin》 主讲人 :正点原子团队 硬件平台:正点原子STM32开发板 版权所有:广州市星翼电子科技有限公司
本节内容 结构体 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
第六章 素材的加工与处理 第13讲 用GoldWave进行音频的截取、合并、淡入淡出操作
CustomView(自定義視圖) 、 畫布、顏色及多點觸控 靜宜大學資管系 楊子青
_13简单的GDI绘图操作 本节课讲师——void* 视频提供:昆山爱达人信息技术有限公司 官网地址:
本节内容 文件系统 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
Chapter 18 使用GRASP的对象设计示例.
多层循环 Private Sub Command1_Click() Dim i As Integer, j As Integer
Visual Basic程序设计 第13章 访问数据库
C++语言程序设计 C++语言程序设计 第八章 继承 C++语言程序设计.
辅导课程十五.
Lync 2013 for Android 课程摘要卡 加入 Lync 会议 登录并开始使用 在会议中启动您的视频 更改状态或注销
Python 环境搭建 基于Anaconda和VSCode.
本节内容 结构体.
本节内容 Windows线程切换_时钟中断切换 视频提供:昆山滴水信息技术有限公司 官网地址: 论坛地址: QQ交流 :
_08文件操作 本节课讲师——void* 视频提供:昆山爱达人信息技术有限公司 官网地址:
MFC控件 本节内容 视频提供:昆山爱达人信息技术有限公司 视频录制:yang 官网地址:
武汉纺织大学传媒学院 cm.wtu.edu.cn
《手把手教你学STM32-STemWin》 主讲人 :正点原子团队 硬件平台:正点原子STM32开发板 版权所有:广州市星翼电子科技有限公司
阻塞式模型 本节内容 视频提供:昆山爱达人信息技术有限公司 视频录制:yang 官网地址:
基于列存储的RDF数据管理 朱敏
本节内容 动态链接库 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
第8章 创建与使用图块 将一个或多个单一的实体对象整合为一个对象,这个对象就是图块。图块中的各实体可以具有各自的图层、线性、颜色等特征。在应用时,图块作为一个独立的、完整的对象进行操作,可以根据需要按一定比例和角度将图块插入到需要的位置。 2019/6/30.
本节内容 进程 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
使用ADO访问数据库 李宝智 BonizLee 课程 10564A
创建、启动和关闭Activity 本讲大纲: 1、创建Activity 2、配置Activity 3、启动和关闭Activity
位似.
控制UI界面 本讲大纲: 1、使用XML布局文件控制UI界面 2、在代码中控制UI界面 3、使用XML和Java代码混合控制UI界面
使用Fragment 本讲大纲: 1、创建Fragment 2、在Activity中添加Fragment
本节内容 SEMAPHORE 视频提供:昆山滴水信息技术有限公司 官网地址: 论坛地址: QQ交流 :
多个Activity的使用 本讲大纲: 1、使用Bundle在Activity之间交换数据 2、调用另一个Activity并返回结果
Presentation transcript:

第7章 图片定时滑动播放效果 授课老师:高成珍 QQ号:1281147324 QQ群:287966120、314753495 网络资源:http://10lab.cn/case/resource.html

自定义控件—图片轮播效果 效果描述 该控件中包含多张图片,并且图片是按照从左到右的顺序依次摆放的,图片间可以切换,并且能够展示切换过程。在此,图片间的切换有如下三种方式。 ①定时切换,即每隔一定的时间(在此为8秒)图片自动切换到下一张图片。 ②手势滑动切换,即该控件能够监听用户的触摸事件,根据用户手势切换到上一张或下一张图片。 ③单击小圆圈切换,一个小圆圈对应一张图片,红色的小圆圈对应当前显示的图片,单击某个小圆圈后,能够切换到该圆圈所对应的图片。

自定义控件—图片轮播效果 1. 自定义容器类,继承自ViewGroup ViewGroup是所有容器类的基类,它自身并没有指定容器中各子控件的摆放规则,而是提供了一个抽象方法onLayout(),由其子类实现该方法来指定具体的摆放规则。当容器里的控件大小发生变化时,会自动回调该方法。本例指定容器里的控件从左到右摆放,即控件的水平位置根据其在容器中的序号来计算,而垂直位置都是从顶部开始。关键代码如下:

自定义控件—图片轮播效果 2. 向容器中添加图片 MyImageTopView控件的主要作用就是在多个图片之间滑动切换,首先需要为其初始化一些图片,在此为其单独写了一个方法initImages(int[] imgIds),根据数组中的图片个数,创建相应的图片控件,然后将其添加到容器中。

自定义控件—图片轮播效果 3. 定时轮播功能 创建定时器,发送消息 什么时候启动定时器? 接收和处理消息 要想实现定时轮播功能,必定需要启动一个线程用于计时,到了指定的时间,即执行图片切换功能。Android中明确规定子线程不能操作UI主线程,在此通过Handler消息传递机制实现子线程与主线程间通信。具体步骤如下。 ①创建和启动定时器 ②通过Handler定时发送消息 ③Handler接收消息并处理消息 ④实现图片滑动切换 创建定时器,发送消息 什么时候启动定时器? 接收和处理消息

自定义控件—图片轮播效果 ④实现图片滑动切换 启动滑动动画 更改滚动条位置 由于需要展示图片滑动切换的过程,因此,首先需要知道滑动的距离,然后设置滑动的时间,接着根据距离和时间生成滑动补间动画。滑动结束后,需要记录当前显示的图片。关键代码如下。 启动滑动动画 更改滚动条位置

自定义控件—图片轮播效果 4. 手势滑动切换功能 应该在哪里为控件注册触摸事件监听器? 触摸事件监听器 要想实现手势滑动切换功能,首先需要为该控件添加触摸事件监听器,然后创建手势监听器,并将触摸事件转交给手势监听器处理,最后根据用户的手势操作切换到上一张或下一张。具体步骤如下。 ①创建触摸事件监听器,并为控件注册该监听器 ②创建手势监听器,并将触摸事件转交给手势监听器处理 ③重写手势监听器中的onScroll()和onFling()方法,处理用户操作 ④实现图片滑动切换 触摸事件监听器 应该在哪里为控件注册触摸事件监听器?

自定义控件—图片轮播效果 手 势 监 测 器 Android中手势检测器能够识别用户的各种触摸操作,并针对不同的操作调用相应的方法进行处理,本案例中主要处理onScroll()和onFling()两种操作。

自定义控件—图片轮播效果 onScroll()方法实现 onFling()方法实现

自定义控件—图片轮播效果 5. 单击小圆圈切换图片 ①修改布局文件,在图片底部添加小圆圈 ② 初始化小圆圈控件,圆圈的个数由图片数决定 要想实现单击小圆圈切换图片功能的关键在于小圆圈和图片之间建立一一对应的关系。一个小圆圈代表一张图片,小圆圈有两种状态,红色表示当前显示的图片,黄色表示未显示的图片。同时,当图片切换后,相应的小圆圈状态也要随之变化,小圆圈与图片之间是双向互联关系,相互影响。具体步骤如下。 ①修改布局文件,在图片底部添加小圆圈 ② 初始化小圆圈控件,圆圈的个数由图片数决定 ③为圆圈控件添加事件处理,让图片切换到指定图片 ④图片切换后,需改变小圆圈的状态 如何让小圆圈与图片之间建立一一对应的关系?

自定义控件—图片轮播效果 初始化小圆圈并为其添加单击事件处理 将所有的小圆圈设置为黄色

自定义控件 在Android中,所有的控件都是从View类继承而来,View类中只提供了一些共同的属性、方法,类似于Java中Object类是所有类的超类一样。View对象可以理解为屏幕上一块空白的矩形区域,不同的控件通过继承View类,然后重写它的一些方法,或者额外添加一些方法,进行扩展,从而形成了风格迥异、功能强大的控件。基于这个原理,开发者完全可以通过继承View类或者View类的已有子类来创建具有自己风格的控件。具体步骤如下: 1)定义控件的类名,并让该类继承View类或一个现有的View的子类。本例中希望创建一个可以容纳其它控件的容器控件,因此选择继承View类的子类ViewGroup。

自定义控件 2)为自定义控件添加构造方法,然后选择性的重写父类的方法。自定义控件时,必须提供构造方法,构造方法是创建自定义控件的最基本方式,无论是通过Java代码还是布局文件创建该控件,都会执行构造方法。View类本身不存在无参数的构造方法,子类必须显示调用父类的构造方法,否则会报错。此外,可根据业务需要重写父类的部分方法。例如onDraw()方法用于绘制界面。本例中重写了父类的onLayout()方法和computeScroll()方法,这些方法是系统根据情景自动调用的。 3)使用自定义的控件,既可以通过Java代码来创建,也可以通过XML布局文件进行创建,在XML布局文件中,该控件的标签是完整的包名+类名,而不再仅仅是原来的类名。并且要求该控件定义时,构造方法中要提供AttributeSet类型参数。

手势检测 所谓手势,其实是指用户手指或触摸笔在触摸屏上的连续触碰行为,例如在屏幕上从左到右划出的一个动作,Android中提供了手势检测,并为手势检测提供了相应的监听器。Android中的手势检测类是GestureDetector,创建该类的对象时,需传递两个参数:当前的上下文对象Context,以及手势监听器OnGestureListener。 使用Android中的手势检测只需要两个步骤: (1)创建一个手势检测类GestureDetector的对象,并指定手势监听器; (2)为当前页面或者特定控件添加触摸事件监听器,例如本例中就是为MyImageTopView控件添加触摸事件监听器,然后在触摸事件处理中将触摸事件转交给GestureDetector处理。

手势检测监听器 boolean onDown(MotionEvent e):手指刚刚接触到触摸屏的那一刹那,触发该方法; void onShowPress(MotionEvent e):手指按在触摸屏上,触发该方法,它的时间范围在按下起效,在长按之前; boolean onSingleTapUp(MotionEvent e):手指离开触摸屏的那一刹那,触发该方法; boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY):手指在触摸屏上滑动时触发该方法,该方法四个参数分别表示滚动开始时的触摸事件,滚动结束时的触摸事件,X轴滚动的距离,Y轴滚动的距离; void onLongPress(MotionEvent e):手指按在屏幕上持续一段时间,并且没有松开时触发该方法; boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY):手指在触摸屏上迅速移动,并松开时触发该方法,该方法四个参数分别表示开始移动时的触摸事件、松开时的触摸事件、X轴的速度、Y轴的速度。 手势检测监听器

手势检测执行过程 当用户触摸手机屏幕时,系统会自动生成一个触摸事件MotionEvent,该事件将会被触摸事件监听器OnTouchListener监听到,然后会调用该监听器的onTouch()方法,并将触摸事件作为参数传递给该方法,然而在onTouch()方法内部又调用GestureDetector的onTouch()方法,同样将触摸事件传递给它,一旦执行该方法,将会被手势监听器监听到,从而会调用手势监听器中的相关方法进行处理。 课后练习题 (1)请简单描述用户触摸屏幕到手势执行的过程。 (2)以下哪个方法不是OnGestureListener接口中声明的方法。() A、onDown() B、onUp() C、onScroll() D、onFling()