一、如何实现“再按一次退出程序”
在需要退出的页面的Activity里 复写onKeyDown()方法 实现该功能。
具体代码:
//声明一个long类型变量;用于存放上一次点击“返回键”的时刻
private long mExitTime;
@Override
public boolean onKeyDown(in keyCode,KeyEvent event){
//判断用户是否点击了“返回键”
if(keyCode == KeyEvent.KEYCODE_BACK){
//与上次点击返回键时刻作差
if((System.currentTimeMillis() - mExitTime) > 2000){
//大于2000ms则认为是误操作,使用Toast进行提示
Toast.makeText(this,"再按一次退出程序",Toast.LENGTH_SHORT).show();
//记录下本次点击返回键的时间,以便下次进行判断
mExitTime = System.currentTimeMillis();
}else{
//小于2000ms认为是用户确实希望退出程序
System.exit(0);
}
return true;
}
return super.onKeyDown(keyCode, event);
}
二、点击程序空白处隐藏软键盘
具体代码:
/**
- 点击空白区域隐藏键盘.
*/
@Override
public boolean onTouchEvent(MotionEvent event) {
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
if (event.getAction() == MotionEvent.ACTION_DOWN) {
if (MainActivity.this.getCurrentFocus() != null) {
if (MainActivity.this.getCurrentFocus().getWindowToken() != null) {
imm.hideSoftInputFromWindow(MainActivity.this.getCurrentFocus().getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);
}
}
}
return super.onTouchEvent(event);
}
三、点击输入框,界面随键盘滑动效果
这样做的目的是为了防止界面的输入布局等被软键盘挡住。
第一步:在AndroidMainFest文件中配置软键盘的属性
android:windowSoftInputMode="stateVisible|adjustResize|stateAlwaysHidden"
第二步:在xml文件中加入scrollview包裹需要滑动的范围
第三步:在代码里设置键盘的setOnTouchListener监听
调用scrollview的滑动代码即可:
public void changeScrollView() {
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
mScrollView.scrollTo(0, mScrollView.getHeight() - ResourcesUtil.getDimenPxSize(R.dimen.dim_190_dp));
}
}, handlerTime);
}
此时,不再能使用第二种隐藏键盘的方法了。需要在根布局设置一个点击事件,再调用下面隐藏键盘的方法。
public static void hideSoftKeyboard(Activity taget) {
InputMethodManager manager = ((InputMethodManager) taget.getSystemService(Activity.INPUT_METHOD_SERVICE));
if (manager != null && taget.getCurrentFocus() != null) {
manager.hideSoftInputFromWindow(taget.getCurrentFocus().getWindowToken(), InputMethodManager.RESULT_UNCHANGED_SHOWN);
}
}