8月 062017
 

volatile保证共享变量在多程中的可见性

即一个共享变量在线程1中被修改在,在线程2中读取这个变量时,立即得到最新的值

volatile不能保证变量的原子性

 Posted by on 2017-08-06
7月 252017
 

关于monkey脚本所支持的事件,请参考android源码下的development/cmds/monkey/src/com/android/commands/monkey/MonkeySourceScript.java

如下:

 

 Posted by on 2017-07-25
7月 192017
 

滚动到底部:

滚动到顶部:

 

7月 142017
 

下面是我曾经使用过的感觉不错的Android开源框架,零零星星会做一些总结,如果大家有好的观点欢迎留言。

1. greenDao – 数据库对象关系映射(ORM)

github地址:https://github.com/greenrobot/greenDAO

2. logger – 日志记录类

github地址:https://github.com/orhanobut/logger

3. gson – json数据解析工具

github地址:https://github.com/google/gson

4. okhttp – 网络请求类

https://github.com/square/okhttp

 Posted by on 2017-07-14
6月 182017
 

1. 打开菜单Android Studio->Preferences…

2. 打开左侧导航列表Tools->External Tools

3. 点击增加外部工具按钮,在弹出的按钮输入下图中的内容:

4. 补充:去掉Open console for tool output前面的对勾

5.  点击ok完成后,我们在文件列表或者代码编辑器上方的文件名上右键,在菜单中选择”External Tools”,然后选择新建的工具就可以方便的在文件管理器中查看文件了

 Posted by on 2017-06-18
6月 162017
 

1. 打开菜单File->Settings

2. 打开左侧导航列表Tools->External Tools

3. 点击增加外部工具按钮,在弹出的按钮输入下图中的内容:

4. 补充:去掉Open console前面的对勾

5.  点击ok完成后,我们在文件列表或者代码编辑器上方的文件名上右键,在菜单中选择”External Tools”,然后选择新建的工具就可以方便的在文件管理器中查看文件了

 Posted by on 2017-06-16
6月 062017
 

  博文背景:博主要实现app的左侧导航按钮功能,因为要实现某个导航按钮被选中的效果,所以没有使用ListView,而是用的RadioGoup来实现.好,RadioGroup嵌套多个RadioButton很简单的实现了导航列表的功能.另外一个需求是给导航按钮们增加分隔线,博主首先使用RadioButton的drawableTop,分隔线不在最顶部,而且水平不居中,这个属性肯定是不行。然后比较笨的方法就是插入多个ImageView,设置图片为分隔线,但是……导航按钮多的话,这样做真的很麻烦。

  于是博主开始研究RadioGroup的属性,发现有一个divider属性,这在ListView里是分隔线的意思,于是给RadioGroup设置这个属性,运行程序,分隔线不显示,心想RadioGroup应该不支持这个属性,毕竟通常情况下divider是对List形式组件才有效的。再想想要加n个ImageView实在不甘心,度娘了一下,原来要再加个showDivider属性。

  showDivider有三个可选项,beginning、middle、end,分别对应最开始的分隔线,各RadioButton中间的分隔线,最结尾的分隔线。我们可以如下设置:

  不是true或者false哦 ;-) 

  下面是一个完整的Activity部局的xml代码,在你的res/drawable中放一个叫timg.png的图片,然后把下面代码粘贴到你的Activity的xml文件中,运行一下就可以看到效果了。

  注意事项:

  1. LinearLayout同样支持此属性,可能类似组件都支持
  2. 如果最开始或者最结尾的组件的visiblity为gone,则showDivider的beginning和end的选项无效
4月 082017
 

一、下载Android6.0源码

大家可以从清华的镜像站下载源码库,具体参数https://mirrors.tuna.tsinghua.edu.cn/help/AOSP/和网络上的教程

二、安装编译时需要的软件

直接连接Ubuntu速度比较慢,而且Ubuntu官方没有openjdk7的安装包了,所以更换更新源到国内的源,我把阿里和163的源都放进去了

1.先备份更新源

2. 增加阿里的源

3. 增加163的更新源

4. 执行一行apt-get update

5. 安装编译时需要的软件

三、开始编译

四、常见错误及解决办法

1.编译时出现unsupported reloc 43,解决方法如下:

It works to me:
in file /art/build/Android.common_build.mk, find out:

change to :

If it still not works,try this in your android root path: cp /usr/bin/ld.gold prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.11-4.6/x86_64-linux/bin/ld

 Posted by on 2017-04-08
3月 012017
 

  本文总结了几种常用的补间动画效果,具体的使用方法请参考网络上的其他文章:

  先总结几点注意事项:

  • 如果是多个动画组成的动画系统,duration值最好会设置成相同的,否则Activity切换的时候会出现黑底
  • overridePendingTransition有的时候需要rebuild项目才有效果

  1.放大效果(附加淡入效果)

  在res/anim目录下新建zoomin.xml,并粘贴下面的代码

  2.缩小效果(附加淡出效果)

  在res/anim目录新建zoomout.xml,并粘贴下面的代码

  3. 淡入效果

  在res/anim目录新建fadein.xml,并粘贴下面的代码

  4. 淡出效果

  在res/anim目录下新建fadeout.xml,并粘贴下面的代码

  5. 纵向布幕拉开效果(自中间往上下拉开)

  在res/anim目录下新建open_verticaly_from_middle.xml,并粘贴下面的代码

  6.纵向布幕关闭效果(自上下往中间关闭) 

  在res/anim目录下新建close_verticaly_to_middle.xml,并粘贴下面的代码

  7. 从顶部进入

  在res/anim中建立文件slide_in_from_top.xml, 并粘贴下面的代码

  8. 从底部进入

  在res/anim中新建文件slide_in_from_bottom.xml, 并粘贴下面的代码

  9. 从顶部划出

  在res/anim中新建文件slide_out_to_top.xml, 并粘贴下面的代码

  10. 从底部划出

  在res/anim中新建文件slide_out_to_bottom.xml, 并粘贴下面的代码

 

 

 Posted by on 2017-03-01
2月 202017
 

1.什么场景下需要使用HandlerThread

1). 比较耗时,不易于放在主线程中执行的操作(不考虑第2点使用其他线程方式也可以)

2). 有多个耗时操作需要后台执行(如果不嫌麻烦也可以考虑使用多个TThread)

2.HandlerThread的使用步骤

1). 创建HandlerThread对象

2). 执行start方法,启动HandlerThread的Looper循环

3). 在主线程中创建Handler对象并引用HandlerTherad的looper

4). 在Handler对象中加入各种消息的处理

5). 在需要的时候给步骤3创建的Handler对象发送消息

6). 不再需要HandlerThread的时候调用quit或者quitSafely停止HandlerThread

示例代码如下(没做各种错误处理,仅供参考):

测试时多次点击Download1和Download2按钮,handler对象就会按点击的顺序多次下载网页baid.com和bcoder.com

3. 要不要像Thread那样写一个HandlerThread的子类?

完全没有必要,因为真正程序执行部分都在handler的消息处理里

4. quit和quitSafely的区别?

 

5. HandlerThread的其它特点

1). HandlerThread中的多个操作是串行按序执行的,即任务1\任务2\任务3....,所以如果你想尽早的获得运行结果,不建议使用HandlerThread这种方式

6. 测试代码下载

LocaleTest