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

你可能感兴趣的:(android)