Android 四.0-Launcher-FolderEdit-onKeyPreIme

Android 4.0-Launcher-FolderEdit-onKeyPreIme从这个星期开始看Android 4.0的code了。很久没有看source cod

Android 4.0-Launcher-FolderEdit-onKeyPreIme
从这个星期开始看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
我们看其源码:

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了。