04 2011 档案
Developer分析Android新平台Honeycomb的优缺点
摘要:数周前,开发者曾预览了下个Android平台——Honeycomb(游戏邦注:即Android 3.0)。1个月后,Honeycomb SDK最终版本发布,随后首款Android 3.0设备摩托罗拉Xoom平板电脑面世。Developer.com研究了SDK、新工具和新设备,并对该平台的更新和改变发表看法,以下是游戏邦编译的相关内容。Developer.com在本文中同时顾及供用户和开发者使用的功能,但还是以开发者的角度来分析探讨。Android 3.0的特色和API让人感到兴奋Android 3.0包含了许多新特色和API,对有些内容我们感到特别兴奋和激动,因为他们的加入再次拓宽了可运行于平
阅读全文
4. Factory Method工厂方法模式--创建型
摘要:定义一个用于创建对象的接口,让子类决定实例化哪一个类,Factory Method使类的实例化延迟到其子类。工厂方法模式的解决思路很有意思吧?那就是不解决,采取无为而治的方式。
阅读全文
3. Singleton单例模式--创建型
摘要:保证一个类仅有一个实例,并提供一个访问它的全局访问点。(钥匙只有我有,来找我啊)要想控制一个类只被创建一个实例,那么首要的问题就是要把创建实例的权限收回来,让类自身来负责自己类实例的创建工作,然后由这个类来提供外部可以访问这个类实例的方法,这就是单例模式的实现方式。在Java中,单例模式的实现分为两种,一种称为懒汉式,一种称为饿汉式。懒汉式与饿汉式的区别主要在创建实例对象的时间选择,(另外在懒汉用到synchronized进行getInstance(),饿汉没有)懒汉在创建的时候并不着急,会一直等到要使用对象实例的时候才创建,饿汉就比较饥渴了,一上来就会创建
阅读全文
2. Adapter适配器模式--结构型
摘要:将一个类的接口转换成客户希望的另外一个接口。适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。换句话说,就是负责把不兼容的接口转换成客户端期望的样子。
阅读全文
1. Facade外观模式--结构型
摘要:待续。为子系统中的一组接口提供一个一致的界面,Facade模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。外观模式的本质: 封装交互,简化使用。
阅读全文
【转】深入剖析Android消息机制
摘要:在Android中,线程内部或者线程之间进行信息交互时经常会使用消息,这些基础的东西如果我们熟悉其内部的原理,将会使我们容易、更好地架构系统,避免一些低级的错误。在学习Android中消息机制之前,我们先了解与消息有关的几个类:1.Message消息对象,顾名思义就是记录消息信息的类。这个类有几个比较重要的字段:a.arg1和arg2:我们可以使用两个字段用来存放我们需要传递的整型值,在Service中,我们可以用来存放Service的ID。b.obj:该字段是Object类型,我们可以让该字段传递某个多项到消息的接受者中。c.what:这个字段可以说是消息的标志,在消息处理中,我们可以根据这
阅读全文
MatrixCursor
摘要:ContentProvider对外共享数据的时候的query()方法是需要一个cursor的。但是当ContentProvider不是从数据库中去的数据,而又需要返回cursor的时候就需要MatrixCursor。ContentProvider对外共享数据的时候的query()方法是需要一个cursor的,但是如果没有数据库,而项目又需要从ContentProvider读取数据的时候怎么办?更糟糕的是其他方法操作也都是需要cursor的。此时就需要MatrixCursor了。相当有趣,它相当于为你模拟了一个表。@Overridepublic Cursor query(Uri uri, Str
阅读全文
【转】Android学习笔记——hashmap、arraylist(vector)与listview的应用
摘要:有很多时候,我们只需要处理小量的数据,这个时候我们就不必要用SQLite啦,我们可以用hashmap来进行存储,然后用listview来显示。 首先。我们需要定义xml文件,在里面定义listview:然后定义listview里面每一项的布局,即我这里的lvhashmap.xml文件:然后再生成ArrayList或者vector对象,用来存储数据。ArrayList里面存储的是hashmap对象。其实vector和arraylis的用法是一样的,在这个例子中只需要将arraylist对象换成vector对象就可以啦。两者的区别为:Vector的方法都是同步的(Synchronized),是线.
阅读全文
《程序员》精彩推荐:Android程序创意过滤与失败经验谈
摘要:从2008年底开始,我就在Android上进行程序开发探索。随着时间的推移,我越来越不敢妄自预测或者假设程序创意一定会成功,更多地发现用户的期望以及需求和事先预想很难一致。在一年半的开发过程中,尝试了各种不同的方法和思路来进行程序创意规划和试错。至今,依然失败的教训居多,侥幸成功的很少。因此,我将在本文中分享所经历的创意过滤经验以及失败教训。思路转换的失败在转入Android开发时,我的相关工作经验都是在大型基础平台上做程序开发。针对的用户群体动辄就是全球目标用户,在商业判断和分析上,最基础的一个考量就是用户群体和业务模式的总量的收益是否足够大,对用户群体的研究和商业判断分析完全根据市场分析报
阅读全文
Content Providers
摘要:待续Content Providers 是所有应用程序之间数据存储和检索的一个桥梁,作用是使得各个应用程序之间实现数据共享。Cursor对象用于在结果集中前向或后向列举数据,Crusor对象只能用来读数据。增加、修改、删除数据必须使用ContentResolver对象。1. ContentResolver应用可以通过一个唯一的ContentResolver接口来使用具体的某个ContentProviders。通过getContentResolver()方法来获得一个ContentResolver对象,然后用ContentResolver提供的方法来操作Content Provider。Cont
阅读全文
SQLite
摘要:待续SQLite数据库的一般操作包括:创建数据库、打开数据库、创建表、向表中添加数据、从表中添加数据、从表中删除数据、修改表中的数据、关闭数据库、删除指定表、删除数据库和查询表中的某条数据。其中几个概念,数据库、表、表中的数据。一个数据库中可以包含多个表。每一条数据都保存在指定表中。通过execSQL方法执行一条SQL语句。通过Cursor类查询数据。当使用SQLiteDatabase.query()方法时,慧德到一个Cursor对象,指向的每一条Cursor数据。数据库存储的地址/data/data/<package_name>/databases/为了更好管理和维护数据库,一般
阅读全文
Custom Components
摘要:待续。file:///home/ivan/%E8%BD%AF%E4%BB%B6/eclipse/android-sdk/docs/guide/topics/ui/custom-components.html
阅读全文
Adapters与LayoutInflater与LayoutInflater.Factory
摘要:待续。//LayoutInflater.Factory未加入。external source: a list that code supplies / query from dbfile:///home/ivan/%E8%BD%AF%E4%BB%B6/eclipse/android-sdk/docs/guide/topics/ui/binding.htmlClass Overview:An Adapter object acts as a bridge between anAdapterViewand the underlying data for that view. The Adapter
阅读全文
关于Layout
摘要:待续,主要讲LinearLayout和RelativeLayoutViewStub实现单/双layout切换在xml中调用另一个layout的xml文件,android:actionLayout="@layout/xmlname" 在LinearLayout中,可以通过设置visibility=“Gone”不可见,但在RelativeLayout中可能会带来问题(设置了其他的view将找不到自己的位置)此时可以通过设置android:layout_alignWithParentIfMising="true"解决与其他view的相对问题。显示在右下角and
阅读全文
【转】Youtube视频推荐算法:从10页论文到4页论文的变迁
摘要:所以说豆瓣广播是个好东西,长久以来已经怠于主动关注paper的我,每次都能通过我那些专业敬业的友邻们发现有意思的文章或话题,知识因分享而伟大!而这一次,这篇来自youtube的4页论文[1],最初是通过Chen_1st同学的博客介绍知道的。追溯过去,又找到了Greg Linden的评荐博客。这篇文章很新,以至于我根本找不到免费的全文下载,于是很感谢zibuyu博士帮了一忙,还把youtube在08年发的那篇10页论文[2]一并给我发了过来,于是就有这个有点标题党的题目。实话说,那篇10页论文我没仔细看,但还是先来回顾一下。08年的论文主要思想是把推荐问题建立在一个user-video的图上,试
阅读全文
SearchView默认扩展
摘要:对于ActionView,我们可以在menu的布局文件使用中来自定义searchview布局,如代码<item android:id="@+id/menu_search" android:title="Search" android:icon="@drawable/ic_menu_search" android:showAsAction="ifRoom" android:actionLayout="@layout/searchview" /> 也可以直接指定Android系统中的Se
阅读全文
如何在Android上获取本机号码?
摘要:用到盛大有你的时候,对直接获取本机号码比较好奇,查资料得结果如下如何在Android上获取本机电话号码,目前Android上提供了一个API可以读取早期SIM卡上固化的号码,private String getPhoneNumber(){ TelephonyManager mTelephonyMgr; mTelephonyMgr = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE); return mTelephonyMgr.getLine1Number();}上面的getPhoneNumber方法返回当前手机的电话号
阅读全文
ActionBar
摘要:先来看看class OverviewThis is the public interface to the contextual ActionBar. The ActionBar acts as a replacement for the title bar in Activities. It provides facilities for creating toolbar actions as well as methods of navigating around an application.可以很容易看出Action Bar主要是用于代替传统的标题栏,对于Android平板设备来说屏幕
阅读全文
【转】Android开发必备武器,处理XML的利器——SAX快速上手
摘要:相信各位android开发者,对SAX已经并不陌生了,SAX(Simple API for XML),是一个使用非常广泛的XML解析标准,通常使用Handler模式来处理XML文档,这种处理模式和我们平常习惯的理解方式很不同,身边也经常有一些朋友在刚接触SAX的时候会觉得理解起来有些困难。其实SAX并不复杂,只不过是换了一种思维方式,正如它的名字所表示的,为了让我们以更简单的方式来处理XML文档,下面我们就开始吧。 我们通常的理解方式是,我们给出一个输入(比如xml文档的地址),然后程序返回给我们数据(比如解析后的xml文档结构),我们在返回给我们的结果中进行相应的操作,而SAX以一种更简单的
阅读全文
【转】独家教程:用PHP编写Android应用程序
摘要:Google的开源Android移动操作系统正在席卷全球智能手机市场,和苹果不一样,它对那些想将应用程序提交到iPhone App Store的开发人员有着严格的指导方针和要求,Google的Android平台非常开放,甚至还可以用PHP编写Android应用程序,Irontech创建了一个运行在Android上的PHP移植程序,结合Android的脚本层(Scripting Layer for Android,SL4A),你就可以构建PHP Android应用程序了。在这篇文章中,我们将介绍如何安装、配置和使用PHP for Android以及SL4A,51CTO会以一个简单的demo程序为
阅读全文
【转】Android手势识别ViewFlipper触摸动画
摘要:我们曾介绍过“在Android开发中使用Gallery实现'多级联动'”和“在Android中实现service动态更新UI界面”。今天给大家介绍一下如何实现Android主页面的左右拖动效果。实现起来很简单,就是使用ViewFlipper来将您要来回拖动的View装在一起,然后与GestureDetector手势识别类来联动,确定要显示哪个View,加上一点点动画效果即可。比如当手指向左快速滑动时跳转到上一个View,手指向右快速滑动时跳转到下一个View,本例中使用图片作为各个View的页面,实现左右快速滑动显示不同的图片。Android View首先来看看我们的layou
阅读全文
【转】在Android开发中使用Gallery实现“多级联动”
摘要:之前我们曾向您介绍过在Android中实现service动态更新UI界面,在UI设计中需要利用很多图库相册软件,而Gallery 是国外一个免费开源的、功能非常强大、有丰富的扩展图库相册软件。本文将讲解利用两个Gallery实现类似多级联动的功能。一个Gallery是歌曲专辑图片,另一个Gallery是专辑的歌曲。滑动专辑Gallery,下面的歌曲也会随之发生变动。Gallery布局主要的布局是有两个相对布局+两个Gallery组成的:1:<?xmlversion="1.0"encoding="utf-8"?>2:<RelativeLa
阅读全文
【转】在Android中实现service动态更新UI界面
摘要:之前我们曾向您介绍过Android的UI设计与后台线程交互,据Android API的介绍,service一般是在后台运行的,没有界面的。那么如何实现service动态更新UI界面呢?案例:通过service向远程服务器发送请求,根据服务器返回的结果动态更新主程序UI界面,主程序可实时关闭或重启服务。注册BroadcastReceiver在主程序activity中注册一个BroadcastReceiver,用于接收Service发布的广播。@OverrideprotectedvoidonStart(){//重写onStart方法 dataReceiver=newDataReceiver();
阅读全文
【转】Android的UI设计与后台线程交互
摘要:本文将讨论Android应用程序的线程模型以及如何使用线程来处理耗时较长的操作,而不是在主线程中执行,保证用户界面(UI)的流畅运行。本文还将阐述一些用户界面(UI)中与线程交互的API。UI用户界面线程当应用程序启动时,系统会为应用程序创建一个主线程(main)或者叫UI线程,它负责分发事件到不同的组件,包括绘画事件。完成你的应用程序与Android UI组件交互。例如,当您触摸屏幕上的一个按钮时,UI线程会把触摸事件分发到组件上,更改状态并加入事件队列,UI线程会分发请求和通知到各个组件,完成相应的动作。单线程模型的性能是非常差的,除非你的应用程序相当的简单,特别是当所有的操作都在主线程中
阅读全文
Dalvik与JVM区别
摘要:在J2ME中,刷新都是在canvas中通过调用线程结合repaint()来刷新, 他们使线程不断去循环,去调用canvas, 笔者在Android编程语言入门时也曾经想用J2ME的模式用在android中,结果报异常了, 为什么呢?很多人认为Dalvik虚拟机是一个Java虚拟机,因为Android编程语言恰恰就是Java语言。但是这种说法并不准确。因为Dalvik虚拟机并不是按照Java虚拟机的规范来实现的,两者并不兼容;同时还要两个明显的不同: Java虚拟机运行的是Java字节码。而Dalvik虚拟机运行的则是其专有的文件格式DEX(Dalvik Executable)。所以在以前JAV
阅读全文
【转】Eclipse开发Android应用程序入门:重装上阵
摘要:原文:http://www.smashingmagazine.com/2011/03/28/get-started-developing-for-android-with-eclipse-reloaded/ 在我们教程系列的第一部分中,我们使用Android和Eclipse开发了一个简单的饮茶计时器的应用程序。在第二部分,我们将继续开发这个程序,并给它增加一些其他的额外的功能。在开发的过程中,我们将给你介绍更多重要而强大的Android SDK特性,包括持久化数据存储,Activity和Intent,和共享用户首选项(译者注:类似于windows 的注册表的一种机制)。 跟着本教程,你需要上.
阅读全文
【转】Eclipse开发Android应用程序入门
摘要:原文出处:http://www.smashingmagazine.com/2010/10/25/get-started-developing-for-android-with-eclipse/ 如今的移动设备应用程序开发充满着让人振奋的东西。功能强大的硬件支持,平板电脑,多样的软件平台(塞班 OS,iOS,WebOS,Windows Phone 7…),移动设备开发者前景充满了机会和挑战。 当你想要开始开发你的移动设备程序时,如此多的选择可能让你产生困扰。究竟应该选择神马平台?我应该学习神马语言?为你计划的项目选择神马工具?在本教程中,你将学会如何在Google公司的开源移动设备操作系统An.
阅读全文
Drag and Drop
摘要:1. DragShadowBuilder有三个methods其中,public voidonProvideShadowMetrics(PointshadowSize,PointshadowTouchPoint)确定shadow大小及位置,shadowTouchPoint是相对于该view的位置,我的要求是设为touch.set(0, height/2)。2. 数据传递通过clipdata(ClipData.item)传递数据(有三种类型,simple CharSequence of text, a single Intent object, or a Uri)在被drag的对象的onLongC
阅读全文
小问题汇总
摘要:1. 如何将int转换为stringString.valueOf(int);2. 获得当前view的坐标x = getView.getLeft();y = getView.getTop();3. CharSequence和String的区别在项目中发现,需要charSequence做参数的地方,用String也可以。在JDK1.4中,引入了CharSequence接口,实现了这个接口的类有:CharBuffer、String、StringBuffer、StringBuilder这个四个类。提供这么一个接口,有些处理String或者StringBuffer的类就不用重载了。但是这个接口提供的方法
阅读全文
Android开发者应该深入学习的10个开源应用项目(转)
摘要:Android开发者应该深入学习的10个开源应用项目 Android开发带来新一轮热潮让很多移动开发者都投入到这个浪潮中去了,创造了许许多多相当优秀的应用。其中也有许许多多的开发者提供了应用开 源项 目,贡献出他们的智慧和创造力。学习开源代码是掌握技术的一个最佳方式。下面推荐几个应用开源项目,这些项目不仅提供了优秀的创意,也可以直接掌握 Android内核的接口使用.1.Android团队提供的示例项目如果不是从学习Android SDK中提供的那些样例代码开始,可能没有更好的方法来掌握在Android这个框架上开发。由Android的核心开发团队提供了15个优秀的示例项 目,包含了游戏、图像
阅读全文
浙公网安备 33010602011771号