当前位置:  编程技术>移动开发
本页文章导读:
    ▪一个反映Java接口及工厂模式优点的例子        一个体现Java接口及工厂模式优点的例子 一个体现Java接口及工厂模式优点的例子 随着模式概念的普及,了解模式和使用模式的程序员越来越多,很多人在学习模式的时候,都会有这样一.........
    ▪ 塞班失守        塞班陷落      “每当想起诺基亚和它的智能手机操作系统塞班(Symbian)时,总会浮现出一个人在粘稠没膝的糖浆中拼命奔跑的画面:满身汗水,跌跌撞撞,却自豪地跟人说感觉很好。”这是.........
    ▪ 替ListView增加Header (可动态修改其中的内容)       为ListView增加Header (可动态修改其中的内容) 为ListView增加Header (可动态修改其中的内容) 1.新建一个Layout:   demo_list_item_header_view.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout android:layo.........

[1]一个反映Java接口及工厂模式优点的例子
    来源: 互联网  发布时间: 2014-02-18
一个体现Java接口及工厂模式优点的例子
一个体现Java接口及工厂模式优点的例子
随着模式概念的普及,了解模式和使用模式的程序员越来越多,很多人在学习模式的时候,都会有这样一种疑惑:“有必要搞得这么复杂吗?”。的确,因为教程的例子过于简单化(这样方便读者学习),或者是作者选例子的时候并没有很好体现所讲模式的优点,很多情况下如果仅就其例子的问题来说,用模式是太复杂了。因此才导致这样的误解:“模式就是把简单的问题复杂化吗?”。当然不是,随着你开发实践的不断丰富,你终会发现模式强大威力,而且模式也并非贵族化的编程方式,它就是一些经过提炼了的解决问题的方法技巧。

通过学习模式,程序员开始告别过去准直线式的代码方式,模式开扩了我们的视野,强化了我们面向对象编程的思维方式。然而现在又出现了另一个普遍的问题,盲目应用模式。模式是问题的,先有问题才有模式,模式是依附于所要解决的问题的而生的。必须了解模式在很多情况下是以提高代码的复杂度为代价来增强灵活性、可复用性。如果在自已的代码中使用某一模式仅只提高了代码的复杂度,而其它方面收效甚微,或者某部份代码根本就不存在灵活性及高复用性的需求,那么我们就没有必要为使用模式而放弃更直观简单的代码写法。

一流的高手90%精力关注问题的,因为找到了好的,再写起代码会很轻松代码也简洁流畅,看这样的代码是一种享受和提高;二流的熟手90%精力关注代码实现,因为问题的并非最佳,实现的代码也会比较复杂;三流菜鸟记流水帐,90%精力在敲键盘,常常做了大半才发现行不通,回过头来再用90%的时间敲键盘,根本不会用到任何模式,写出来的代码的只有他自已才能看懂。做出来的软件也是支离破碎,做一丁点改动都要大费周折,而且你还不知道改动后会产生什么问题,大有住危房里的感觉。

在这里还是举一个滥用模式的例子吧。我曾参与过一个大集团公司OA系统的第二期开发,开发沿用原有代码架构并增加新的功能模块。文档很少我读原代码时就被它程序里的代码转来转去搞得头大如斗,最后读懂了:原代码架构总体采用工厂模式,而且是最复杂的抽象工厂模式。它把所有模块类都通过工厂生成还工厂套工厂,并且每一个模块类都有一个接口,每个接口也只有一个模块现实类,因为涉及权限控制还用了代理(proxy)模式。 读懂代码后我开始嵌入代码,发现每新增一个类,都要到六个Java文件中去增加相应代码,而在类中每增加一个方法,也要到它的接口等四个Java文件中去增加相应代码。天呀!!!记得当时我的小姆指常会不听使唤,就是因为频繁的使用Ctrl+C 、Ctrl+V,小姆指按着Ctrl键给累的。整个项目组苦不堪言,真烦透了。项目结束后我回顾发现:代理模式用得还对(现在针对权限这类横向控制有AOP编程这种新的解决办法了)但工厂模式在这里根本就是画蛇添足,不仅没有解决什么问题,反而增加代码复杂度和耦合性,降低了开发效率连维护难度都提高了。而且那种每个类简单的加一个接口的方式,更是没有道理,这让我很想说周星驰说过的一句话:“球~~~不是这么踢~~~~的,接口~~~不是这么用~~~的”。言归正传,我们先来看这样一个常见问题:某系统需要支持多种类型的数据库。用过Oracle、MSSQL等数据库的人都知道,它们的SQL编写方式都各有些不同。比如说Oracle的唯一标识自动+1字段用的是序列,MSSQL改一下字段属性就成了,还有各种各自特有的SQL用法。为了支持多数据库,难道我们要开发多套系统?当然NO。请看下面的。

即然数据库存在多种,我们可以将系统中所有对数据库的操作抽象出来,写成一个个方法组合到一个类中,有几种数据库我们就写几个这样的类。具体设计类图如下:




简要说明:
OracleDataOperate、SqlserverDataOperate、MysqlDataOperate,分别代表Oracle、Sqlserver、Mysql这三种数据库的操作类。继承自AbstractDataOperate
AbstractDataOperate是一个抽象类,包含了那些不同种类数据库都是一样代码的操作方法。继承自DataOperate
DataOperate是上面说的数据操作类的统一接口,只有两个方法:取得一条记录、插入一条记录。
DataOperateFactory是一个工厂方法,统一用它的方法来得到数据库操作类的实例。
SampleClass是我们系统的某个功能模块的类。
People是一个实体类,代表一条记录。三个字段 oid唯一标识符、name姓名、date生日。

详细说明:
1、所有系统功能模块类只认DataOperat这个接口还不必管具体的实现类是OracleDataOperate还SqlserverDataOperate。DataOperate源代码如下:
public interface DataOperate {
//根据记录的唯一标识取出一条记录
People getPeople(String oid);
//插入一条记录
boolean insertPeople(People people);
}

2、AbstractDataOperate、OracleDataOperate、SqlserverDataOperate、MysqlDataOperate都是继承DataOperate接口的,没什么好说的,省略。

3、DataOperateFactory。我们看看工厂方法怎么写的。
public class DataOperateFactory {
public static final int ORACLE = 0; //定义三个表示数据库类型的常量
public static final int MYSQL = 1;
public static final int SQLSERVER = 2;

private static DataOperate db;
private static int dataType = MYSQL;
/**
* 根据数据库类型(dataType)取得一个数据库操作类的实例,
* 这里对DataOperate使用了单例模式,因为OracelDataOperate等都是无状态的工具类,
* 所以整个系统只保留一个实例就行了。
*
* @return 返回的是接口,客户端不必关心具体是用那个实现类
*/
public static DataOperate getInstance() {
if (db == null) {
if (dataType == ORACLE) //根据dateType返回相应的实现类
return new OracelDataOperate();
if (dataType == MYSQL)
return new MysqlDataOperate();
if (dataType == SQLSERVER)
return new SqlserverDataOperate();
}
return db;
}
}

4、接下来就看看使用端是如何调用工厂方法和使用数据操作类的。
/**
* 系统某个功能类
*/
public class SampleClass {
private DataOperate db; //声明一个数据库操作类,注意这里用的是接口噢
/**某方法*/
public void sampleMethod() {
db = DataOperateFactory.getInstance();//得到单一实例
People p = db.getPeople("123"); //取得一条记录
db.insertPeople(p);//再插回去
}
}

  我们发现SampleClass中根本没有出现OracelDataOperate、MysqlDataOperate等的影子,这就是接口的威力。客户端不必针对OracelDataOperate等写不同的代码,它只关心DataOperate即可,具体要取那个类的逻辑就由DataOperateFactory负责了。

总结:
从例子中我们可以看到什么是面向接口的编程方式。SampleClass使用数据操作类可以不必关心具体是那个类,只要是符合接口的都行
要实例?只须调用DataOperateFactory.getInstance()即可,其它的交于DataOperateFactory这个工厂来做吧,使用端什么都不用关心。
我们要支持新的数据库类型,只须要象OracelDataOperate那样,再写一个继承AbstractDataOperate的类即可,比如SysbaseDataOperate。然后到DataOperateFactory中加入相应代码即可。
如果我们想要可配置性更高,可以用private static int dataType = MYSQL;中的值设置到一个文本文件中。
  对于开发支持多种数据库的系统,强烈建议使用hibernate,我现在做的系统就是用hibernate的,开发时用Mysql,到要给客户时将数据库换了DB2,程序不用做任何改动,真正的无逢移植。不过这样,本文所提到的方法就没什么用了.
<!-- JavaScript专用链代码 -->

    
[2] 塞班失守
    来源: 互联网  发布时间: 2014-02-18
塞班陷落

     “每当想起诺基亚和它的智能手机操作系统塞班(Symbian)时,总会浮现出一个人在粘稠没膝的糖浆中拼命奔跑的画面:满身汗水,跌跌撞撞,却自豪地跟人说感觉很好。”这是曾任苹果公司前营销总裁的Michael Mace在自己博客中的一段话,常被媒体引述来形容2008年之后的塞班窘境。

  从2007年开始,苹果和谷歌相继介入手机操作系统领域,染指智能手机,而此前Symbian的主要对手是微软。

  不想上微软的船

  “如果塞班伸出双手拥抱与微软为敌的Java语言,这对我们极端不利,这样一来,这些家伙就等于是跟我们宣战,我们就应该用最极端的手段来打击他们。”

  1998 年6 月,比尔·盖茨给微软移动设备部门的主管发了一封火药味十足的电子邮件。

  让盖茨大动肝火的是数天前由爱立信、摩托罗拉、诺基亚和Psion 共同持股成立了一家公司:塞班,它的产品就是一种和微软对着干的移动操作系统Symbian。

  当年,微软已横扫PC桌面操作系统,开始布局手机市场。有鉴于在PC领域硬件厂商苦力地为微软打工的“悲惨”遭遇,爱立信、摩托罗拉、诺基亚决心及早动手,开发自己的操作系统,免得沦落个PC厂商的境况。

  那时,诺基亚在手机市场中的地位如日中天,盖茨多次向诺基亚的CEO欧利拉(Jorma Ollila)示好,希望能结成秦晋之盟。盖茨的副手鲍尔默到芬兰促销新Office XP时,在电视上直截了当地说想跟诺基亚建立更深一层的合作关系。

  但欧利拉始终不为所动,表示诺基亚立志要成为一家“软件公司”,为此给自己的软件实验室投下30亿美元,塞班是诺基亚战略布局中的重要一环。

  1999年3月,成立刚刚9个月的塞班公司推出Symbian 5.0操作系统,它集成了网络、无线文字、网页浏览、电子邮件等功能,支持Java,并能够运行小型第三方软件。当年塞班被美国的《红鲱鱼》杂志评选为“综合评定最佳”和“最具长期潜力”的公司。

  2000年,全球第一款基于Symbian操作系统的爱立信R380手机正式向公众出售,这款手机被称为智能手机的鼻祖。同年,日本的索尼和三洋获得Symbian操作系统的许可证,成为塞班联盟成员之一。诺基亚的拒绝和塞班的迅猛发展,让微软加快了面向智能手机的Stinger系统的研发。

  Stinger一词最常用的含义是美军的“毒刺”导弹,而微软采用这一单词来命名其提出的手机智能软件平台,明显是要“刺破”Symbian的防线。

  微软很快完成了初步的产业布局,德州仪器、韩国三星、台湾宏达都答应为微软设计硬件,英国沃达丰、澳洲Telstra、德国T-Mobile、美国AT&T Wireless、Cingular Wirless等无线通信运营商也开始测试Stinger原型机。微软为了积极参与英国Sendo公司生产全球第一批Stinger手机的事情,甚至在2001年7月花了1200万美元买下Sendo公司8%的股权。

  摩托罗拉中途“背叛”

  “在接下来的几年,我们愈来愈令微软讨厌,但我们必须看起来无缝可击,我们计划要让塞班成为更多智能手机的第一选择。”曾是塞班创建期员工的保罗·库克顿这样回忆公司初期的发展势头。

  2002年,采用Symbian系统的智能手机发布数量渐渐多了起来。日本电信运营商NTT DoCoMo发布富士通第一款基于Symbian的3G手机。同年,索尼爱立信获得Symbian许可证,并发布产品,索尼爱立信还成为塞班的股东。与此同时,西门子也成为塞班股东。

  塞班的良好发展势头让微软很着急,微软加大了对自己的手机操作系统的研发,并开始了合纵连横之旅。2003年8月,在摩托罗拉与塞班合同到期之际,摩托罗拉以7400万欧元的价格将手中塞班公司的股票出售给了Psion和诺基亚,只保留Symbian的使用权。此时摩托罗拉与Symbian彻底分道扬镳似乎已成定局。同年摩托罗拉加入了微软系统阵营。

  此举让塞班阵营产生了挫败感。不过,摩托罗拉的离去,主因是摩托罗拉与诺基亚在手机市场的角逐引发,摩托罗拉可能是抱着“敌人的敌人是朋友”的心态。当时,摩托罗拉在手机市场的地位与诺基亚不可同日而语,诺基亚处于一种霸主地位。

  从整体而言,摩托罗拉的“背叛”无碍塞班大局。以中国市场为例,在2003年的智能手机系统平台市场份额中,Symbian占有市场份额的66.6%,处于绝对领先,微软操作系统仅占有22.5%。

  盖茨主导下的微软继续锲而不舍地尾随塞班,等待着弯道超车的机会。但塞班在诺基亚的扶持下一骑绝尘。2004年2月9日,诺基亚收购了宝意昂公司持有的价值大约1.357亿英镑的塞班公司31.1%的股权,诺基亚在塞班公司的股权达到63.3%。此时Symbian的命运已由诺基亚来掌控了。

  进入2005年,微软的手机操作系统已演化成Windows Mobile 5.0,但仍无法撼动诺基亚翼下的Symbian。这年5月,比尔·盖茨接受媒体采访,当记者哪壶不开提哪壶地提到“并没有多少一线手机厂商与你们合作”时,盖茨辩解说,微软与包括三星在内的主要手机厂商都有合作关系,但盖茨也承认:“目前诺基亚仍然是手机市场的领导者,不过我们一直在进步。虽然我们所占的市场份额较小,但是我们和其他公司一样有着重要的地位。”

  2006年,采用Symbian操作系统的智能手机出货量达到一亿部。诺基亚和塞班经过8年的奋斗,终于靠近了一个转折点。从当时的市场态势来看,这应该是个从胜利走向胜利的转折点。然而,随后的历史发生了逆转。因为,一个扬言改写手机历史的人,将在2007年颠覆智能手机的游戏规则,这就是乔布斯和他的iPhone。

  乔布斯重写智能手机历史

  “乔布斯先得把品牌知名度(mind share)转化为市场份额(market share)。”2007 年 1 月 9 日,苹果的 iPhone 发布,诺基亚携Symbian之威,对苹果此举不屑一顾。

  乔布斯不为所动,只是给自己的员工打气:“我们的产品又一次改变了世界”。

  诺基亚有Symbian,2007年的苹果 iPhone有什么呢?一个名称遮遮掩掩的手机操作系统,3年以后才随着iPhone 4的发布正式确立它的名字:iOS。

  为什么苹果在2007年对自己智能手机操作系统采取了一种模糊乃至有些暧昧的姿态呢?这是因为苹果的智能手机操作系统脱胎于麦金塔电脑的Mac OS X,它们有共同的底层技术和架构。

  因此,iOS浸透着乔布斯近20年的心血,以乔布斯风格,按说应该大力弘扬才是。可是2007年以前,由于智能手机的硬件及网络技术设施所限,大家普遍认为,从电脑脱胎来的操作系统不太适合手机的简约环境。尤其2007年以前,微软手机操作系统的平平表现加深了市场对这种观念的认识。乔布斯显然不想让公众将注意力放在苹果的手机操作系统上,他希望公众关注iPhone的整体体验。

  乔布斯在iPhone第一代产品发布后,在公开场合仍对诺基亚和Symbian保持着一种比较客气的态度,他曾表示:“诺基亚Symbian系统的签名证书模式,是非常值得借鉴的。”

  诺基亚和塞班在2007年显然没有认识到乔布斯iPhone三年后会给它带来的巨大冲击。这还不算,乔布斯还带出了一个更加强悍的“学生”:谷歌的Android。

  诺基亚很快感受到了这种竞争压力。2008年5月,时任诺基亚CEO的康培凯警告说:“传统上,苹果、Google、微软等公司不是我们的竞争对手,但现在,我们必须要应对它们带来的挑战。”

  2008年6月24日,诺基亚全资收购塞班公司,使之成为诺基亚旗下公司。

  “诺基亚正迅速沦为智能手机市场的落败者。虽然诺基亚曾领跑市场,但已在大幅走下坡路……被苹果应用商店和Android Marketplace大举超越。如果诺基亚想要追赶竞争对手,就应立即推出新产品、软件和应用。”YouGov科技与电信组研究负责人拉塞尔·费尔德曼(*Russell Feldman)曾这样说。

<!--page-->

  随着苹果iOS、谷歌Android的精彩亮相,Symbian的不足逐渐显露无遗。正所谓“不怕不识货,就怕货比货”。有分析指出,由于Symbian在编写之初,其主要功能着重于打电话等通信功能,所以Symbian手机的通话质量很棒,效果也好。但Symbian对触摸屏、多媒体、新操作界面的支持都不好;在同PC以及互联网的交互及扩展性方面,其先天不足更加明显;各个版本间的兼容性也不好,用户体验差。

  曾有人打了个比喻,如果把今天性能和网络支撑能力强大的手机比做成年人,那1998年前后的手机就是儿童。Symbian就是一件童装,而当年微软推出的手机智能操作系统是从PC领域演化而来的西装,对儿童来说,当然童装最合体。

  而10年后,手机的硬件技术性能得到了突飞猛进的发展,制约软件的许多瓶颈已突破,手机对用户来说,不再局限于通话和发短信,多媒体功能和娱乐功能变得至关重要了。在这种局面下,有着PC及互联网背景的IT厂商推出的操作系统显然远胜于通信厂商。Android手机相比Symbian手机更像一台具有通信功能的微型化电脑,让用户获得了Symbian系统所不能比拟的应用体验。很多开发商也不愿意为塞班系统开发应用,Evernote首席执行官菲利普·里宾明确表示:“为Symbian开发应用一直非常困难,而谷歌、苹果与开发者建立了良好的合作关系,将Symbian甩在身后。”

  苹果、谷歌的胜出是水到渠成的事,即使微软,这个Symbian早年的“手下败将”也重新昂然站立在诺基亚面前。

  那Symbian为什么没有及时成长呢?

  成也萧何,败也萧何。诺基亚在扶持、把持乃至控制Symbian的过程中,逐渐将自己的价值观“输送”给了塞班。《商业周刊》曾说:“诺基亚只是关注市场份额,而非生产具有创新意识可以吸引用户的产品。”“诺基亚一直坚持手机的最大功能是通话。它没有注意到手机还可以收发邮件、寻找餐厅以及更新微博。”

  诺基亚前高级经理Juhani Risku曾提到诺基亚官僚阻碍创新和执行力的弊病。他举了这样一个例子,一位负责Symbian用户体验的人进来说,旧流程不管用了,所有人问他新流程是什么,他没说。于是200多人无所事事地度过了半年。

  2010年7月,诺基亚全球执行副总裁安斯·范约奇在《反击从现在开始》的博文中称,诺基亚将用Symbian和MeeGo展开反击,“不可否认,我们作为挑战者,将有一场硬仗要打,”他说,“我和整个诺基亚团队已经做好了准备!”

  但Symbian阵营在分崩离析,摩托罗拉和Android结盟之后,全力推广智能手机的战略让摩托罗拉亏损的手机部门扭亏为盈。受摩托罗拉 “咸鱼翻生”的刺激,Symbian阵营原有的手机厂商纷纷离去,投靠Android阵营。由于诺基亚对Symbian全面把持,对在终端领域存在竞争关系的手机制造商而言,采用第三方的操作系统显然要比采用竞争对手的操作系统更安心。

  有人建议诺基亚也转向Android,时任诺基亚执行副总裁安西·范耶基(Anssi Vanjoki)在接受采访时表示:“诺基亚启用Android系统很容易,但也很愚蠢,因为这样诺基亚未来的命运就会掌握在谷歌手里。”他认为Android操作系统只是临时,他后来还嘲讽采用Android系统的三星和HTC等厂商好比是“芬兰小孩冬天里在裤裆尿尿取暖”,称采用Android系统迟早会伤害这些厂商的品牌。但这些厂商不为所动,只有诺基亚独撑Symbian大旗。

  2010年9月,诺基亚宣布,前微软高管史蒂芬·艾洛普(Stephen Elop)取代了康培凯成为诺基亚新CEO。诺基亚的投资者和董事会希望他能扭转前任忽略手机与计算机、社交网络融合的趋势。

  离开诺基亚的康培凯仍是诺基亚的忠实用户,芬兰的许多企业高管都开始使用苹果iPhone,但康培凯说:“我想,我永远不会买iPhone。”

  “如果一台压路机开过来了,你只能快速地让开”。1998年,在建立塞班公司之前,宝意昂创始人DavidPotter的观点是远离微软。

  2011年2月11日,诺基亚宣布与微软达成广泛战略合作关系,并将Windows Phone作为其主要的智能手机操作系统。诺基亚CEO艾洛普说:“诺基亚和微软将齐心协力,建立一个无与伦比、覆盖极广的全球手机生态系统。”诺基亚在公告中称,微软搜索引擎必应将为诺基亚全线设备提供搜索服务,而诺基亚地图(Nokia Maps)将成为微软地图服务的核心部分之一。此外,诺基亚的内容和应用商店Ovi将被整合到微软在线商店Marketplace中。发布会上,艾洛普引用丘吉尔的话来打气:“乐观主义者在一切情况下总能看到机遇。”而谷歌工程副总裁维克·冈多特拉则毫不客气地讥讽:“两只火鸡变不成一只鹰。”

  曾是塞班公司创建期员工的保罗·库克顿伤心地表示:“看到今天芬兰人(指诺基亚公司)把Symbian扔进垃圾箱,我是如此伤心,当初他们可是作出了多少承诺啊!”

  库克接着表示:“虽然诺基亚CEO从自己‘着火的平台’上跳开,却没有更好的选择,诺基亚还是返回迎向压路机。他们在一起描述、举杯畅想,不过,一旦再着火,诺基亚将无路可逃,微软还是那个微软。” “我怀疑诺基亚是从着火的平台跳入了火海,但愿他们有足够的时间将火扑灭。”


    
[3] 替ListView增加Header (可动态修改其中的内容)
    来源: 互联网  发布时间: 2014-02-18
为ListView增加Header (可动态修改其中的内容)

为ListView增加Header (可动态修改其中的内容)

1.新建一个Layout:
   demo_list_item_header_view.xml

<?xml version="1.0" encoding="utf-8"?>  
<LinearLayout
    android:layout_height="wrap_content"
    android:layout_width="wrap_content"
    xmlns:android="http://schemas.android.com/apk/res/android">  
    
    <TextView
        android:layout_height="30sp"
        android:layout_width="wrap_content"
        android:textSize="20sp" android:id="@+id/headerTextView"
        android:text="TestListViewHeader" />  

</LinearLayout>  

 

2.然后新建一个类,继承自LinearLayout用来显示上面的Layout:
   DemoListHeaderView.java

package com.zhang.test.view;   
  
import com.zhang.test.R;   
  
import android.content.Context;   
import android.util.AttributeSet;   
import android.view.LayoutInflater;   
import android.view.View;   
import android.widget.LinearLayout;   
import android.widget.TextView; 

public class DemoListHeaderView extends LinearLayout {   
  
    private static final String TAG = "DemoListHeaderView";   
    private Context context;   
    private TextView textView;

    public DemoListHeaderView(Context context) {   
        super(context);   
        
        this.context = context;   
        View view = LayoutInflater.from(this.context).inflate(R.layout.demo_list_item_header_view, null); 
        //以下两句的顺序不能调换,要先addView,然后才能通过findViewById找到该TextView
        addView(view);   
        textView = (TextView) view.findViewById(R.id.headerTextView);   
    }

    public void setTextView(String text) {   
        textView.setText(text);   
    }   
}  
 

 

 

 

3.之后在ListView设置setAdapter之前,一定要在setAdapter之前
   加上代码:

DemoListHeaderView headerView = new DemoListHeaderView(context);   
headerView.setTextView("Header : ");   
listView.addHeaderView(headerView);

 


    
最新技术文章:
▪Android开发之登录验证实例教程
▪Android开发之注册登录方法示例
▪Android获取手机SIM卡运营商信息的方法
▪Android实现将已发送的短信写入短信数据库的...
▪Android发送短信功能代码
▪Android根据电话号码获得联系人头像实例代码
▪Android中GPS定位的用法实例
▪Android实现退出时关闭所有Activity的方法
▪Android实现文件的分割和组装
▪Android录音应用实例教程
▪Android双击返回键退出程序的实现方法
▪Android实现侦听电池状态显示、电量及充电动...
▪Android获取当前已连接的wifi信号强度的方法
▪Android实现动态显示或隐藏密码输入框的内容
▪根据USER-AGENT判断手机类型并跳转到相应的app...
▪Android Touch事件分发过程详解
▪Android中实现为TextView添加多个可点击的文本
▪Android程序设计之AIDL实例详解
▪Android显式启动与隐式启动Activity的区别介绍
▪Android按钮单击事件的四种常用写法总结
▪Android消息处理机制Looper和Handler详解
技术文章 iis7站长之家
▪Android实用的代码片段 常用代码总结
▪Android实现弹出键盘的方法
▪Android中通过view方式获取当前Activity的屏幕截...
▪Android提高之自定义Menu(TabMenu)实现方法
▪Android提高之多方向抽屉实现方法
▪Android提高之MediaPlayer播放网络音频的实现方法...
▪Android提高之MediaPlayer播放网络视频的实现方法...
▪Android提高之手游转电视游戏的模拟操控
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3