从这个星期开始看Android 4.0的code了。很久没有看source code了,还是在09年和10年看的1.5版本,现在4.0已经出来,觉得这是一个重新切入的版本,毕竟他是Tablet和smart phones的统一版本.我选择学习的第一app是Launcher,在1.5的版本觉得它的是源码最多的一个,在4.0却是Gallery了。接下来我针对学习Launcher过程掌握到新的API和心得体会进行记录:
在Launcher中提供了Folder 这个功能,Folder还可以命名,其中命名的输入框就是一个EditText,在这里重载了EditText,重载类为:FolderEditText
我们看其源码:
在这个class里面Override了这个onKeyPreIme这个function,就是为了捕获back key event进行处理,也就是比IME输入法更早处理该Event.若以后我们要在EditText中处理Back key event,我们就可以重载该函数。若不重载,那系统就会先把back key event发给IME了。
在Launcher中提供了Folder 这个功能,Folder还可以命名,其中命名的输入框就是一个EditText,在这里重载了EditText,重载类为:FolderEditText
我们看其源码:
package com.android.launcher2;
import android.content.Context;
import android.util.AttributeSet;
import android.view.KeyEvent;
import android.widget.EditText;
public class FolderEditText extends EditText {
private Folder mFolder;
public FolderEditText(Context context) {
super(context);
}
public FolderEditText(Context context, AttributeSet attrs) {
super(context, attrs);
}
public FolderEditText(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
public void setFolder(Folder folder) {
mFolder = folder;
}
@Override
public boolean onKeyPreIme(int keyCode, KeyEvent event) {
// Catch the back button on the soft keyboard so that we can just close the activity
if (event.getKeyCode() == android.view.KeyEvent.KEYCODE_BACK) {
mFolder.doneEditingFolderName(true);
}
return super.onKeyPreIme(keyCode, event);
}
}
在这个class里面Override了这个onKeyPreIme这个function,就是为了捕获back key event进行处理,也就是比IME输入法更早处理该Event.若以后我们要在EditText中处理Back key event,我们就可以重载该函数。若不重载,那系统就会先把back key event发给IME了。