<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[orionhan的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/orionhan</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; orionhan]]></copyright><item><title><![CDATA[桌面widget的大小]]></title><link>https://blog.youkuaiyun.com/orionhan/article/details/37503247</link><guid>https://blog.youkuaiyun.com/orionhan/article/details/37503247</guid><author>orionhan</author><pubDate>Mon, 07 Jul 2014 11:29:58 +0800</pubDate><description><![CDATA[桌面widget大小一般都是4*4，或者4*2，关于这个大小的确定，我们是需要在配置文件里面写的，如下


    android:minWidth="294dip"
    android:minHeight="72dip"
    android:initialLayout="@layout/widget"
    >]]></description><category></category></item><item><title><![CDATA[Fragment的嵌套使用]]></title><link>https://blog.youkuaiyun.com/orionhan/article/details/37502509</link><guid>https://blog.youkuaiyun.com/orionhan/article/details/37502509</guid><author>orionhan</author><pubDate>Mon, 07 Jul 2014 11:25:09 +0800</pubDate><description><![CDATA[遇到一个这样的使用场景：要使用fragment实现页面切换]]></description><category></category></item><item><title><![CDATA[创建带有动画的APP 之 高效的显示位图：缓存位图]]></title><link>https://blog.youkuaiyun.com/orionhan/article/details/8789074</link><guid>https://blog.youkuaiyun.com/orionhan/article/details/8789074</guid><author>orionhan</author><pubDate>Thu, 11 Apr 2013 16:42:09 +0800</pubDate><description><![CDATA[载入一张位图到UI界面是很简单直接的事情，但是如果要一次性载入多张图片，那么就会变得很复杂了。在很多情况下，如在ListView,
GridView or
ViewPager里面，页面上展示的图片，是由快速滚动的很多个图片组成的，数量是几乎没有限制的。
像上面说的几种视图控件，在他们的离开屏幕使子视图被回收利用的情况下，内存的使用一直是保持比较低的。假定你不在使用载入的位图，内存垃圾回收机制]]></description><category></category></item><item><title><![CDATA[创建带有动画的APP 之 高效的显示位图：在UI线程之外处理位图]]></title><link>https://blog.youkuaiyun.com/orionhan/article/details/8781992</link><guid>https://blog.youkuaiyun.com/orionhan/article/details/8781992</guid><author>orionhan</author><pubDate>Wed, 10 Apr 2013 11:37:47 +0800</pubDate><description><![CDATA[在我们上一节讨论的课程里面，BitmapFactory.decode*这个方法，是从磁盘或者网络（或者任何其他不是从内存读取的位置）读取位图资源的时候，不可以在主UI线程中进行。载入数据的花费的时间是不可预测的，这个耗时和很多因素有关系，如从磁盘或者网络读取的数据的速度，图像的大小，CPU的执行速度等等因素。如果一旦解码图像的任务在主UI线程里面阻塞了，系统就会把你的APP标示为无响应，会提示用户]]></description><category></category></item><item><title><![CDATA[创建带有动画的APP 之 高效的显示位图：高效的载入大的位图]]></title><link>https://blog.youkuaiyun.com/orionhan/article/details/8778375</link><guid>https://blog.youkuaiyun.com/orionhan/article/details/8778375</guid><author>orionhan</author><pubDate>Tue, 09 Apr 2013 16:21:27 +0800</pubDate><description><![CDATA[图片有不同的形状和像素。在很多情况下，都远远大于程序要求的标准大小。比方说，图库应用展示的相机拍照的图片，相机的解析率一般都比你的屏幕密度要高。
假定你的APP工作在有限内存的环境下，理想状态中你只是想载入一张低分辨率的图片，这张低分辨率的图片的尺寸要和将要显示它的控件相一致。一个高分辨率的图片，除了提供了高质量的可见度，而且还占用了珍贵的内存，而且额外的动态宽展也导致了高的性能消耗。
这一节]]></description><category></category></item><item><title><![CDATA[创建多媒体APP 之 捕获图像：控制相机]]></title><link>https://blog.youkuaiyun.com/orionhan/article/details/8771854</link><guid>https://blog.youkuaiyun.com/orionhan/article/details/8771854</guid><author>orionhan</author><pubDate>Mon, 08 Apr 2013 12:43:39 +0800</pubDate><description><![CDATA[这一节里面我讲述一下如何利用framework的API直接控制相机
直接去控制相机，相比于利用相机拍照或者录像，需要更多的代码。如果你想创建一个专业的相机APP或者是在你的UI里面完全的集成相机，这节里面会教你如何实现它。
创建一个相机对象
首先要获取到一个相机的实例。如android自身的相机APP里面一样，在一个独立的线程里面用打开相机的方法来得到这个Camera的实例，一般在onCre]]></description><category></category></item><item><title><![CDATA[创建多媒体APP 之 捕获图像：简单的拍录视频]]></title><link>https://blog.youkuaiyun.com/orionhan/article/details/8766249</link><guid>https://blog.youkuaiyun.com/orionhan/article/details/8766249</guid><author>orionhan</author><pubDate>Sun, 07 Apr 2013 10:00:59 +0800</pubDate><description><![CDATA[这一节讲述一下如何利用已经存在的相机应用来录制视频。
你的APP是要完成某个功能，而集成在里面的视频拍摄只是很小的一部分工作。你需要用最小的精力去实现这个功能，而不是重新去创建一个摄像机的应用。值得高兴的是，绝大多数的android设备都提供一个相机的应用，可以直接用来录制视频。这节课程里面，我们就讲述这个。
请求相机权限
要声明你的APP是基于相机的一个应用，用来声明：]]></description><category></category></item><item><title><![CDATA[创建多媒体APP 之 捕获图像：简单的拍照]]></title><link>https://blog.youkuaiyun.com/orionhan/article/details/8755116</link><guid>https://blog.youkuaiyun.com/orionhan/article/details/8755116</guid><author>orionhan</author><pubDate>Wed, 03 Apr 2013 11:32:14 +0800</pubDate><description><![CDATA[这一节讲述如何利用已有的拍照应用获取一张照片。
假设你实现了大量的天气服务来绘制一张全球气象图，这个图里面的天气图片都是来自你的客户端APP拍照获取，收集图片只是很小的一部分工作，对于你的APP来说。所以在拍照获取图片方面，要尽可能的最简单化，做最少的工作，不需要完全去重新实现一个相机，绝大部分android设备都会至少有一个拍照应用。这一节里面就学习，如何利用已经存在的拍照应用获取照片。
请]]></description><category></category></item><item><title><![CDATA[创建多媒体APP 之 音频播放：处理音频输出硬件]]></title><link>https://blog.youkuaiyun.com/orionhan/article/details/8749846</link><guid>https://blog.youkuaiyun.com/orionhan/article/details/8749846</guid><author>orionhan</author><pubDate>Tue, 02 Apr 2013 09:46:30 +0800</pubDate><description><![CDATA[用户有多种途径来听android设备的音频文件。每个android设备都有一个内置的扬声器和一个头戴式耳机插口。而且许多都支持蓝牙连接，支持A2DP音频播放。
检测使用的硬件类型
从哪个硬件输出音频直接影响着你的APP播放音频的具体行为。你可以使用AudioManager才决定当前音频被发送到哪个硬件，如设备的扬声器，有线耳机，或者链接到的蓝牙设备，如下面的代码片段：
if (isBluet]]></description><category></category></item><item><title><![CDATA[创建多媒体APP 之 音频播放：管理音频焦点]]></title><link>https://blog.youkuaiyun.com/orionhan/article/details/8745767</link><guid>https://blog.youkuaiyun.com/orionhan/article/details/8745767</guid><author>orionhan</author><pubDate>Mon, 01 Apr 2013 11:31:07 +0800</pubDate><description><![CDATA[因为很多APP都会潜在需要去播放音频文件，所有要考虑多个APP在播放音频文件的时候会产生的影响，这个非常重要。为了防止同时有多个APP播放音频，android采用了音频焦点这个概念来节制APP对音频的播放：只有当前获得音频焦点的APP才可以播放音频。
在你的APP播放音频之前，你的APP必须首先请求和获取音频焦点。同样的，要知道如何监听音频焦点的失去，以及做出相应的动作。
请求音频焦点
在你]]></description><category></category></item><item><title><![CDATA[创建多媒体APP 之 音频播放：控制你的APP里面音频的声音大小和播放]]></title><link>https://blog.youkuaiyun.com/orionhan/article/details/8736623</link><guid>https://blog.youkuaiyun.com/orionhan/article/details/8736623</guid><author>orionhan</author><pubDate>Fri, 29 Mar 2013 14:39:24 +0800</pubDate><description><![CDATA[如果你的APP要播放一个音频文件，那么让你的用户可以按照用户预期的动作来控制这个音频的播放时非常重要的。为了达到最好的用户体验，你的APP需要管理当前的音频播放，保证不是有多个应用在同一时间都在播放音频。一个好的用户体验是要可预期的。如果你的APP可以播放音频，那么用户必须可以来通过一些设备的软件或者硬件来控制你的APP播放音频的音量大小，如蓝牙耳机，头戴耳机等等。
同样的，在合适的地方，播放，]]></description><category></category></item><item><title><![CDATA[内容共享 之 增加一个简便的分享按钮]]></title><link>https://blog.youkuaiyun.com/orionhan/article/details/8730138</link><guid>https://blog.youkuaiyun.com/orionhan/article/details/8730138</guid><author>orionhan</author><pubDate>Thu, 28 Mar 2013 10:30:43 +0800</pubDate><description><![CDATA[利用前面提到的ActionProvider（android 4.0 ,API 14之上支持）来在ActionBar里面创建一个实用，友好的分享按钮会更加容易一些。ActionProvider,一旦被添加到一个动作条里里面作为一个菜单按钮，会自动实现这个菜单按钮的UI和功能。然后在ShareActionProvider里面，你只需要提供一个要分享的intent,它会处理剩余的工作。
注意：Shar]]></description><category></category></item><item><title><![CDATA[归并（合并）算法]]></title><link>https://blog.youkuaiyun.com/orionhan/article/details/8727798</link><guid>https://blog.youkuaiyun.com/orionhan/article/details/8727798</guid><author>orionhan</author><pubDate>Wed, 27 Mar 2013 18:11:33 +0800</pubDate><description><![CDATA[归并算法，就是把2个有序的数列，归并为一个有序的数列。依赖于归并操作
举例说明：有2堆有序的扑克牌，都是面朝上放置，牌从上到下，由从小到达排序，这个时候需要把这个2堆牌归并，面朝下放置，最小的牌在最下面。那么比方2堆牌分别为A和B，我们先从A和B的最上面的牌来比较，找出最小的那张，放到旁边，面朝下，然后，这张最小的被取走的时候，那么露出来的那张又成了最上面的牌，这个时候，继续比较最上面的牌，把小]]></description><category></category></item><item><title><![CDATA[共享数据 之 从其他APP接收数据]]></title><link>https://blog.youkuaiyun.com/orionhan/article/details/8726377</link><guid>https://blog.youkuaiyun.com/orionhan/article/details/8726377</guid><author>orionhan</author><pubDate>Wed, 27 Mar 2013 14:12:04 +0800</pubDate><description><![CDATA[你的APP可以发送数据给其他的APP，那么也可以很容易的从其他的APP接收数据。要考虑用户如何和你的APP交互，你的APP需要接收哪类数据。比方说一个社交网络APP，可能会对text类型的数据感兴趣，比方说一个网站的URL地址等。例如Google+ Android application就接收各种txt文本和单张或者多张图片。利用这个APP，用户可以很方便的将图库里面的图片传到google+.]]></description><category></category></item><item><title><![CDATA[插入排序算法]]></title><link>https://blog.youkuaiyun.com/orionhan/article/details/8718497</link><guid>https://blog.youkuaiyun.com/orionhan/article/details/8718497</guid><author>orionhan</author><pubDate>Mon, 25 Mar 2013 19:13:04 +0800</pubDate><description><![CDATA[好久没有看算法了，稍微看了下，次哦，变笨了
算法里面最基本的方法：插入排序
假定有一组数据：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]这个有序区间里面去，形成了有序区]]></description><category></category></item><item><title><![CDATA[内容共享 之 发送内容到其他的APP]]></title><link>https://blog.youkuaiyun.com/orionhan/article/details/8717455</link><guid>https://blog.youkuaiyun.com/orionhan/article/details/8717455</guid><author>orionhan</author><pubDate>Mon, 25 Mar 2013 15:45:46 +0800</pubDate><description><![CDATA[源地址：http://developer.android.com/training/sharing/send.html
当构造一个intent的时候，必须要指明要触发的动作。android定义了一系列动作，其中有一个就是ACTION_SEND，如文字的意思，表示intent从一个activity发送内容到另外一个activity，甚至可在不同进程间通信。要发送数据给另外一个activity，你仅]]></description><category></category></item><item><title><![CDATA[Activity通信 之 允许其他的APP启动你的Activity]]></title><link>https://blog.youkuaiyun.com/orionhan/article/details/8707720</link><guid>https://blog.youkuaiyun.com/orionhan/article/details/8707720</guid><author>orionhan</author><pubDate>Fri, 22 Mar 2013 18:59:42 +0800</pubDate><description><![CDATA[源地址：http://developer.android.com/training/basics/intents/filters.html
前面两节都是单方面的讲了如果从你自己的APP启动别人的APP里面的Activity.但是如果你的APP如果能够执行某一个动作，那么对于其他的APP也许是很有用的，你的APP需要做好可以接收其他的APP 发过来的动作请求。比方说你开发一个社交APP，可以分享图]]></description><category></category></item><item><title><![CDATA[Activity通信 之 获取Activity的返回结果]]></title><link>https://blog.youkuaiyun.com/orionhan/article/details/8707102</link><guid>https://blog.youkuaiyun.com/orionhan/article/details/8707102</guid><author>orionhan</author><pubDate>Fri, 22 Mar 2013 16:45:56 +0800</pubDate><description><![CDATA[源地址：http://developer.android.com/training/basics/intents/result.html
启动另外一个activity的方法不止一个模式，你也可以启动一个activity同时可以获取这个activity最后的返回结果。想要获取到返回的结果，需要使用startActivityForResult()代替startActivity()来启动activit]]></description><category></category></item><item><title><![CDATA[Activity通信 之 把用户导向另外一个APP]]></title><link>https://blog.youkuaiyun.com/orionhan/article/details/8706794</link><guid>https://blog.youkuaiyun.com/orionhan/article/details/8706794</guid><author>orionhan</author><pubDate>Fri, 22 Mar 2013 15:58:39 +0800</pubDate><description><![CDATA[android 最重要的一个特性就是可以在一个APP的界面，利用”action”动作把用户导向另外一个APP。比方说，你的APP想在地图上展示一个商业地址，你不需要自己去创建一个activity来显示这个地图。可以Intent来创建一个请求来在地图上展示这个地址，android系统会根据这个intent来启动相应的地图应用，显示你要看的这个地址。
就像我们在第一节：创建你的第一个APP 里面说的]]></description><category></category></item><item><title><![CDATA[保存数据 之 SQL数据库]]></title><link>https://blog.youkuaiyun.com/orionhan/article/details/8700432</link><guid>https://blog.youkuaiyun.com/orionhan/article/details/8700432</guid><author>orionhan</author><pubDate>Thu, 21 Mar 2013 11:36:14 +0800</pubDate><description><![CDATA[把数据保存在数据库里里面，对于那些重复性的以及需要组织的数据，是一种理想的办法，比方说联系人信息。这一节假定对sQL操作有一定的了解，来讲解一下在android里面SQL的操作。android平台上操作SQL需要使用的API在android.database.sqlite这个包里面。、
定义架构和约定
在SQL里面一个最主要的规则就是架构：正式的指出数据库如何组织。架构反应在你当前使用的用来创]]></description><category></category></item></channel></rss>