浅谈Android(安卓)

浅谈Android(安卓)
浅谈Android(安卓)

浅谈Android--嵌入式操作系统

Android(读音:[??ndr?id],中文俗称安卓)是一个以Linux为基础的半开源操作系统,主要用于移动设备,由Google成立的Open Handset Alliance (OHA,开放手持设备联盟)持续领导与开发中。

--题记.维基百科说起嵌入式系统,曾经在保罗大叔的著作《黑客与画家》里看到多次,然后不明所以,就去查了嵌入式系统。如果说嵌入式系统给我的第一印象是硬件,那么是我还不知道嵌入式在我生活里已经出现了很多年了。

大到冰箱,自动存款机(ATM),小到电子手表,遥控器。在维基百科解答后,我对嵌入式直观的理解,是一种特定的植入硬件并极具针对性的计算机系统。

后来慢慢了解嵌入式的软件方面,就知道了嵌入式操作系统,而其中的佼佼者,就是如今已经超越ios,占据半壁江山的Android。

之所以会说Android,原因有二:一,因为Android如今炙手可热,在新一季度的日本手机软件营销额上,以Java等语言为Android系统开发的Apps,疯狂揽金,李开复断言在两年内,中国内地手机游戏软件市场,将会百花齐放;二,我虽并非研究Java也非致力于Android系统,但是Android系统的内核,却是我所熟悉的Linux内核。而我将自己的开发平台转移到Linux系统,并以Python,Perl以及Lisp语言作为未来的生存工具,所以,就让我们谈一谈Android。

题记中套用维基百科对于Android的介绍,主要的目的,就是为了澄清一件事实“认知”——Android并没有真正的中文名。

Google并没有为Android命名,只有为其版本取名,且翻译成中文:4.2.x Jelly Bean 果冻豆,4.0.x Ice Cream Sandwich 冰激凌三明治,3.x.x Honey

Comb 蜂巢,2.3.x Ginger Bread 姜饼。而“安卓”一词,也是我们自己对其中文简称,就像Facebook并没有为其在中国大陆市场取名一样。

介绍完人家的名字,现在介绍安卓的身世。

2003年10月,有“Android之父”之称的安迪·鲁宾(Andy Rubin)在美国加利福尼亚州帕洛阿尔托创建了Android科技公司(Android Inc.),并与利奇·米纳尔(Rich Miner)、尼克·席尔斯(Nick Sears)、克里斯·怀特(Chris White)共同发展这家公司。谈到创建Android科技公司的原因,鲁宾说:“聪明的移动设备能更好的意识到用户的爱好和要求。”尽管Android科技公司的创始人和员工过去都具有各自的科技成就,但是Android科技公司的经营只显露出它在智能手机软件的方面。

同年,鲁宾为Android科技公司花光了所有的钱。就在这时,史蒂夫·帕尔曼(Steve Perlman)递给了鲁宾一个信封,在里面装有1万美金的现金;帕尔曼并不是以投资的方式给鲁宾这笔钱,因为他拒绝了鲁宾给他的股份。

2005年8月17日,Google收购了Android科技公司,Android科技公司成为Google旗下的一部分。包括米奇·米纳尔、克里斯·怀特等所拥有的全资子公司,所有Android科技公司的员工都被并入Google。当时没有人知道Google

为什么作出这项收购,有许多的猜测,后来证明Google正是借助此次收购正式进入移动领域。

在Google,鲁宾领导着一个负责开发基于Linux内核移动操作系统的团队,这个开发项目便是Android操作系统。Google的合作平台为Android提供了广阔的市场,Google给予各大硬件制造商、软件开发商一个灵活可靠的系统升级承诺,并保证将给予它们最新版本的操作系统。

2006年12月,《华尔街日报》和英国广播公司(BBC)报道了Google有可能进入移动领域的传闻,Google有可能推广移动领域下的各种Google服务,并且将推出一款名为Google电话的自有品牌智能手机。另有传闻指出,按照Google的作风,将有可能呈现出新的智能手机制造商和运营商模式。

2007年9月,Google提交了多项移动领域的专利申请。但并没有人知道,Google将会推出的是一款名为Android的智能手机操作系统。更多的猜测是,Google会推出一款像iPhone一样的自有品牌智能手机系列。

市场上第一款采用Google的Android操作系统的智能手机HTC T-Mobile G1,于2008年10月22日在美国上市,当时定价为179美元。

2007年11月5日,在Google的领导下,成立开放手持设备联盟(Open Handset Alliance),最早的一批成员包括Broadcom公司、HTC、Intel、LG、Marvell等公司。开放手持设备联盟的创建目的是为了创建一个更加开放自由的移动电话环境。而在开放手持设备联盟创建的同一日,联盟对外展示了他们的第一个产品:一部搭载了以Linux 2.6为内核基础的Android操作系统的智能手机。2008年12月9日,新一批成员加入开放手持设备联盟,包括ARM、华为、索尼等公司.

同时,一个负责持续发展Android操作系统的开源代码项目成立了

AOSP(Android Open Source Project) 。除了开放手持设备联盟之外,Android 还拥有全球各地开发者组成的开源社区来专门负责开发Android应用程序和第三方Android操作系统来延长和扩展Android的功能和性能。

Android操作系统使用开放免费代码许可证,一切代码都是公开免费的。Google对Android所使用的Linux内核依据Apache开源条款2.0中所规定的内

容进行了修改,包括添加智能手机网络和电话协议栈等智能手机所必需的功能,使它们能更好的在移动设备上运行,并且根据第二版GNU条款中所规定的内容对修改的Linux内核信息公布。Google也不断发布问卷和开放修改清单、更新情况和代码来让任何人看到并且提出他们的意见和评论,以便按照用户的要求改进Android操作系统。

Android操作系统是完全免费开源的,任何厂商都可以不经过Google和开放手持设备联盟的授权随意使用Android操作系统;但是制造商不能随意地在自己的产品上使用Google的标志和Google的应用程序,例如Google Play等。除非Google证明其生产的产品设备符合Google兼容性定义文件(CDD),这样才能在智能手机上预装Google Play Store、Gmail等应用程序,并且获得CDD 的智能手机厂商也可以在其生产的智能手机上印上“With Google”的标志。

对于Android系统,我最关心的则是——Linux内核

Android操作系统的内核属于Linux内核的一个分支,具有典型的Linux调度和功能,除此之外,Google为了能让Linux在移动设备上良好的运行,对其进行了修改和扩充。Android去除了Linux中的本地X Window System,也不支持标准的GNU库,这使得Linux平台上的应用程序移植到Android平台上变得困难。2008年,Patrick Brady于Google I/O演讲“Anatomy & Physiology of an Android”,并提出的Android HAL架构图。HAL以*.so档的形式存在,可以把Android framework与Linux kernel隔开,这种中介层的方式使得Android能在移动设备上获得更高的运行效率。这种独特的系统结构被Linux内核开发者Greg Kroah-Hartman和其他内核维护者称赞。Google还在Android的内核中加入了自己开发制作的一个名为“wakelocks”的移动设备电源管理功能,该功能用于管

理移动设备的电池性能,但是该功能并没有被加入到Linux内核的主线开放和维护中,因为Linux内核维护者认为Google没有向他们展示这个功能的意图和代码。

2010年2月3日,由于Google在Android内核开发方面和Linux社区方面开发的不同步,Linux内核开发者Greg Kroah-Hartman将Android的驱动程序从Linux内核“状态树”(“staging tree”)上除去。2010年4月,Google宣布将派遣2名开发人员加入Linux内核社区,以便重返Linux内核。2010年9月,Linux 内核开发者Rafael J. Wysocki添加了一个修复程序,使得Android的“wakelocks”可以轻松地与主线Linux内核合并。2011年,Linus Torvalds说:“Android的内核和Linux的内核将最终回归到一起,但可能不会是4-5年。”

而Android作为能与ios系统PK的嵌入式操作系统,其拥有强大的特点则是它吸引人的关键。

当前的Android操作系统具有如下特点:显示布局,数据储存,网络,信息,语言,浏览器,支持Java,流媒体支持,硬件支持,多点触控,蓝牙,多任务处理,语音功能,无线共享功能,截图功能。

Android 系统架构

Android 是Google 开发的基于Linux 平台的开源手机操作系统,它是一个移动终端平台,包括了移动电话工作所需的全部软件,由操作系统、中间件、UI (User

Interface)及应用程序组成。开发人员使用Java 语言,开发运行于Dalvik 虚拟机上的应用程序,其运行效率比一般嵌入式Linux 操作系统上的J2ME 程序高。

Android系统架构自底向上由以下4个层次组成:基于Linux 的内核模块、运行时库与其他库、应用程序框架、应用程序。

(1)基于Linux 的内核模块Android 内核基于Linux 2.6, 提供安全、内存管理、进程管理、网络组、驱动模型等核心服务。同所有Linux 内核一样,Android 内核是介于硬件层和软件组之间的一个抽象层次。

(2)运行时库与各种程序库

运行时库实质是一款Java重新设计的虚拟机Dalvik, 它包含J2SE 所提供的绝大部分功能。每个Android 应用都运行在自己的进程上, Dalvik 虚拟机为它分配自有的实例。Dalvik 使一台设备能运行多个虚拟机程序但消耗较少的资源。在Android 中,编译器将Java 源文件转为class 文件,内置的dx 工具又将class 文件转化为Dex 文件,Dex 文件是在Dalvik 虚拟机上运行程序的标准格式。

各种程序库:包含一套C/C++库,Android的各式组件都可使用。这些功能通过组件间接提供给开发者。这些库包括图形框架、媒体功能库、Webkit 、及SQLite 数据库,等等。

(3 )应用程序框架:提供应用程序开发所需要的各种API。在开发过程中,开发人员通过充分使用应用框架提供的API ,对各种组件、服务进行重用,从而开发出精简、高效的应用程序。主要包括以下几种核心组件:UI 组件:包

括List 、Layout、Textbox、Utton、Check-box 等,用以构建应用程序与用户的交互界面。

内容提供器(Content Provider):实现标准的方法接口,让其他应用保存或读取其提供的数据,例如外部程序通过Content Provider 访问联系人数据。

资源管理器(Resource Manager):管理对非代码的访问,例如本地图像、布局文件、本地化字符串等。

消息管理器(Notification Manager) :让程序将警示信息显示在状态栏上,例如平台接收到短信息、电子邮件、未接电话时在状态栏上的提示。

Activity 管理器(Activity Manager):用来管理应用程序生命周期并提供常用的导航回退功能。

(4)应用程序:Android 预装了一系列由Java 语言

编写成的核心应用程序,包括短信服务、电话、Email客户端、浏览器、Google 地图等。

Android 内核分析

2.1 内核在操作系统中的地位Android 基于Linux 操作系统, 由硬件、系统内核、系统服务和应用程序等四大部分组成。其中,内核(Kernel) 是最核心的部分,其主要作用在于与计算机硬件进行交互, 实现对硬件的编程控制和接口操作,调度访问硬件资源,同时向应用程序提供一个高级的执行环境和对硬件的虚拟接口。主要功能包括:

中断服务程序、进程调度程序、进程地址空间的内存管理、进程间通信。

内核与普通应用程序不同, 其拥有所有硬件设备的访问权限以及启动时即划分的受保护的内存空间。

2.2 Android 内核和标准的Linux 内核一样,Android 内核主要实现内存管理、进程调度、进程间通信等功能。Android 内核是在标准Linux 内核的基础上修改而成。为了适应嵌入式硬件环境和移动应用程序的开

发,Android 对标准Linux 内核进行了一定的修改。为了对比分析Android 内

核,在Ubuntu 操作系统上搭建

了Android 内核的编译开发平台,通过repo ,下载最新的Android 内核代码版本cupcake(其中Linux 内核版本为2.6.27)。从获得的内核源码树的根目录结构看,Android 内核源码与标准Linux 内核并无不同。Android 内核源码树根目录结构如表1 所示。经过与标准Linux 内核源代码进行详细对比,可以发现,Android 内核与标准Linux 内核在文件系统、进程间通信机制、内存管理等方面存在不同。

1.文件系统

不同于桌面系统与服务器, 移动设备大多采用的不是硬盘而是采用Flash 作为存储介质,因此,Android内核中增加了标准Linux 内核中没有采纳的YAFFS2文件系统。YAFFS2 (Yet Another Flash File Sy-stem,2nd edition) 是专用于Flash 的文件系统, 对NAND-Flash 芯片有着良好的支持。YAFFS2 是日志结构的文件系统,提供了损耗平衡和掉电保护,可以有效地避免意外断电对文件系统一致性和完整性的影响。YAFFS2按层次结构设计, 分为文件管理接口、内部实现层和NAND,简化了其本身与系统的接口设计,能更方便地集成到系统当中。经过测试证明, YAFFS2 性能比支持NOR 型闪存的JFFS2 文件系统优秀。

2.进程间通信机制

Android 增加了一种进程间的通信机制IPC Bin-der, 在内核源代码中, 驱动程序文件为coredroid/include/linux/binder.h和

coredroid/drivers/android/binder.c 。Binder 通过守护进程Service Manager 管理系统中的服务,负责进程间的数据交换。各进程通过Binder 访问同一块共

享内存,以达到数据通信的机制。从应用层的角度看, 进程通过访问数据守护进程获取用于数据交换的程序框架接口,调用并通过接口共享数据,而其他进程要访问数据,也只需与程序框架接口进行交互,方便了程序员开发需要交互数据的应用程序。

3.内存管理

在内存管理模块,Android内核采用了一种不用于标准Linux 内核的低内存管理策略。在标准Linux内核当中,使用一种叫做OOM (Out of Memory)的低内存管理策略;当内存不足时,系统检查所有的进程,并对进程进行限制评分, 获得最高分的进程将被关闭(内核进程除外)。Android 系统采用的则是一种叫作LMK(Low Memory Killer )的机制,这种机制将进程按照重要性进行分级、分组。内存不足时,将处于最低级别组的进程关闭。例如,在移动设备当中,UI 界面处于最高级别,所以该进程永远不会被中止,这样,在终端用户看来,系统是稳定运行的。在Andorid内核源码中,LMK的位置是coredroid/drivers/misc/lowme

-morykiller.c。

与此同时,Android 新增加了一种内存共享的处理方式Ashmem (Anonymous Shared Memory,匿名共享内存)。通过Ashmem,进程间可以匿名自由共享具名的内存块,这种共享方式在标准Linux 当中不被支持。

Ashmem 分配和使用情况如下:

fd = ashmem_create_region("my_shm_region", size);

if(fd < 0)

return -1;

data = mmap(NULL, size, PROT_READ | PROT_WRITE,

MAP_SHARED, fd, 0);

if(data == MAP_FAILED)

goto out;

但出于安全原因,其他进程无法访问此名称(my_shm_region)区域。文件描述符指向该共享内存区域,实际上是通过IPC 绑定接口。

在Andorid内核源码中,Ashmem的位置是coredroid/mm/ashmem.c。

4.电源管理

由于Android 主要用于移动设备,电源管理就显得尤为重要,因此,在Android 内核当中,增加了一种新的电源管理策略。目前,Android 采用的是一种较为简单的电源管理策略,通过开关屏幕、开关屏幕背光、开关键盘背光、开关按钮背光和调整屏幕亮度来实现电源管理,并没有实现休眠和待机功能。有三种途径判断调整电源管理策略:RPC 调用、电池状态改变和电源设置。它通过广播Intent 或直接调用API 的方式来与其他模块进行联系。电源管理策略同时还有自动关机机制,当电力低于最低可接受程度时,系统将自动关机。Android 的电源管理模块还会根据用户行为,自动调整屏幕亮度。

5.驱动及其他

相对于标准内核,Android内核还添加了字符输出设备、图像显示设备、键盘输入设备、RTC 设备、USBDevice设备等相关设备驱动,增加了日志(Logger) 系统,使应用程序可以访问日志消息。

经过分析,Android内核由标准Linux内核修改而来,因此继承了Linux内核的各种优点,保留了标准Linux 内核的主体架构。同时,Android 按照移动设备的需求,在文件系统、内存管理、进程间通信机制、电源管理等方面进行了修改,添

加相关的驱动程序和一些必要的新功能,但是与大多数精简的嵌入式Linux操作系统(例如uCLinux) 相比,Android很大程度上保留了标准Linux 的基本架构,因此,Android 系统

应用范围更加广泛,拓展性更强。

参考文献:

《Android内核分析》——陈璟,陈平华,李文亮(广东工业大学计算机学院, 广州510006 )

参考网站:

维基百科——Wikipedia

Android https://www.360docs.net/doc/091647537.html,/wiki/Android

嵌入式系统https://www.360docs.net/doc/091647537.html,/wiki/Embedded_system

嵌入式操作系统https://www.360docs.net/doc/091647537.html,/wiki/Embedded_operating_system

安卓按钮单击事件

第一种:匿名内部类作为事件监听器类 大部分时候,事件处理器都没有什么利用价值(可利用代码通常都被抽象成了业务逻辑方法),因此大部分事件监听器只是临时使用一次,所以使用匿名内部类形式的事件监听器更合适,实际上,这种形式是目前是最广泛的事件监听器形式。上面的程序代码就是匿名内部类来创建事件监听器的!!! 对于使用匿名内部类作为监听器的形式来说,唯一的缺点就是匿名内部类的语法有点不易掌握,如果读者java基础扎实,匿名内部类的语法掌握较好,通常建议使用匿名内部类作为监听器。 第二种:内部类作为监听器 将事件监听器类定义成当前类的内部类。1、使用内部类可以在当前类中复用监听器类,因为监听器类是外部类的内部类,2、所以可以自由访问外部类的所有界面组件。这也是内部类的两个优势。上面代码就是内部类的形式!! 第三种:Activity本身作为事件监听器

这种形式使用activity本身作为监听器类,可以直接在activity类中定义事件处理器方法,这种形式非常简洁。但这种做法有两个缺点:(1)这种形式可能造成程序结构混乱。Activity 的主要职责应该是完成界面初始化;但此时还需包含事件处理器方法,从而引起混乱。(2)如果activity界面类需要实现监听器接口,让人感觉比较怪异。 上面的程序让Activity类实现了OnClickListener事件监听接口,从而可以在该Activity类中直接定义事件处理器方法:onClick(view v),当为某个组件添加该事件监听器对象时,直接使用this作为事件监听器对象即可。 第四种:外部类作为监听器 ButtonTest类 当用户单击button按钮时,程序将会触发MyButtonListener监听器 外部MyButtonListener类

多线程技术在Android手机开发中的运用

龙源期刊网 https://www.360docs.net/doc/091647537.html, 多线程技术在Android手机开发中的运用 作者:谢光刘志惠 来源:《电子技术与软件工程》2017年第24期 摘要 在Android手机开发过程中,一般情况下程序是通过一个线程进行工作的,因此当一个任务耗费过长时间,就会造成主程序无响应并对程序运行的顺畅程度造成影响的问题。基于此,本文通过对多线程组成进行介绍,在Android中多线程技术模块与具体实现方式两方面对多线程技术在安卓手机开发中的运用进行探讨,以为关注此问题的人们提供参考。 【关键词】多线程技术 Android手机进程线程 安卓系统自2007年由谷歌公司开发后,得到了巨大的发展。截至2017年3月,其市场占有率已经达到86.4%,如三星、索尼爱立信、小米、OPPO等手机生产厂商都在使用安卓系统。该系统开源免费、执行效率高,其多线程技术开发应用的研究,对提高手机硬件的利用效率,给用户带来良好试用体验,提高手机厂商的企业竞争力有重要作用。 1 多线程介绍 1.1 进程和线程介绍 一般来说,在一定时间内实现多个程序任务执行的程序都会用到“进程”这一概念。进程,即:一个拥有自身独立的内存空间、系统资源的执行程序,其特征为实现内部状态和内部数据的相互独立。线程与进程相似,线程也是一段有一定功能代码组成的流控制。线程的特征为:同类的多个线程可以对内存空间与系统资源进行共享。因此在对资源的占用方面,可以相互切换的线程比进程小很多。一个进程中可以包含诸多线程,此外,主线程对子线程有控制作用,可对子线程启动、停止等动作进行管理。而本文要重点介绍的多线程,指的是单个程序中一起运行的不同线程,不同线程可以执行不一样的任务。其特征是一个程序的多行语句可在某时间同时执行。 1.2 多线程程序消息处理原理 当人们启动一个程序时,系统将建立main线程,主要管理如:activity等应用组件,并对UI相关的事件进行处理,比如用户想要按键或使用屏幕进行绘图,线程会对以上事件进行处理,这是UI线程。安卓的线程模型,所有组件均在main线程中,因此用户在程序中下达下载文件、使用数据库等具有高耗时特征的操作时,就会造成UI线程的运行不畅,并出现程序无法响应的问题。这就要求程序员使用多线程技术,在进行安卓多线程编写时,技术人员应注意以下两点:

AndroidUI基本控件与事件处理

《Android基础应用》 AndroidUI基本控件与事件处理 ?本章任务 ?使用Android开发本息计算器程序 ?使用Android开发华氏-摄氏温度转换器 ?本章目标 ?熟悉掌握本章基本控件的使用 ?熟练掌握Android常用事件 1.Android基本控件 Android应用开发的一项内容就是用户界面的开发,Android提供了大量功能丰富的UI组件,大部分放在android.widget包及其子包android.view包及其子包 在Android当中View类是最基本的一个UI类,基本上所有的高级UI组件都是继承View类而实现的。如Button(按钮),list(列表),EditText(编辑框),RadioButton(多选按钮),Checkbox(选择框)等都是View类 在Android中,我们可以在Xml文件中使用UI组件也可以在java文件中创建UI组件官方建议采用xml方式,这样的话能够实现界面和代码分离 1.1TextView和EditText TextView是一种用于显示字符串的控件 EditText则是用来输入和编辑字符串的控件,EditText是一个具有编辑功能的TextView

TextView和EditText基本属性 ●android:id设置ID,通过编码可以找到这个组件 ●android:layout_width设置在屏幕上的宽度 ●android:layout_height设置在屏幕上的高度 fill_parent强制性地使构件扩展,以填充布局单元内尽可能多的空间 wrap_content强制性地使视图扩展以显示全部内容 ●android:text设置显示的文本信息 ●android:textColor设置文本颜色 ●android:textSize设置文本尺寸

Android下使用Http协议实现多线程断点续传下载

0.使用多线程下载会提升文件下载的速度,那么多线程下载文件的过程是: (1)首先获得下载文件的长度,然后设置本地文件的长度 HttpURLConnection.getContentLength(); RandomAccessFile file = new RandomAccessFile("QQWubiSetup.exe","rwd"); file.setLength(filesize);//设置本地文件的长度 (2)根据文件长度和线程数计算每条线程下载的数据长度和下载位置。 如:文件的长度为6M,线程数为3,那么,每条线程下载的数据长度为2M,每条线程开始下载的位置如下图所示。 例如10M大小,使用3个线程来下载, 线程下载的数据长度 (10%3 == 0 ? 10/3:10/3+1) ,第1,2个线程下载长度是4M,第三个线程下载长度为2M 下载开始位置:线程id*每条线程下载的数据长度 = ? 下载结束位置:(线程id+1)*每条线程下载的数据长度-1=? (3)使用Http的Range头字段指定每条线程从文件的什么位置开始下载,下载到什么位置为止, 如:指定从文件的2M位置开始下载,下载到位置(4M-1byte)为止 代码如下:HttpURLConnection.setRequestProperty("Range", "bytes=2097152-4194303"); (4)保存文件,使用RandomAccessFile类指定每条线程从本地文件的什么位置开始写入数据。 RandomAccessFile threadfile = new RandomAccessFile("QQWubiSetup.exe ","rwd"); threadfile.seek(2097152);//从文件的什么位置开始写入数据

AndroidUI之线程与进度对话框

//创建一个进度条对话框 final ProgressDialog progressdialog=new ProgressDialog(MainActivity.this); progressdialog.setTitle("测试"); progressdialog.setMessage("正在对话框与线程"); progressdialog.show();//显示对话框 //创建线程 new Thread(){ public void run(){ try{ sleep(1000);//时间间隔1秒 }catch(Exception e){ e.printStackTrace(); }finally{ progressdialog.dismiss();//卸载对话框对象 } } }.start(); 菜单的创建于事件监听 public boolean onCreateOptionsMenu(Menu menu) { int a=Menu.NONE;//声明菜单顺序ID int b=Menu.NONE+1; int c=Menu.NONE+2; int d=Menu.NONE+3; menu.add(0, 1, a, "a");//第一个参数:分组,第二个参数:菜单的Id, 第三个参数:菜单的顺序,第四个参数:显示菜单的文字 menu.add(1, 2, b, "b"); menu.add(2, 3, b, "c"); menu.add(2, 4, d, "d"); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case 1: Toast.makeText(MainActivity.this,"a", 1).show(); break; case 2: Toast.makeText(MainActivity.this,"b", 1).show(); break;

Android OnTouchListener触屏事件接口

Android OnTouchListener触屏事件接口 OnTouchListener接口是用来处理手机屏幕事件的监听接口,当为View的范围内触摸按下、抬起或滑动等动作时都会触发该事件。该接口中的监听方法签名如下。 Java代码: public boolean onT ouch(View v, MotionEvent event) 参数v:参数v同样为事件源对象。 参数event:参数event为事件封装类的对象,其中封装了触发事件的详细信息,同样包括事件的类型、触发时间等信息。 节中介绍了一个在屏幕中拖动矩形移动的案例,本节将继续采用该案例的思路,通过监听接口的方式实现在屏幕上拖动按钮移动的案例。开发步骤如下。 创建一个名为Sample的Android项目。 准备字符串资源,打开strings.xml文件,用下列代码替换原有代码。 Java代码: Hello World, Sample Sample 位置 说明:与前面介绍的案例相同,对程序中用到的字符串资源进行定义。 开发布局文件。打开res/layout目录下的main.xml,用下列代码替换其原有代码。

Java代码:

相关文档
最新文档