package com.thankcreate.care.control;
import android.app.Activity;
import android.content.Context;
import android.util.AttributeSet;
import android.view.KeyEvent;
import android.widget.LinearLayout;
/**
* 这个类是用来重载back按键的
* 如果当前activity中有软键盘出现,第一次按back时只是关软键盘,第二次才返回
* 用这个类可以一次性返回
* @author ThankCreate
*/
public class BackKeyLinearLayout extends LinearLayout {
Activity activity;
public BackKeyLinearLayout(Context context, AttributeSet attrs) {
super(context, attrs);
}
public BackKeyLinearLayout(Context context) {
super(context);
}
public void setActivity(Activity activity)
{
this.activity = activity;
}
@Override
public boolean dispatchKeyEventPreIme(KeyEvent event) {
if (activity != null &&
event.getKeyCode() == KeyEvent.KEYCODE_BACK) {
KeyEvent.DispatcherState state = getKeyDispatcherState();
if (state != null) {
if (event.getAction() == KeyEvent.ACTION_DOWN
&& event.getRepeatCount() == 0) {
state.startTracking(event, this);
return true;
} else if (event.getAction() == KeyEvent.ACTION_UP
&& !event.isCanceled() && state.isTracking(event)) {
activity.onBackPressed();
return true;
}
}
}
return super.dispatchKeyEventPreIme(event);
}
}