bcoder

7月 262015
 

  今天被一个简单的selector对象给坑了,设置了state_pressed的drawable,但是死活都没有反应,后来在网上搜索,原来几个状态的顺序是很重要的!

  android在匹配状态的时候,从上到下开始匹配,如果匹配到合适的状态就终止了,所以正常状态一定要放到最下面,否则其他的状态可能不会被显示。

  如下代码:

  正常的状态一定要放在最下面,其他的状态根据情况排序。

7月 242015
 

  在Android4.0之前,服务是可以在开机时自动运行的,但是在Android4.0以后,为了安全起见,防止一些非法的后台服务在开机后自动运行,用户必须打开一个Activity后才可以启动服务。

  那么我们想想,如果我们不是做一些非法的操作是否可以有其他的变通方法解决这个问题呢。

  如果是要更新桌面小组件的数据,那么我们可以在小组件服务创建时启动数据更新服务,如下:

 *
Android4.0之前设置服务开机自启动的方法

  首先AndroidManifest.xml中加入

  创建用于接收RECEIVE_BOOT_COMPLETED广播的BroadcastReceiver类

  在AndroidManifest.xml中声明这个receiver类

  BOOT_COMPLETED:当系统启动完成时发送这个广播
  QUICKBOOT_POWERON:HTC的一些手机有快速启动,这个action是针对快速启动情况的
  ACTION_EXTERNAL_APPLICATIONS_AVAILABLE:这个action是针对程序安装到sd卡的时候,sd卡上的应用加载完成时发送此广播

7月 232015
 

话不多说,先上代码:

首先在AndroidManifest.xml中申请WakeLock权限

然后在你需要保持系统一直运行的地方写下面的代码:

原理:

PowerManager,手机的电源管理相关组件。 WakeLock,用于程序控制是否一直保持手机运行状态组件。WakeLock的保持运行共包括四个类型,最好使用比较低的级别,以降低手机电池的使用量。

Flag值 CPU 屏幕 键盘
PARTIAL_WAKE_LOCK On* Off Off
SCREEN_DIM_WAKE_LOCK On Dim Off
SCREEN_BRIGHT_WAKE_LOCK On Bright Off
FULL_WAKE_LOCK On Bright Bright

所有的类型CPU都是保持运行,屏幕和键盘分为关闭、暗光、亮光三个级别,我们经常用的应该是PARTIAL_WAKE_LOCK,保持CPU运行就行了。

在服务类中的使用

对于编写的android服务,在手机锁屏休眠后,服务也可能会停止运行,我们可以使用此方法让服务保持运行,但代码写法和上面稍有不同。如下:

http://svn1.bcoder.com

 

7月 222015
 

在Android中添加子菜单的方法很简单,只要在设计菜单的时候给菜单的item增加menu子节点就可以,菜单设计文件的xml代码如下:

在Activity中的响应代码和正常的菜单一样,如下:

这种下拉菜单的缺点就是子菜单的位置无法控制。

7月 202015
 

注:本文中的例子是在Python3.4.3环境下测试通过的

一、基本使用方法

1. 声明:mylist=dict()
2. 直接初始化声明:不同键值用逗号分隔,一组中的键和值用冒号分开,值得说明的是dict的值可以是整数、字符串或者其他类型对象,甚至是另外一个dict对象

3. 添加或者修改某一项:mylist[“key”]=”value”,如果不存在则新增一项,如果存在则修改那一项
4. 删除某一项:del mylist[“key”]
5. 遍历方法1:遍历所有的key值

6. 遍历方法2:遍历所有的values值

7. 遍历方法3:使用items()遍历所有的key和value值

8. 字典的嵌套:字典中的值可以为另外一个字典,如下例:

9. 输出key列表:print (mylist.keys())
10. 输出值列表:print (mylist.values())
11. get函数的使用:使用mylist[“key”]当要取的key值不存在的时候会报错,使用get函数则不存在的时候返回None

12. 字典的合并:如果有两个字典,想把其中一个合并到另外一个,实用update函数

13. 字典的排序:因为不知道怎么支持中文,所以先用的英文例子

14. 字典的浅拷贝:使用copy()函数

15. 字典的深拷贝:使用copy.deepcopy()函数,注:python3.4.3中copy()函数即可拷贝嵌套的字典

 

7月 142015
 

使用nohup命令运行一个Python程序时,只生成了nohup.out文件,但是print的内容却都没有保存到nohup.out中,使用的命令如下:

经过在网上查询,需要在python命令后加一个-u参数才可以,正确的命令如下:

 

7月 112015
 

1. 在AndroidManifest.xml中加入以下权限

2. 注册网络变化监听事件,在AndroidManifest.xml中加入以下代码

android:name的值为NetworkChangeReceiver为类名

3,实现NetworkChangerReceiver类

 

7月 062015
 

  在Android Virtual Device Manager中打开一个Android模拟器,可以通过Ctrl+F11或者Ctrl+F12来切换模拟器的横竖屏,在Windows7+Eclipse环境下这两个快捷键功能一样,不知道为什么如此设置。如下图:

20160306151308

  按Ctrl+F11或者Ctrl+F12后变为横屏效果

20160306151332

  再按一次快捷键恢复到竖屏效果

 

 

 Posted by on 2015-07-06
6月 202015
 

注意:在Java8中默认使用StringBuilder进行字符串进行拼接

下面代码对字符串进行10000次加号连接和StringBuilder连接操作:

最后得到的结果如下:

由此可见效率差了80倍

注意:

  1. StringBuffer为线程安全的字符串操作类,由于需要处理多线程同步问题,效率比StringBuilder要低
 Posted by on 2015-06-20
5月 162015
 

  因为在国内无法访问android的官方网站以及dl-ssl.google.com,所以在Eclipse中使用Help->Install New Software,然后在Work with里输入插件地址安装Android adt的办法根本行不通。

  那么我们只能通过下载adt的插件包,然后手动添加的方式进行添加,下面将详细办法介绍如下:

  1. 首先需要下载adt离线包,一般为zip压缩包文件

  2. 同时下载android sdk的压缩包

  2. 打开Eclipse,点击菜单Help->Install New Software进入插件安装窗口

  3. 点击”Work with”最右侧的”Add…”按钮

20151216205441

  4. 在弹出的窗口中,点击”Archive…”按钮,选择下载的adt离线包文件,在”Name:”框中输入名字,比如”android_adt”,点 “OK”按钮

20151216225801

 

  5. 这时Install New Software窗口中间的列表框就显示可安装的插件了,选中要安装的插件,然后点”Next”按钮。

  6. 选择”I accept the terms of the license agreements”,然后点击”Finish”按钮,等候安装完成。

20151216233518

  7. 安装过程中可能提示这个安全警告,点击”OK”按钮即可。

20151216233941

  8. 安装完成,提示重启Eclipse,点击”Yes”按钮重启Eclipse

20151216234055

  9. 重启完成后,选择菜单Help->Install New Software,在弹出的窗口中选择链接”already installed”

20151216234246

  10. 这时在弹出的窗口中就可以看到安装好的插件了,如下图所示

20151216234438

  11. adt插件的安装过程就完成了,下面设置android sdk的路径,加到Eclipse主界面,选择菜单Window->Preferences,弹出下面的窗口,在左边的导航栏中选”Android”,在右边的SDK Location中输入下载好的android sdk的路径,点击”OK”按钮,重启Eclipse,根据提示打开SDK Manager更新android sdk就可以了

20151216234930

  12. 关于sdk更新的提醒,如果无法下载可以更改SDK Manager一些选项试一下,在SDK Manager中选择菜单Tools->Options

20151216235158

  13. 选项中的设置可以根据下图设置,代理服务器使用mirrors.neusoft.edu.cn,端口80;”Force https:// sources to be fetched using http://”选项打上勾,修改后重启SDK Manger进行尝试

20151216235335