<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[hookfeng的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/hookfeng</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; hookfeng]]></copyright><item><title><![CDATA[Android录音--AudioRecord、MediaRecorder]]></title><link>https://blog.youkuaiyun.com/hookfeng/article/details/53861447</link><guid>https://blog.youkuaiyun.com/hookfeng/article/details/53861447</guid><author>hookfeng</author><pubDate>Sat, 24 Dec 2016 18:13:19 +0800</pubDate><description><![CDATA[Android提供了两个API用于实现录音功能：android.media.AudioRecord、android.media.MediaRecorder。

    网上有很多谈论这两个类的资料。现在大致总结下：

1、AudioRecord

主要是实现边录边播（AudioRecord+AudioTrack）以及对音频的实时处理（如会说话的汤姆猫、语音）

优点：语音的实时处理]]></description><category></category></item><item><title><![CDATA[android动画（一）Interpolator]]></title><link>https://blog.youkuaiyun.com/hookfeng/article/details/53672756</link><guid>https://blog.youkuaiyun.com/hookfeng/article/details/53672756</guid><author>hookfeng</author><pubDate>Thu, 15 Dec 2016 17:05:55 +0800</pubDate><description><![CDATA[一：简介
interpolator可以翻译成插值器。
Android中interpolator最底层的接口如下：


package android.animation;

/**
 * 时间插值器定义了一个动画的变化率。
 * 这让动画让非线性的移动轨迹，例如加速和减速。
 * 
 * A time interpolator defines the rate of change of ]]></description><category></category></item><item><title><![CDATA[ImageView.ScaleType设置图解]]></title><link>https://blog.youkuaiyun.com/hookfeng/article/details/53444893</link><guid>https://blog.youkuaiyun.com/hookfeng/article/details/53444893</guid><author>hookfeng</author><pubDate>Sat, 03 Dec 2016 15:27:07 +0800</pubDate><description><![CDATA[图文相配很清晰的看出每个属性的效果，

感觉 CENTER_CROP 比较有用，长宽自动适应 ImageView ，整个图片自动缩略填充整个区域且居中显示（高宽不一定是view的尺寸），以前用JS在网页上实现的，在

Android上一开始还在想要用Java来自己实现这个效果太麻烦了，没想到系统自带方便多了





ImageView的Scaletype决定了图片在View上]]></description><category></category></item><item><title><![CDATA[SwitchButton 开关按钮 的多种实现方式]]></title><link>https://blog.youkuaiyun.com/hookfeng/article/details/53321031</link><guid>https://blog.youkuaiyun.com/hookfeng/article/details/53321031</guid><author>hookfeng</author><pubDate>Thu, 24 Nov 2016 15:31:53 +0800</pubDate><description><![CDATA[这篇文章不错：http://blog.youkuaiyun.com/vipzjyno1/article/details/23707149]]></description><category></category></item><item><title><![CDATA[Andriod给textview文本关键字循环标亮加粗]]></title><link>https://blog.youkuaiyun.com/hookfeng/article/details/53141588</link><guid>https://blog.youkuaiyun.com/hookfeng/article/details/53141588</guid><author>hookfeng</author><pubDate>Sat, 12 Nov 2016 16:44:11 +0800</pubDate><description><![CDATA[在开发中，搜索到得关键字信息在展示时，通常需要标亮加粗，如下图（截取自蓝鲸医生助手搜索后的结果）

　　

　　在文本中，关键字是“嘎”，所有“嘎”字都标亮加粗，标亮就是换种颜色。这里就要用到SpannableStringBuilder。首先SpannableString、SpannableStringBuilder基本上与String差不多，也是用来存储字符串，但它们俩的特殊就在于有一个]]></description><category></category></item><item><title><![CDATA[Animation动画中rotate scale的 pivot属性]]></title><link>https://blog.youkuaiyun.com/hookfeng/article/details/52443808</link><guid>https://blog.youkuaiyun.com/hookfeng/article/details/52443808</guid><author>hookfeng</author><pubDate>Mon, 05 Sep 2016 21:21:01 +0800</pubDate><description><![CDATA[android Animation动画中rotate scale的 pivot属性




pivotX 属性：为动画相对于物件的X坐标的开始位置
pivotY 属性：为动画相对于物件的Y坐标的开始位置 
说明: 以上两个属性值 从 (+/-)0%- (+/-)100%中取值
        50%为物件的X或Y方向坐标上的中点位置

android:pivotX="50"使用]]></description><category></category></item><item><title><![CDATA[Android动画之translate(位移动画)]]></title><link>https://blog.youkuaiyun.com/hookfeng/article/details/52443773</link><guid>https://blog.youkuaiyun.com/hookfeng/article/details/52443773</guid><author>hookfeng</author><pubDate>Mon, 05 Sep 2016 21:17:10 +0800</pubDate><description><![CDATA[Activity的切换效果使用的是Android的动画效果，Android的动画在官方有相关资料：http://developer.android.com/guide/topics/graphics/animation.html和http://developer.android.com/guide/topics/resources/animation-resource.html ，Activity]]></description><category></category></item><item><title><![CDATA[正确使用Android性能分析工具——TraceView]]></title><link>https://blog.youkuaiyun.com/hookfeng/article/details/52440538</link><guid>https://blog.youkuaiyun.com/hookfeng/article/details/52440538</guid><author>hookfeng</author><pubDate>Mon, 05 Sep 2016 15:20:31 +0800</pubDate><description><![CDATA[前面唠叨

最近公司app中有些列表在滑动的时候会有卡顿现象，我就开始着手解决这些问题，解决问题之前首先要分析列表滑动的性能瓶颈在什么地方。因为之前不会正确使用TraceView这个工具，主要是看不懂TraceView界面下方数据指标的值代表什么意思…以前我用StopWatch类来分析性能，现在觉得弱爆了…不过有些地方StopWatch工具类还是很简单好用的~

网上可以找了很多博客来介绍]]></description><category></category></item><item><title><![CDATA[Android学习系列(4)--App自适应draw9patch不失真背景]]></title><link>https://blog.youkuaiyun.com/hookfeng/article/details/52388584</link><guid>https://blog.youkuaiyun.com/hookfeng/article/details/52388584</guid><author>hookfeng</author><pubDate>Wed, 31 Aug 2016 20:44:55 +0800</pubDate><description><![CDATA[做人要大度，海纳百川，做事要圆滑，左右逢源，这让我想到了编程也是如此，代码要扩展，界面也要考虑自适应。
这篇文章是android开发人员的必备知识，是我特别为大家整理和总结的，不求完美，但是有用。

1.背景自适应且不失真问题的存在
      制作自适应背景图片是UI开发的一个广泛问题，也是界面设计师渴望解决的问题，我相信我们彼此都深有体会。
      比如,列表的背景图一定，但是列]]></description><category></category></item><item><title><![CDATA[Java_字符编码（Unicode、UTF-8、UTF-16）]]></title><link>https://blog.youkuaiyun.com/hookfeng/article/details/51853227</link><guid>https://blog.youkuaiyun.com/hookfeng/article/details/51853227</guid><author>hookfeng</author><pubDate>Thu, 07 Jul 2016 17:54:21 +0800</pubDate><description><![CDATA[首先看一下下面的程序（测试英文和中文在Unicode、UTF-8、UTF-16这三种编码下，一个字符占几个字节）





[java] view
 plain copy






System.out.println("a(Unicode)    ：" + "a".getBytes("Unicode").length);  
System.out.println(]]></description><category></category></item><item><title><![CDATA[Java内存泄漏发生的情况]]></title><link>https://blog.youkuaiyun.com/hookfeng/article/details/51670899</link><guid>https://blog.youkuaiyun.com/hookfeng/article/details/51670899</guid><author>hookfeng</author><pubDate>Tue, 14 Jun 2016 13:11:24 +0800</pubDate><description><![CDATA[虽然Java自带垃圾回收机制（GC），程序员不需要手动进行内存管理，但是仍然会出现内存泄漏的情况。尽管如此，Java的自动内存管理，比起C/C++，内存泄漏的情况大大减少了。下面总结下什么情况下会发生Java内存泄漏。
静态集合类
在使用Set、Vector、HashMap等集合类的时候需要特别注意，有可能会发生内存泄漏。当这些集合被定义成静态的时候，由于它们的生命周期跟应用程序一样长，这时候]]></description><category></category></item><item><title><![CDATA[在 JNI 编程中避免内存泄漏]]></title><link>https://blog.youkuaiyun.com/hookfeng/article/details/51670864</link><guid>https://blog.youkuaiyun.com/hookfeng/article/details/51670864</guid><author>hookfeng</author><pubDate>Tue, 14 Jun 2016 13:03:13 +0800</pubDate><description><![CDATA[本文详细论述如何在 JNI 编程中避免内存泄漏。论述了 JNI 编程中可能引发的明显的内存泄漏。本文的重点是阐述 JNI 编程中潜在的内存泄漏，希望读者通过本文对 Local reference 有更深刻的理解，了解 Local reference 表的存在，区分 Local reference 和局部变量，从而认识到 Local reference 可能引发的 native memory 内存泄]]></description><category></category></item><item><title><![CDATA[Android java 中如何优雅的结束线程]]></title><link>https://blog.youkuaiyun.com/hookfeng/article/details/51540386</link><guid>https://blog.youkuaiyun.com/hookfeng/article/details/51540386</guid><author>hookfeng</author><pubDate>Mon, 30 May 2016 19:15:02 +0800</pubDate><description><![CDATA[线程对象属于一次性消耗品，一般线程执行完run方法之后，线程就正常结束了，线程结束之后就报废了，不能再次start，只能新建一个线程对象。但有时run方法是永远不会结束的。例如在程序中使用线程进行Socket监听请求，或是其他的需要循环处理的任务。在这种情况下，一般是将这些任务放在一个循环中，如while循环。当需要结束线程时，如何退出线程呢？

有三种方法可以结束线程：

1. 使用退出]]></description><category></category></item><item><title><![CDATA[学习unity]]></title><link>https://blog.youkuaiyun.com/hookfeng/article/details/50452418</link><guid>https://blog.youkuaiyun.com/hookfeng/article/details/50452418</guid><author>hookfeng</author><pubDate>Sun, 03 Jan 2016 20:30:33 +0800</pubDate><description><![CDATA[通过一段时间的学习，对unity逐渐熟悉。但越学习越觉得不懂的东西太多，还需要多多努力，希望有个好结果。]]></description><category></category></item><item><title><![CDATA[mysql-python安装时EnvironmentError: mysql_config not found]]></title><link>https://blog.youkuaiyun.com/hookfeng/article/details/41284159</link><guid>https://blog.youkuaiyun.com/hookfeng/article/details/41284159</guid><author>hookfeng</author><pubDate>Wed, 19 Nov 2014 16:47:03 +0800</pubDate><description><![CDATA[在安装 mysql-python时，会出现：


sh: mysql_config: not found
Traceback (most recent call last):
  File "setup.py", line 15, in 
    metadata, options = get_config()
  File "/home/zhxia/apps/source/MySQL-py]]></description><category></category></item><item><title><![CDATA[Android 动态注册短信拦截]]></title><link>https://blog.youkuaiyun.com/hookfeng/article/details/41047723</link><guid>https://blog.youkuaiyun.com/hookfeng/article/details/41047723</guid><author>hookfeng</author><pubDate>Wed, 12 Nov 2014 18:10:35 +0800</pubDate><description><![CDATA[前段时间研究短信拦截.涉及广播动态注册这一快.

一点心得,记录下来.

 

短信拦截原理: android系统在接收到短信后,会进行判读有没有应用监听着短信接收广播,有的话则先传给用户应用进行处理,应用处理完后再传给系统短信,如果谁都不监听的话,则把短信调用系统本身的短信APP.

 

广播注册一共有两种形式 : 一个是静态注册广播, 一个是动态注册广播.

两者及其]]></description><category></category></item><item><title><![CDATA[基于Ubuntu 14.04 LTS编译Android4.4.2源代码]]></title><link>https://blog.youkuaiyun.com/hookfeng/article/details/40581939</link><guid>https://blog.youkuaiyun.com/hookfeng/article/details/40581939</guid><author>hookfeng</author><pubDate>Wed, 29 Oct 2014 10:01:04 +0800</pubDate><description><![CDATA[基于Ubuntu 14.04 LTS编译Android4.4.2源代码
        Dennis Hu 2014-4-21

环境准备：


基本环境：ubuntu-14.04-desktop-64bit LTS(裸机或者Windows下虚拟机安装均可，12.04也可以，但10.04目前不支持了)

其他要求：空闲磁盘空间100G以上，代码部分接近10G，其他为git和编译中间]]></description><category></category></item><item><title><![CDATA[编译android-4.3.1_r源码并刷到自己的Galaxy Nexus I9250真机上]]></title><link>https://blog.youkuaiyun.com/hookfeng/article/details/40377573</link><guid>https://blog.youkuaiyun.com/hookfeng/article/details/40377573</guid><author>hookfeng</author><pubDate>Wed, 22 Oct 2014 15:47:47 +0800</pubDate><description><![CDATA[编译android-4.3.1_r源码并刷到自己的Galaxy Nexus I9250真机上

作者：雨水  日期：2014-04-30




编译源代码的目的还是为了自己修改源代码，然后还能够运行在相应的手机上，只有这样才有意义.  我手上有一部三星的Galaxy Nexus I9250, 代号为maguro。但是在目前google的官方未提供针对android4.4.2版本所对]]></description><category></category></item><item><title><![CDATA[Android线程：Message和Runnable]]></title><link>https://blog.youkuaiyun.com/hookfeng/article/details/40156667</link><guid>https://blog.youkuaiyun.com/hookfeng/article/details/40156667</guid><author>hookfeng</author><pubDate>Thu, 16 Oct 2014 21:33:58 +0800</pubDate><description><![CDATA[程序需要相应用户的操作，最要能在200ms（0.2s）之内，如果超过5秒没有反应，ActivityManager会没有提示就kill了activity。然而，activity可能真的需要时间来进行处理，这往往会用到后台线程-background thread。后台线程可以安全地和UI线程进行交互，其中后台线程是不能修改UI的。我不太确切知晓“不能修改UI”到何种程度，例如在下面的例子进度条状态的修]]></description><category></category></item><item><title><![CDATA[Android解析XML文件]]></title><link>https://blog.youkuaiyun.com/hookfeng/article/details/39989095</link><guid>https://blog.youkuaiyun.com/hookfeng/article/details/39989095</guid><author>hookfeng</author><pubDate>Sat, 11 Oct 2014 09:43:10 +0800</pubDate><description><![CDATA[一、在Android应用中的XML文件来源
1、本地xml文件
    本地XML文件可以放在应用根目录assets文件夹、res/xml、res/raw、SDcard卡、应用的data目录等；
除res/xml可直接通过getXml(int id)获取XML文档，返回一个解析器对象（XmlResourceParer：XmlResourceParer是XmlPullParser的子类），其它]]></description><category></category></item></channel></rss>