自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(35)
  • 资源 (1)
  • 收藏
  • 关注

原创 桌面widget的大小

桌面widget大小一般都是4*4,或者4*2,关于这个大小的确定,我们是需要在配置文件里面写的,如下    android:minWidth="294dip"    android:minHeight="72dip"    android:initialLayout="@layout/widget"    >

2014-07-07 11:29:58 725

原创 Fragment的嵌套使用

遇到一个这样的使用场景:要使用fragment实现页面切换

2014-07-07 11:25:09 557

原创 创建带有动画的APP 之 高效的显示位图:缓存位图

载入一张位图到UI界面是很简单直接的事情,但是如果要一次性载入多张图片,那么就会变得很复杂了。在很多情况下,如在ListView,GridView orViewPager里面,页面上展示的图片,是由快速滚动的很多个图片组成的,数量是几乎没有限制的。像上面说的几种视图控件,在他们的离开屏幕使子视图被回收利用的情况下,内存的使用一直是保持比较低的。假定你不在使用载入的位图,内存垃圾回收机制

2013-04-11 16:42:09 865

原创 创建带有动画的APP 之 高效的显示位图:在UI线程之外处理位图

在我们上一节讨论的课程里面,BitmapFactory.decode*这个方法,是从磁盘或者网络(或者任何其他不是从内存读取的位置)读取位图资源的时候,不可以在主UI线程中进行。载入数据的花费的时间是不可预测的,这个耗时和很多因素有关系,如从磁盘或者网络读取的数据的速度,图像的大小,CPU的执行速度等等因素。如果一旦解码图像的任务在主UI线程里面阻塞了,系统就会把你的APP标示为无响应,会提示用户

2013-04-10 11:37:47 574

原创 创建带有动画的APP 之 高效的显示位图:高效的载入大的位图

图片有不同的形状和像素。在很多情况下,都远远大于程序要求的标准大小。比方说,图库应用展示的相机拍照的图片,相机的解析率一般都比你的屏幕密度要高。假定你的APP工作在有限内存的环境下,理想状态中你只是想载入一张低分辨率的图片,这张低分辨率的图片的尺寸要和将要显示它的控件相一致。一个高分辨率的图片,除了提供了高质量的可见度,而且还占用了珍贵的内存,而且额外的动态宽展也导致了高的性能消耗。这一节

2013-04-09 16:21:27 444

原创 创建多媒体APP 之 捕获图像:控制相机

这一节里面我讲述一下如何利用framework的API直接控制相机直接去控制相机,相比于利用相机拍照或者录像,需要更多的代码。如果你想创建一个专业的相机APP或者是在你的UI里面完全的集成相机,这节里面会教你如何实现它。创建一个相机对象首先要获取到一个相机的实例。如android自身的相机APP里面一样,在一个独立的线程里面用打开相机的方法来得到这个Camera的实例,一般在onCre

2013-04-08 12:43:39 674

原创 创建多媒体APP 之 捕获图像:简单的拍录视频

这一节讲述一下如何利用已经存在的相机应用来录制视频。你的APP是要完成某个功能,而集成在里面的视频拍摄只是很小的一部分工作。你需要用最小的精力去实现这个功能,而不是重新去创建一个摄像机的应用。值得高兴的是,绝大多数的android设备都提供一个相机的应用,可以直接用来录制视频。这节课程里面,我们就讲述这个。请求相机权限要声明你的APP是基于相机的一个应用,用来声明:

2013-04-07 10:00:59 598

原创 创建多媒体APP 之 捕获图像:简单的拍照

这一节讲述如何利用已有的拍照应用获取一张照片。假设你实现了大量的天气服务来绘制一张全球气象图,这个图里面的天气图片都是来自你的客户端APP拍照获取,收集图片只是很小的一部分工作,对于你的APP来说。所以在拍照获取图片方面,要尽可能的最简单化,做最少的工作,不需要完全去重新实现一个相机,绝大部分android设备都会至少有一个拍照应用。这一节里面就学习,如何利用已经存在的拍照应用获取照片。请

2013-04-03 11:32:14 846

原创 创建多媒体APP 之 音频播放:处理音频输出硬件

用户有多种途径来听android设备的音频文件。每个android设备都有一个内置的扬声器和一个头戴式耳机插口。而且许多都支持蓝牙连接,支持A2DP音频播放。检测使用的硬件类型从哪个硬件输出音频直接影响着你的APP播放音频的具体行为。你可以使用AudioManager才决定当前音频被发送到哪个硬件,如设备的扬声器,有线耳机,或者链接到的蓝牙设备,如下面的代码片段:if (isBluet

2013-04-02 09:46:30 711

原创 创建多媒体APP 之 音频播放:管理音频焦点

因为很多APP都会潜在需要去播放音频文件,所有要考虑多个APP在播放音频文件的时候会产生的影响,这个非常重要。为了防止同时有多个APP播放音频,android采用了音频焦点这个概念来节制APP对音频的播放:只有当前获得音频焦点的APP才可以播放音频。在你的APP播放音频之前,你的APP必须首先请求和获取音频焦点。同样的,要知道如何监听音频焦点的失去,以及做出相应的动作。请求音频焦点在你

2013-04-01 11:31:07 963

原创 创建多媒体APP 之 音频播放:控制你的APP里面音频的声音大小和播放

如果你的APP要播放一个音频文件,那么让你的用户可以按照用户预期的动作来控制这个音频的播放时非常重要的。为了达到最好的用户体验,你的APP需要管理当前的音频播放,保证不是有多个应用在同一时间都在播放音频。一个好的用户体验是要可预期的。如果你的APP可以播放音频,那么用户必须可以来通过一些设备的软件或者硬件来控制你的APP播放音频的音量大小,如蓝牙耳机,头戴耳机等等。同样的,在合适的地方,播放,

2013-03-29 14:39:24 2042

原创 内容共享 之 增加一个简便的分享按钮

利用前面提到的ActionProvider(android 4.0 ,API 14之上支持)来在ActionBar里面创建一个实用,友好的分享按钮会更加容易一些。ActionProvider,一旦被添加到一个动作条里里面作为一个菜单按钮,会自动实现这个菜单按钮的UI和功能。然后在ShareActionProvider里面,你只需要提供一个要分享的intent,它会处理剩余的工作。注意:Shar

2013-03-28 10:30:43 521

原创 归并(合并)算法

归并算法,就是把2个有序的数列,归并为一个有序的数列。依赖于归并操作举例说明:有2堆有序的扑克牌,都是面朝上放置,牌从上到下,由从小到达排序,这个时候需要把这个2堆牌归并,面朝下放置,最小的牌在最下面。那么比方2堆牌分别为A和B,我们先从A和B的最上面的牌来比较,找出最小的那张,放到旁边,面朝下,然后,这张最小的被取走的时候,那么露出来的那张又成了最上面的牌,这个时候,继续比较最上面的牌,把小

2013-03-27 18:11:33 1231

原创 共享数据 之 从其他APP接收数据

你的APP可以发送数据给其他的APP,那么也可以很容易的从其他的APP接收数据。要考虑用户如何和你的APP交互,你的APP需要接收哪类数据。比方说一个社交网络APP,可能会对text类型的数据感兴趣,比方说一个网站的URL地址等。例如Google+ Android application就接收各种txt文本和单张或者多张图片。利用这个APP,用户可以很方便的将图库里面的图片传到google+.

2013-03-27 14:12:04 703

原创 插入排序算法

好久没有看算法了,稍微看了下,次哦,变笨了算法里面最基本的方法:插入排序假定有一组数据:A1,A2,A3,A4…..An要求重新排序输出:B1,B2,B3,B4…..Bn 按照从大到小的顺序。实现方法,假定有数组a[0…n]1.先认为a[0]是有序的,那么a[1…n]是无序区2.另i=1,我们把a[i]作为当前的key值插入到a[0…i-1]这个有序区间里面去,形成了有序区

2013-03-25 19:13:04 427

原创 内容共享 之 发送内容到其他的APP

源地址:http://developer.android.com/training/sharing/send.html当构造一个intent的时候,必须要指明要触发的动作。android定义了一系列动作,其中有一个就是ACTION_SEND,如文字的意思,表示intent从一个activity发送内容到另外一个activity,甚至可在不同进程间通信。要发送数据给另外一个activity,你仅

2013-03-25 15:45:46 805

原创 Activity通信 之 允许其他的APP启动你的Activity

源地址:http://developer.android.com/training/basics/intents/filters.html前面两节都是单方面的讲了如果从你自己的APP启动别人的APP里面的Activity.但是如果你的APP如果能够执行某一个动作,那么对于其他的APP也许是很有用的,你的APP需要做好可以接收其他的APP 发过来的动作请求。比方说你开发一个社交APP,可以分享图

2013-03-22 18:59:42 794

原创 Activity通信 之 获取Activity的返回结果

源地址:http://developer.android.com/training/basics/intents/result.html启动另外一个activity的方法不止一个模式,你也可以启动一个activity同时可以获取这个activity最后的返回结果。想要获取到返回的结果,需要使用startActivityForResult()代替startActivity()来启动activit

2013-03-22 16:45:56 765

原创 Activity通信 之 把用户导向另外一个APP

android 最重要的一个特性就是可以在一个APP的界面,利用”action”动作把用户导向另外一个APP。比方说,你的APP想在地图上展示一个商业地址,你不需要自己去创建一个activity来显示这个地图。可以Intent来创建一个请求来在地图上展示这个地址,android系统会根据这个intent来启动相应的地图应用,显示你要看的这个地址。就像我们在第一节:创建你的第一个APP 里面说的

2013-03-22 15:58:39 578

原创 保存数据 之 SQL数据库

把数据保存在数据库里里面,对于那些重复性的以及需要组织的数据,是一种理想的办法,比方说联系人信息。这一节假定对sQL操作有一定的了解,来讲解一下在android里面SQL的操作。android平台上操作SQL需要使用的API在android.database.sqlite这个包里面。、定义架构和约定在SQL里面一个最主要的规则就是架构:正式的指出数据库如何组织。架构反应在你当前使用的用来创

2013-03-21 11:36:14 657

原创 保存数据 之 保存文件

android所使用的文件系统类似与其他系统的那种基础存储盘的文件系统。这一节主要说一下android文件系统如何利用 File 这个API来读写文件。File 对象适用于按照从头到尾的顺序读写大的数据,中间不会有部分内容的跳过操作。比方说,这个就很适用于图片文件或者是通过网络传输的文件的保存和读取。这一节里面说一下在你的APP里面如何进行和文件相关的基本操作。这个课程假设你对linux文

2013-03-20 16:19:08 734

原创 保存数据 之 键值对的设置

如果有一些小数据的键值对需要保存,可以用SharedPreferences  这个类里面的API。SharedPreferences 对象指向一个包含键值对的文件,并且提供了一些读取和写入键值对的方法。SharedPreferences 是被framework层管理的,可以是私有的,也可以被共享。注意:SharePreferences 仅仅是操作键值对,不可以和Preference 混淆,Pr

2013-03-20 11:14:15 1111

原创 利用Fragment创建动态UI 之 Fragment之间的通信

为了可以复用一个fragment,所以在定义fragment的时候,要把它定义为一个完全独立和模块化,它有它自己的layout和行为。当你定义好了这些可复用的fragment,可以把他们和activity相关联,在应用的逻辑基础上把这些fragment相互关联,从而组成一个完整的UI。很多时候,我们需要fragment直接进行通信,比方说,根据用户的动作交换内容。所有的fragment直接的通

2013-03-19 15:26:45 635

原创 利用Fragment创建动态UI 之 创建一个灵活的UI

当你把你的APP设计为支持多屏幕大小的时候,你可以在不同的layout配置文件里面利用fragment在屏幕的可用空间来优化你的用户体验。比方说,在一部手持android机器上,在某一时刻,在某个用户操作界面上,仅仅显示一个fragment是最合适的。但是如果在一个平板电脑上,因为它的屏幕很广,这个时候也许我们需要显示很多个fragment铺满整个屏幕,来显示更多的信息给用户。

2013-03-19 14:49:07 504

原创 利用Fragment创建动态UI 之 创建一个Fragment

我们如果把activity界面分割为多个模块,那么一个fragment就可以认为是其中的一个模块,这个模块有着自己的生命周期,可以接收自己的输入事件,而且在activity运行的时候,你可以动态的增加或者移除它(就好像一个"子activity”,你可以在不同的activity里面来使用它)。这一节我们就来学习如何利用Support Library来扩展Fragment 类,让你的app可以在跑着a

2013-03-18 17:37:18 590

原创 利用Fragment创建动态UI 之 使用Support Library

在Support Library 里面提供了一个jar包,它里面包含有一些最新的几个平台上的api函数,使用这个jar包,可以让这些比较新的api函数运行在以前的老版本的android平台上。例如,这个Support Library提供了一个Fragment API的一个版本,你可以在android 1.6或者之上的版本使用这个API.这一节我们讲述一下如何让的你APP使用Support

2013-03-18 16:41:04 435

原创 APP支持不同的设备 之 支持不同版本的平台

当最新版本的平台可以为你的APP提供最好的API的时候,你还是需要去支持老版本的平台,直到更多的设备升级到最新的版本。这一节里面讲述如果让你的APP最的利用新平台的API同时也支持好旧的版本。Platform Versions 的控制平台会定期的更新处于使用状态的android设备的版本分布数据,这个数据是根据访问android play商店的设备数量得出的。一般来说,把你的app的targe

2013-03-17 23:20:50 675

原创 APP支持不同的设备 之 支持不同屏幕

对android的屏幕分类,主要是依靠这2个属性来分类:size和density.你要意识到你的程序会被安装到的设备的屏幕,都是由size和density来限定这个屏幕的规格。这样的话,你的APP要包括多种可选择的资源,使得你的程序在不同的size和density的屏幕上达到最好的显示效果。size在广义上来说一般有四种:small,normal,large,xlarge以及四种densi

2013-03-17 22:24:49 468

原创 APP支持不同的设备 之 支持不同的语言

实现让你的APP支持多语言,通常最好的做法是把你的APP里面的字符串单独的提取存放到一个外部文件里面。android开发实现这个就很简单,每个项目里面都有这么一个资源目录。如果你利用android sdk tools创建一个项目,那么在项目的根目录下会自动创建一个/res目录,这个目录下面的子目录存放着不同类型的数据资源。有一些默认创建的文件,比方说/res/values/string.xml

2013-03-17 21:25:33 494

原创 Activity生命周期 之 重新创建一个Activity

在某些情况下,你的activity会被一些正常操作销毁,比方说返回键的按下或者是activity收到了它自身发出的销毁的指令:finish()函数的调用。还有就是如果你的activity在后台长时间处于停止状态运行,或者前台运行的activity需要更多的系统资源,这个时候系统资源不足的情况下,就回去释放一些后台运行的资源,这个2种情况下都会把后台运行的进程关闭掉,导致activity被销毁。

2013-03-15 18:34:50 615

原创 Activity生命周期 之 停止和重启Acitivty

恰当的停止和重新启动你的activity,在activity的生命周期里面这个是非常重要的,这种机制可以让用户的觉得你的APP一直是在运行的,即使他不在你的程序的activity界面,但是并不会丢失这个程序的运行进度.下面是几个重要的使用场景:当用户打开最近使用的APP程序列表(长按HOME按键),这个时候用户选择一个APP,那么用户就由你的APP转移进入到另外一个APP里面,你的APP将

2013-03-15 15:40:25 931

原创 Activity生命周期 之 暂停和恢复Activity

在正常的app使用中,前台运行的activity有时候会其他可见组件遮盖掉,从而导致这个activity进入暂停(paused)状态。比方说,在一个activity上打开一个半透明的activity(一半利用它来作为一种对话框,背景透明),那么这个activity虽然是可见的,但是已经进入了pause状态,因为它已经被这个新的activity覆盖了,能看到它仅仅是因为覆盖它的activity是半透

2013-03-14 17:45:36 1181

原创 Acitivity生命周期 之 启动Activity

在activity的生命周期里面,系统回去按照一定的顺序去调用一些核心的回调函数,就像金字塔一样,一个台阶一个台阶的排列着。在activity生命周期里面,不同的阶段都是像金字塔里面一个独立台阶。当系统创建一个activity的时候,每一个回调函数,都会一步一步的把activity的状态向上移动,就向上金字塔一样,一个台阶一个台阶的向上。那么当我们的activity完全显示到前台,可以和用户交互的

2013-03-14 15:48:42 650

原创 Activity的生命周期

这一节里面我们主要讲下每个activity生命周期里面都会调用到的一些重要的函数,以及我们如何利用这些函数达到我们想要的效果,降低系统的消耗,在我们不需要的时候不去消耗系统的资源。启动Activity简单讲述一下activity的生命周期,用户如何登陆你的app,如何操作activity的创建暂停和恢复Activity你的activity暂停的时候,它发生了什么,以及当

2013-03-14 15:45:04 416

原创 Android开发之创建你的第一个应用(翻译自谷歌官方,原版翻译)

古人说的好:工欲善其事,必先利其器!首先是要搭建安卓的开发环境,这里提供一个哥们写的地址:http://www.hzlitai.com.cn/article/ARM11/SYSTEM/android.html 网上也有很多,推荐eclipse,毕竟这个也是谷歌官方推荐的。看过一些android开发的书籍,总觉得中文的书籍重其形,而不重其意,很多时候都是指讲了怎么做,没有讲为什么,而且谷歌的

2013-03-14 15:43:38 1542

算法导论中文版

算法导论中文版,由浅入深的介绍了主流的算法,非常值得一看,这个是中文版本

2013-03-24

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除