- 浏览: 97419 次
- 性别:
- 来自: 成都
最新评论
-
meohao:
雨花台舞水 写道记笔记是好的,但iteye毕竟跟大家分享知识, ...
写在20120411:静态方法使用时注意事项 -
雨花台舞水:
记笔记是好的,但iteye毕竟跟大家分享知识,经验的不错的平台 ...
写在20120411:静态方法使用时注意事项 -
meohao:
只是找时间把之前的东东归档一下,呵呵!说不定哪天忘记了还可以看 ...
写在20111213:判断一个应用是否为系统应用 -
Coolala_cs:
最近很是清闲啊~出了很多这样的博客文章?好像回忆录一样...
写在20111213:判断一个应用是否为系统应用 -
lls17:
与现实中的追MM联系起来,更形象了。模式学起来也更有趣了~
追MM与23种设计模式
文章列表
写在20120524:aidl
- 博客分类:
- 工作历程点点滴滴
Android IDL =aidl 是一种idl(接口定义)语言,轻量级
它可以生成一段代码,可以使在一个Android设备上运行的两个进程使用内部通信进程进行交互。
1.建立一个aidl文件
package com.google.android.sample;
interface MDSInterface{
void playFile(int position);
};
2.aidl会自动生成一个接口文件,文件名和aidl文件名一致,生成的接口包括一个内部抽象类,名称为Stub.
MSDTnterface.Stub mBindler = new MSDTnterface.Stub(){
...
写在20120510:事件流程传递机制
- 博客分类:
- 工作历程点点滴滴
学习:博客《老罗的Android之旅》中的事件传递,了解详情可以去他的博客看看,很多经典详细的源码分析!值得一看。
在Android系统中,键盘按键事件是由WindowManagerService服务来管理的,然后再以消息的形式来分发给应用程序处理,不过和普通消息不一样,它是由硬件中断触发的; 在系统启动的时候,SystemServer会启动窗口管理服务WindowManagerService,WindowManagerService在启动的时候就会通过系统输入管理器InputManager来总负责监控键盘消息。这些键盘消息一般都是分发给当前激活的Activity窗口来处理的,因此,当前激 ...
在非UI线程中是不允许执行UI操作的,一般在非UI线程中可以采用Timer和handler来完成UI更新,或者直接用handler的postDelayed(),或者用AsyncTask(这里不展开)。其代码片段如下:
Handler mHandler = new Handler(){
public void handleMessage(Message msg) {
switch (msg.what) {
case MSG_TIMER:
setTitle("Timer"); ...
在使用PopupWindow时报如下错误:
android.view.WindowManager$BadTokenException: Unable to add window token null……
PopupWindow必须在某个事件中显示或者是开启一个新线程去调用,不能直接在onCreate方法中显示一个PopupWindow,否则永远会报错。
目前手机应用已经越来越多的用到了手势,其中Launcher中大家比较熟悉的就是屏幕缩略图,那么简单的实现就需要了解之前的那篇博客,关于ViewGroup和View的触屏事件的描述,这里也用到了比较重要的两个方法。onInterceptTouchEvent()和onTouchEvent()。
熟悉Launcher的人都会知道源码中会有一个DragLayer类,这个DragLayer是覆盖在WorkSpace上面的一层拖动层,那么要实现两只手指呈“捏”的手势,形成屏幕缩略图就得从该类做文章,重写onInterceptTouchEvent()、onTouchEvent()。
@over ...
Android4.0平台上第一次按Menu功能键未调用onPrepareOptionsMenu(),很诡异,一般在2.2/2.3的Android平台上,onCreateOptionsMenu()和onPrepareOptionsMenu()这两个函数在创建Activity的时候就会被依次被调用,但Android4.0平台上第一次按Menu功能键却怎么没有调用onPrepareOptionsMenu(),所以有些应用需要统一处理第一次动态改变的菜单问题。第一次按Menu键时都会执行onCreateOptionsMenu(),然后定义个成员mMenu来记录当前的状态,重写onKeyDown() ...
SQLite本身是区分大小写查询的,大部分数据库在进行字符串比较的时候,对大小写是不敏感的,但是在SQLite中,对大小写是敏感的。
那么有时候有这样的需求,让SQLite不区分大小写查询,那么有如下三种方式:
1.使用大小写转换函数LOWER、UPPER。
2.在进行比较时强制声明不区分大小写:"COLLATE NOCASE" 。
3.创建表时声明该字段不区分大小写。
这三种方式有相应的优缺点,那么下面是它们使用的场景:
1.如果任何情况都不需要大小写敏感,方式3就是最好的解决方案
2.如果只是少量查询对大小写不敏感,可以用方案2
3.方案一由于用到了函数,可能会有额外 ...
public void onClick(View v){}提示错误:必须实现抽象方法。
找了半天原来是利用自动导包工具导入的包张冠李戴了。
本来应该是import android.view.View.OnClickListener
却自动导入成了import android.content.DialogInterface.OnClickListener,
修改为上面的就OK了
静态方法中不能出现this,super之类的关键字
原因:静态对应的描述为属于某一个类,而this,super对应的描述属于某一个对象,编译的时候,会先编译静态的,所以在静态方法中调用this,super不合逻辑,引用不到当前的实例。
layout_weight的使用环境:
1.控件所在Layout必须是LinearLayout。
2.LinearLayout的orientation属性设置成"horizontal"
3.子控件的layout_weight属性设置为"fill_parent"
写在20120402:退出应用程序
- 博客分类:
- 工作历程点点滴滴
当用户点击自定义的退出按钮或者返回键时(需捕获动作),我们在onDestroy()里强制退出应用,或者直接杀死进程,具体操作的代码片段如下:
@override
protected void onDestroy(){
super.onDestroy();
System.exit(0);
//或者使用下面这种方式
//android.os.Process.killProcess(android.os.Process.mypid());
}
从某一个Activity跳转到Launcher的主界面(桌面)
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.addCategory(Intent.CATGORY_HOME);
startActivity(intent);
EditText et=new EditText("");
et.setFilters(new InputFilter[]{new InputFilter.lengthFilter(254)});
这样就对该编辑框的输入字符进行了限制,只能输入254个字符
android:layout_gravity="Center" 设置控件居中
android:gravity="Center" 设置文本居中
写在20120301:文本文件的编码格式
- 博客分类:
- 工作历程点点滴滴
怎样判断文本文件的编码格式?
不同编码的文本,是根据文本的前两个字节来定义其编码格式的:
ANSI: 无格式定义
Unicode:前两个字节为FFFE
Unicode big endian:前两个字节为FEFF
UTF-8:前两个字节为EFBB