bcoder

12月 032015
 

  今天在ubuntu中安装Java SDK的时候,需要在bashrc中修改环境变量,但是输入的时候有错误,PATH变量不对了,所以执行sourch ~/.bashrc后,很多命令都不能用了。因为命令找不到相应的路径了。

  想用vi命令把bashrc文件改回来,悲催的是……vi命令用不了了,提示command not found,对,PATH变量坏掉了,没了vi命令的引用路径了

  网上搜了很多办法,都不能解决,后来想使用vi的绝对路径不就可以了?对,vi命令的绝对路径可能是以下几种

  /bin/vi 或者/usr/bin/vi 或者 /usr/bin/vim

  使用绝对路径修改bashrc后,重启系统,其他命令也可以正常使用了

 

12月 032015
 

使用apt-get下载软件慢的话,可以换成国内的一些源,这样就可以节省很多时间了

修改方法:

1. 先备份系统的源文件,然后编辑源列表文件

cp /etc/apt/sources.list /etc/apt/sources.list.bak
vi /etc/apt/sources.list

在打开的编辑器中加入以下内容

deb http://mirrors.sohu.com/ubuntu/ precise-updates main restricted
deb-src http://mirrors.sohu.com/ubuntu/ precise-updates main restricted
deb http://mirrors.sohu.com/ubuntu/ precise universe
deb-src http://mirrors.sohu.com/ubuntu/ precise universe
deb http://mirrors.sohu.com/ubuntu/ precise-updates universe
deb-src http://mirrors.sohu.com/ubuntu/ precise-updates universe
deb http://mirrors.sohu.com/ubuntu/ precise multiverse
deb-src http://mirrors.sohu.com/ubuntu/ precise multiverse
deb http://mirrors.sohu.com/ubuntu/ precise-updates multiverse
deb-src http://mirrors.sohu.com/ubuntu/ precise-updates multiverse
deb http://mirrors.sohu.com/ubuntu/ precise-backports main restricted universe multiverse
deb-src http://mirrors.sohu.com/ubuntu/ precise-backports main restricted universe multiverse

网易源:

deb http://mirrors.163.com/ubuntu/ precise-updates main restricted
deb-src http://mirrors.163.com/ubuntu/ precise-updates main restricted
deb http://mirrors.163.com/ubuntu/ precise universe
deb-src http://mirrors.163.com/ubuntu/ precise universe
deb http://mirrors.163.com/ubuntu/ precise-updates universe
deb-src http://mirrors.163.com/ubuntu/ precise-updates universe
deb http://mirrors.163.com/ubuntu/ precise multiverse
deb-src http://mirrors.163.com/ubuntu/ precise multiverse
deb http://mirrors.163.com/ubuntu/ precise-updates multiverse
deb-src http://mirrors.163.com/ubuntu/ precise-updates multiverse
deb http://mirrors.163.com/ubuntu/ precise-backports main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ precise-backports main restricted universe multiverse

保存文件,再试试下面的命令

sudo apt-get update
sudo apt-get upgrade

11月 122015
 

  在Delphi中使用的颜色值(TColor),同步到安卓后颜色不对了,因为没使用#FFFFFF这种16进制使用颜色,所以只能自己想办法转换了,经过研究下面的java代码转换成功:

  因为Java中的byte是有符号的,范围是-127-128,所以要使用& 0xff转换为0-255之间的值。

11月 102015
 

注意:在有的系统上不能用,不!知!道!为!什!么! 

首先在res下建立anim目录,然后在anim目录里添加相应的动画资源,本文章添加了两个动画资源,如下:

zoomin.xml

zoomout.xml

然后在style.xml中建立一个样式,如下:

注意一定要继承自@android:style/Animation.Translucent

然后在Activity的主题样式里引用这个样式

最后在AndroidManifest.xml把想使用这个动画的Activity设置成这个主题就好了,如下:

 

 Posted by on 2015-11-10

Android中监听返回键

 分类:Android, Java 阅读 (1,641)  No Responses »
8月 242015
 

在Activity中的onKeyDown事件中处理,代码如下:

另外,如果只是处理返回键的控制,也可以使用Activity的onBackPressed事件来处理,代码如下:

 

8月 042015
 

  默认情况下,当Android应用横竖屏切换时,Activity会销毁后并重新创建,依次执行OnPause->OnSaveInstance->OnStop->OnDestroy->OnCreate->OnStart->OnResume。 网上流传的防止Activity横竖屏切换重新创建的方法是设置android:configChanges=”keyboardHidden|orientation”,但是笔者测试发现,对于运行于Android api版本10之后的版本不再需要keyboardHidden,但是为了兼容肯定还是要加上此项;而对于项目的targetVersion大于等于13的,必须在此参数中再加上一个screenSize才可以,因为13版本以上切换横竖屏时也会触发屏幕尺寸的变化。

  因此,笔者对各种情况的生命周期总结如下:

  1)对于不设置configChanges或者设置configChanges=”orientation”的,横竖屏切换时重新创建Activity,依次执行OnPause->OnSaveInstance->OnStop->OnDestroy->OnCreate->OnStart->OnResume

  2)设置android:configChanges=”orientation|keyboardHidden|screenSize”后,横竖屏切换时不会重新创建Activity,只会执行Activity的onConfigurationChanged事件

  官方参考文档:http://developer.android.com/guide/topics/manifest/activity-element.html#config

 

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