
android开发
牛搞
深研C++;
深研架构,设计模式;
深研高性能并发服务器;
展开
-
android菜单详解一:概述
菜单是Activity的一个重要组成部分。它为用户操作提供了很爽的途径。Android提供了一个简单的框架来向程序中添加标准菜单 .共有三种菜单:选项菜单一个activity的菜单项们的主要集合。当你按MENU按钮时(硬件上的)就会出现。如果你的程序跑在 Android 3.0或以上,你可以通过把菜单项作为 "action items"直接放在Actiion Bar上来翻译 2011-12-24 11:30:48 · 4560 阅读 · 0 评论 -
android菜单详解二:选项菜单
创建一个选项菜单选项菜单里应该包含基本的activity动作和必须的导航条目 (例如,一个打开程序设置的菜单项). 选项菜单的菜单项有两种不同的选择方法,一是菜单项按钮,二是通过 Action Bar (在Android 3.0及以上版本中).图1:浏览器中的选项菜单图 2. Email程序中的动作栏,具有两个动作和一个溢出菜单当 运行于Andr翻译 2011-12-24 11:42:34 · 6380 阅读 · 0 评论 -
android菜单详解五:菜单的其它特性
这里是一些其它特性,你可以把它们应用于大多数菜单条目.菜单组一个菜单组是由共享某些特性的一系列菜单项组成的.对于组,你可以:显示或隐藏所有的菜单项 ,使用方法 setGroupVisible()Enable 或 disable 所有的菜单项,使用方法 setGroupEnabled()指定所有的菜单项是否是 checkable ,使用方法 setGroupCheckable()翻译 2011-12-24 15:57:16 · 10483 阅读 · 0 评论 -
android菜单详解六:快捷键和菜单intent
快捷键为了提高对选项菜单的操作速度,你可以在具有物理按键的设备上为菜单增加快捷键.快捷键可以对应键盘上的字母或数字.你需要做的是为元素指定属性android:alphabeticShortcut 和android:numericShortcut 的值.你也可以在代码中使用方法setAlphabeticShortcut(char) 和setNumericShortcut(char).来完翻译 2011-12-25 09:44:11 · 4971 阅读 · 0 评论 -
android菜单详解四:子菜单
创建子菜单们一个子菜单是一个在已有菜单的某个菜单项上打开的菜单.你可以向任何菜单添加子菜单.当你的程序拥有很多功能并可按类别组织起来,那么子菜单是最佳选择.比如PC 程序中的菜单栏 (File, Edit,View等等.).当创建你的菜单资源时,你可以添加一个 元素作为一个元素的孩子来创建子菜单.例如: <item android:id="@+id/file"翻译 2011-12-24 14:54:06 · 3934 阅读 · 0 评论 -
android菜单详解三:上下文菜单
创建一个上下文菜单一个上下文菜单跟PC上的右键菜单类似.你应使用上下文菜单为用户界面上的某个部分提供动作选择功能.在Android中,一个上下文菜单会在用户长按一个界面条目时出现.你可以为任何View创建上下文菜单,但是在 ListView中是最常用到上下文菜单的.每当用户在一个ListView项上长按,并且这个ListView注册了上下文菜单,那么被按的 list item就会弹出上翻译 2011-12-24 13:02:59 · 5284 阅读 · 0 评论 -
android activity详解四:保存activity的状态的更多事项
处理系统配置变化很多设备可以在运行时改变系统配置,比如屏幕方向,键盘布局以及语言等。当类似的变化发生时,系统会把运行的activity重启(调用onDestroy(),然后调用onStart(),――哦~,没有调用onRestart()),如果你的activity能跟据这些变化做出相应的处理,那么你的程序将更稳定可爱。那么如何应付这些变化呢,最好的办法就是写好状态保存/恢复方法们。比如on翻译 2011-12-28 21:32:21 · 5035 阅读 · 1 评论 -
android Fragments详解五:与activity通讯
与activity通讯 尽管fragment的实现是独立于activity的,可以被用于多个activity,但是每个activity所包含的是同一个fragment的不同的实例。 Fragment可以调用getActivity()方法很容易的得到它所在的activity的对象,然后就可以查找activity中的控件们(findViewById())。例如:ViewlistVi翻译 2012-01-07 09:44:57 · 21067 阅读 · 4 评论 -
android Fragments详解六:处理fragement的生命周期
把条目添加到动作栏你的fragment们可以向activity的菜单(按Manu键时出现的东西)添加项,同时也可向动作栏(界面中顶部的那个区域)添加条目,这都需通过实现方法onCreateOptionManu()来完成。你从fragment添加到菜单的任何条目,都会出现在现有菜单项之后。Fragment之后可以通过方法onOptionsItemSelected()来响应自己的菜单项被选择的翻译 2012-01-08 15:05:02 · 21120 阅读 · 0 评论 -
android Fragments详解七:fragement示例
下例中实验了上面所讲的所有内容。此例有一个activity,其含有两个fragment。一个显示莎士比亚剧的播放曲目,另一个显示选中曲目的摘要。此例还演示了如何跟据屏幕大小配置fragment。主activity创建layout。@Overrideprotectedvoid onCreate(Bundle savedInstanceState) { super.onCreate(s翻译 2012-01-12 20:28:10 · 13613 阅读 · 9 评论 -
android Fragments详解三:实现Fragment的界面
为fragment添加用户界面 fragment一般作为activity的用户界面的一部分,把它自己的layout嵌入到activity的layout中。 一个 要为fragment提供layout,你必须实现onCreateView()回调方法,然后在这个方法中返回一个View对象,这个对象是fragment的layout的根。 注:如果你的fragmen翻译 2012-01-02 18:10:55 · 47656 阅读 · 11 评论 -
android Fragments详解四:管理fragment
要管理fragment们,需使用FragmentManager,要获取它,需在activity中调用方法getFragmentManager()。你可以用FragmentManager来做以上事情:1使用方法findFragmentById()或findFragmentByTag(),获取activity中已存在的fragment们。2使用方法popBackStack()从ac翻译 2012-01-03 11:28:26 · 59115 阅读 · 12 评论 -
Android task和back stack详解四:intent中定义启动模式
接上文,关于后退栈,先举个例子: Android浏览器应用声明网页浏览activity必须在它自己的任务中打开—通过在元素中指定singleTask启动模式.这表示如果你的应用发出一个intent来打开Android浏览器,它的activity不会放到你的应用所在的任务中.代替的是,可能一个新的任务为浏览器启动,或者,如果浏览器已经运行于后台,它所在的任务就被弄到前台并接受这个int翻译 2012-02-26 10:38:40 · 5704 阅读 · 0 评论 -
Android task和back stack详解三:定义启动模式
定义启动模式 启动模式使你可以定义新的activity如何与当前的任务相关联.有两种方法来定义不同的启动模式:使用manifest文件 当你在你的manifest文件中声明一个activity时,你可以指定activity在启动时如何与任务相关联.使用Intent的flag 当你调用startActivity()时,你可以在Intent中包含指明新的activ翻译 2012-02-25 07:42:41 · 5929 阅读 · 0 评论 -
Android task和back stack详解五:任务亲和力及其它
处理任务亲和力 亲和力表明了一个activity"心仪"哪个任务.默认下,属于同一个应用的所有activitie之间具有相同的任务亲和力.所以,默认下,一个应用的所有activitie首选属于同一任务.然而,你可以修改一个activity的默认任务亲和力.定义于不同应用的Activitie可以具有相同的任务亲和力,或者同一应用中的activitie可以分配不同的任务亲和力. 你可以使用翻译 2012-02-28 07:21:27 · 5799 阅读 · 0 评论 -
android图形系统详解一:Canvas
概述 当写一个应用时,恰当的决定你的图形需求是很重要的.不同的图形任务对应不同的技术.例如,一个静态应用的图形和动画的实现肯定与一个交互式游戏非常不同.这里,我们将讨论一些在android上绘制图形时的操作以及它们最适合应用的任务.Canvas和Drawables Android提供了一系列View部件来为大多数用户界面提供通常的功能.你也可以扩展这些部件来修改它们的外观和翻译 2012-03-29 07:12:33 · 26297 阅读 · 3 评论 -
android图形系统详解二:Drawables
Android提供了一个自定义的2D图形库来绘制图像和图像.在android.graphics.drawable包中你就可以找到这些用于2维绘画的通用类. 本文讨论使用Drawable对象来作画的基础知识以及如何使用一对Drawable类的派生类. Drawable是通常指的那种可以作画的东西的抽象.你将发现Drawable类扩展出了很多特定的可绘图形类,包括BitmapD翻译 2012-04-01 07:36:26 · 7043 阅读 · 1 评论 -
android图形系统详解三:形状Drawable和九宫格
形状Drawable当你想动态画2维图形,ShapeDrawable对象是可能是你合适的选择.使用ShapeDrawable,你可以随意画出原始的形状并且应用到任何风格. ShapeDrawable是一个Drawable的派生类,所以你可以用于任何想使用Drawable的地方—比如可能是一个View的背景,通过setBackgroundDrawable()所设置.当然,你也可以把你的形状作为它自翻译 2012-04-06 06:08:35 · 9071 阅读 · 5 评论 -
Android开发:什么是IBinder
上回书简单描述了进程间传递类对象的原理,这回在讲Parcel之前,先要讲一个东西:IBinder。IBinder是什么呢?首先要明白,Android的远程调用(就是跨进程调用)就是通过IBinder实现的,下面是对android开发文档的翻译。 IBinder是远程对象的基本接口,是为高性能而设计的轻量级远程调用机制的核心部分。但它不仅用于远程调用,也用于进程内调用。这个接口定义了与远程对象交互的原创 2011-05-29 08:46:00 · 34989 阅读 · 4 评论 -
Android开发:什么是Parcel(2)
上回书解释了IBinder,这回详细解释一下Parcel,以下是对android sdk 文档的翻议:Parcel是一个容器,它主要用于存储序列化数据,然后可以通过Binder在进程间传递这些数据(要了解为什么要序列化,请参考:http://blog.youkuaiyun.com/nkmnkm/archive/2011/05/28/6451699.aspx)。Parcel可以包含原始数据类型(用各种对应的方法原创 2011-05-29 18:45:00 · 16769 阅读 · 8 评论 -
android图形系统详解四:控制硬加速
从Android3.0 (API level11)开始,Android的2D显示管道被被设计得更加支持硬加速了.硬加速使用GPU承担了所有在View的canvas上执行的绘制操作. 启用硬加速最简单的的方法是对整个应用启用硬件速.如果你的应用只使用标准的view和Drawable,全局启用硬加速将不会带来任何负面影响.然而,因为硬加速不是被所有的2D绘制所支持,所以启用它时可能对你的自定义绘制产翻译 2012-04-10 05:57:59 · 6245 阅读 · 0 评论 -
android图形系统详解五:Android绘制模式
当硬加速被启用,Android框架利用一个新的绘制模式来把你的应用呈现到屏幕,这个模式利用了一个显示列表.要完全理解显示列表以及它如何影响你的应用,先要理解android如何在非硬加速下绘制View.下面的小节描述了软加速的和硬加速的绘制models.软件绘制模式 在软件绘制模式,view按以下两步进行绘制:1使整个View层级都变得无效2绘制所有的View层级 任何时候一个应用需要更新部分U翻译 2012-04-13 06:25:02 · 6325 阅读 · 0 评论 -
android图形系统详解六:View layer
View layers 在所有版本的Android中,views都有画到离屏缓冲的能力,这包括使用view的绘制cache,或使用Canvas.saveLayer().离屏缓冲,或者说层,有很多用处.你可以使用它们来为复杂的view动画或使用组合效果时提高性能.例如,你可以使用Canvas.saveLayer()实现淡出效果,这个方法会临时的把一个view画到一个layer中然后使用一个透明系数翻译 2012-04-16 07:46:45 · 19076 阅读 · 0 评论 -
Android OpenGL详解二
OpenGL版本和设备兼容性 OpenGLES 1.0 和 1.1API 规范从Android1.0就开始支持.从Android2.2 (API Level 8)开始,框架支持OpenGLES 2.0 API规范.OpenGLES 2.0被大多数Android设备所支持并被推荐在新的基于OpenGL的应用中使用.纹理压缩的支持 纹理压缩通过减少对内存的使用可以显著提高OpenGL应用的性能.A翻译 2012-05-15 06:22:05 · 13636 阅读 · 0 评论 -
android 多媒体和相机详解四
处理AUDIO_BECOMING_NOISYIntent 很多良好的音频播放的应用都会在那些导致声音变为噪音(通过外部扬声器输出)的事件发生时自动停止播放.例如,这可能发生在当一个用户用耳机听音乐时忽然断开了耳机连接.音频从扬声器播放可能不是用户期望的. 你可以通过处理ACTION_AUDIO_BECOMING_NOISYintent 来保证你的应用在此情况下停止播放音乐,你可以把如下代码添加原创 2012-06-04 06:08:12 · 5970 阅读 · 3 评论 -
android 多媒体和相机详解三
处理音频焦点 尽管某个时刻只有一个activity可以运行,Android却是一个多任务环境.这对使用音频的应用带来了特殊的挑战,因为只有一个音频输出而可能多个媒体都想用它.在Android2.2之前,没有内建的机制来处理这个问题,所以可能在某些情况下导致坏的用户体验.例如,当一个用户正在听音乐而另一个应用需要通知用户一些重要的事情时,用户可能由于音乐声音大而不能听的通知.从Android2.2翻译 2012-05-28 07:06:16 · 9493 阅读 · 1 评论 -
android 多媒体和相机详解一
Android多媒体框架包含了获取和回放音频,视频和各种类形的图像的功能,所以你可以很容易的把它们整合到你的应用中.你可以从存储在资源中的文件,文件系统中的文件,或从网络数据流中播放音频或视频,这些都是用MediaPlayer或JetPlayerAPI实现.你也可以使用MediaRecorderand Camera API来录制声音,视频或抓取图片. 下面的主题向你演示了如何使用Android框翻译 2012-05-16 05:52:19 · 7659 阅读 · 2 评论 -
android 多媒体和相机详解二
释放MediaPlayer MediaPlayer可能消耗大量的系统资源.因此你应该总是采取一些额外的措失来确保在一个MediaPlayer实例上不会挂起太长的时间.当你用完MediaPlayer时,你应该总是调用release()来保证任何分配给MediaPlayer的系统资源被正确地释放.例如,如果你正在使用MediaPlayer并且你的activity收到了一个对onStop()的调用,你翻译 2012-05-21 06:47:35 · 6862 阅读 · 2 评论 -
android 多媒体和相机详解五
相机 Android框架架包含了各种相机和相机功能的支持,使你可以在你的应用中捕获图像和视频.本文档讨论一个简单快速的获取图像和视频的方法,并概述一个创建自定义用户相机体验的高级方法.想一想 在使你的应用能使用设备上的相机之前,你应该先想一想你的应用将来会如何使用此硬件.Camera必须-相机是必须的,你不希望你的应用安装到一个没有相机的设备上.你应该在manifest文件中声明需要相机.快速翻译 2012-06-13 05:18:56 · 20752 阅读 · 3 评论 -
android 多媒体和相机详解七
创建一个预览类 为了让用户有效的获取图像和视频,必须能让他们看到相机中的影像。一个相机预览类是一个SurfaceView类,它可以显示相机中的实时影像,于是用户就可以框住并捕获图像或视频。下面例子中的代码演示了如何创建一个基本的相机预览类,此类可以被一个viewlayout包含。此类实现了SurfaceHolder.Callback,为的是获取创建和销毁view的回调事件,这个view用来分配相机翻译 2012-07-02 07:13:58 · 5867 阅读 · 1 评论 -
android Content Provider详解一
内容提供者-Content ProviderContent providers管理对结构化数据集的使用.它们封装数据,并提供了数据安全的机制.Content providers是从一个进程连接另一个进程中的数据的标准接口. 当你想使用一个content provider中的数据,你需在你的应用的Context 中使用ContentResolver对象作为客户端与provider 进行通讯.Cont翻译 2012-08-06 07:54:35 · 11525 阅读 · 3 评论 -
android 多媒体和相机详解八
获取图像 一旦你建立了预览类和显示预览类的viewlayout,你就已准备好开始使用你的应用获取图像了.在你的应用代码中,你还必须要建立起那些用于控制的控件们的侦听器,来响应用户的动作. 要取得图像,使用Camera.takePicture()方法.此方法有三个参数.要获得JPEG图像,你必须实现一个Camera.PictureCallback接口来接收图像数据然后写入文件中.下面的代码演示了翻译 2012-07-09 06:21:09 · 11158 阅读 · 2 评论 -
android 多媒体和相机详解九
释放相机 想机是被设备上的应用们共享的资源.你的应用可以在获取相机实例后使用它,并且你的应用必须在用完后释放它,而且在暂停时(Activity.onPause())也要釋放它.如果你的应用没有适当的释放相机,所有后续试图获取相机使用权的操作,包括你自己的应用,都会失败并且导致那些应用关闭.要释放一个相机对象实例,使用方法Camera.release(),如下代码所示:public class C原创 2012-07-21 12:12:52 · 9889 阅读 · 3 评论 -
android 多媒体和相机详解十
检测可用的特性// get Camera parametersCamera.Parameters params = mCamera.getParameters();List focusModes = params.getSupportedFocusModes();if (focusModes.contains(Camera.Parameters.FOCUS_MODE_AUTO)) {翻译 2012-07-25 08:20:21 · 16296 阅读 · 4 评论 -
android 多媒体和相机详解十一(大结局)
Time lapse视频(定时录像?)time lapse视频使得用户可以创建某个时间段的图像组成的视频剪辑.此特性使用MediaRecorder 来录制图像到一个序列. 要使用MediaRecorder录制一个time lapse视频,你必须像录制一个一般视频那样配置recorder对象,设置帧率到一个低的数字并且设置time lapse质量 ,如下面代码所示:// Step 3: 设置一个Ca翻译 2012-07-26 07:06:23 · 10495 阅读 · 3 评论 -
android Content Provider详解二
从Provider取得data本节讲述了如何从provider取得数据,使用用户词典作为例子.为了清析易懂,本节中调用ContentResolver.query()的代码片断置于"UI 线程"中.但是,在实际代码中,你应该在另一个线程执行查询动作,这样做的一种方法是使用CursorLoader 类.而,那几行示例代码仅是片断,它们不能展示一个完整的应用.要从provider取得data,须依如下步翻译 2012-08-10 07:04:36 · 5960 阅读 · 0 评论 -
Android录音与播放
Android多媒体框架包含获取和编码多种音频格式的支持,所以你可以轻松地把音频合并到你的应用中.如果设备支持,你可以使用MediaRecorder APIs 进行录音.本章向你展示如何写一个应用从设备上的microphone获取音频,然后保存并回放.注:Android模拟器不具有录音的能力,但是真实的设备一般都具有此功能.执行音频获取从设备获取音频比回放音频或视频要复杂一点,但是也还算简单:创建翻译 2012-07-31 07:11:24 · 17992 阅读 · 5 评论 -
android Content Provider详解三
Content Provider 的权限一个具有provider的应用可以指定其它要操作自己的数据所应具有的权限.这些权限保证了用户能了解一个应用将要操作那个数据.其它应用需基于provider的需求请求相应的权限.用户在安装应用时会看到它们所请求的权限.如果一个provider的应用没有指定任务权限,那么其它应用就不能操作provider的数据.然而,provider所在的应用的组件们却具有完整翻译 2012-08-16 07:23:42 · 8603 阅读 · 0 评论 -
android Content Provider详解四
Provider数据类型Contentproviders能识别多种不同的数据类型.用户词典只识别文本类型,但其它provider可以识别下列格式:整型长整型(long)浮点长浮点(double)另一个provider经常使用的数据类型是"大二进对象"(BLOB) ,它就像一个64KB的字节数组.你可以通过Cursor类的"get"方法查看可用的数据类型.provider中的每列的数据类型都是在它们翻译 2012-09-17 06:41:40 · 4237 阅读 · 1 评论 -
android Content Provider详解五
<!-- @page { margin: 2cm } H4 { margin-top: 0.49cm; margin-bottom: 0.51cm; background: transparent; border: none; padding: 0cm; direction: ltr; font-variant: normal; color: #000000; background: tr翻译 2012-10-12 07:02:08 · 4183 阅读 · 1 评论