zoukankan      html  css  js  c++  java
  • 基础_ _返回键back

     

    ============ 2, android中的back键处理

    很多网友不明白,如何在Android平台上捕获Back键的事件。

    Back键是手机上的后退键,一般的软件不捕获相关信息可能导致你的程序被切换到后台,而回到桌面的尴尬情况,在Android上有两种方法来获取该按钮的事件。

      1.直接获取按钮按下事件,此方法兼容Android 1.0到Android 2.1 也是常规方法,直接重写Activity的onKeyDown方法即可,代码如下:

    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event)  {
        if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) { //按下的如果是BACK,同时没有重复
           Toast.makeText(ml78.this,"魔力去吧Back键测试",1).show();
            return true;
        }

        return super.onKeyDown(keyCode, event);
    }

    2、重写onBackPressed方法

     而对于Android 2.0开始又多出了一种新的方法,对于Activity 可以单独获取Back键的按下事件,直接重写onBackPressed方法即可,代码如下

    @Override
    public void onBackPressed() {
    // 这里处理逻辑代码,大家注意:该方法仅适用于2.0或更新版的sdk
    return;

    }

    此外,关于Android home键和back键区别

    back键
    Android的程序无需刻意的去退出,当你一按下手机的back键的时候,系统会默认调用程序栈中最上层Activity的Destroy()方法来,销毁当前Activity。当此Activity又被其它Activity启动起来的时候,会重新调用OnCreate()方法进行创建,当栈中所有Activity都弹出结束后,应用也就随之结束了.如果说程序中存在service之类的,则可以在恰当的位置监听处理下也就可以了.

                 
    home键
    Android程序的隐藏,当你按下手机的Home键的时候,系统会默认调用程序栈中最上层Activity的stop()方法,然后整个应用程序都会被隐藏起来,当你再次点击手机桌面上应用程序图标时,系统会调用最上层Activity的OnResume()方法,此时不会重新打开程序,而是直接进入,会直接显示程序栈中最上层的Activity.

     

    back键默认把当前Activity给finish,home键只是把Activity给onStop.

    实现按Home键时隐藏程序的效果:
    1:Android 2.0之前需要监听按键事件,进行判断是不是按下了back键
    2:Android 2.0之后系统提供了一个onBackPressed()方法,这个方法就是专门用来监听back键事件的,所以只需重写onBackPressed()方法即可

    @Override
    public void onBackPressed() { 
        //实现Home键效果 
        //super.onBackPressed();这句话一定要注掉,不然又去调用默认的back处理方式了 
        Intent i= new Intent(Intent.ACTION_MAIN); 
        i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
        i.addCategory(Intent.CATEGORY_HOME); 
        startActivity(i);  
    }

              

    退出应用程序的实现:可以自己写个方法,例如:

    public void exitProgrames(){ 
        Intent startMain = new Intent(Intent.ACTION_MAIN); 
        startMain.addCategory(Intent.CATEGORY_HOME); 
        startMain.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
        startActivity(startMain); 
        android.os.Process.killProcess(android.os.Process.myPid()); 
    }
    注意:需要添加权限:

     

    =============== 1, Android中OnkeyDown事件和OnBackPressed方法区别、兼容、使用

     

      在Android平台上捕获Back键的事件,Back键是手机上的后退键,一般的软件不捕获相关信息可能导致你的程序被切换到后台,而回到桌面的尴尬情况,在Android上有两种方法来获取该按钮的事件。

      1.直接获取按钮按下事件,此方法兼容Android 1.0到Android 2.1 也是常规方法,直接重写Activity的onKeyDown方法即可,代码如下:

    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event)  {
        if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) { //按下的如果是BACK,同时没有重复
           Toast.makeText(ml78.this,"返回键Back键测试",1).show();
            return true;
        }

        return super.onKeyDown(keyCode, event);
    }

    而对于Android 2.0开始又多出了一种新的方法,对于Activity 可以单独获取Back键的按下事件,直接重写onBackPressed方法即可,代码如下

    @Override
    public void onBackPressed() {
      // 这里处理逻辑代码,大家注意:该方法仅适用于2.0或更新版的sdk
    return;
    }

     

    同时还有一种情况,就是在以前开发的程序中使用的是onKeyDown方法,但是后续版本为了兼容OnBackPressed方法。就需要两者之间进行嵌套。具体的方法如下:

       @Override
       public boolean onKeyDown(int keyCode, KeyEvent event) {
       // 是否触发按键为back键
      if (keyCode == KeyEvent.KEYCODE_BACK) {
       onBackPressed();
       return true;
       } else {// 如果不是back键正常响应
       return super.onKeyDown(keyCode, event);
       }
      }

     

    利用时间差方法完成两次返回键退出,防止误操作。

    // 退出时间

        private long currentBackPressedTime = 0;

        // 退出间隔

        private static finalint BACK_PRESSED_INTERVAL = 2000;

         //重写onBackPressed()方法,继承自退出的方法

        @Override

        publicvoid onBackPressed() {

        // 判断时间间隔

        if (System.currentTimeMillis()- currentBackPressedTime > BACK_PRESSED_INTERVAL) {

            currentBackPressedTime = System.currentTimeMillis();

            Toast.makeText(this, "再按一次返回键退出程序", Toast.LENGTH_SHORT).show();

        } else {

            // 退出

            finish();

        }

    }

  • 相关阅读:
    对老师的评价以及课程建议
    每日日报
    每日日报
    每日日报
    每日日报
    每日日报
    每日日报
    每日日报
    关于matlab使用medfilt2报错
    Matlab中hold on与hold off的用法
  • 原文地址:https://www.cnblogs.com/awkflf11/p/5421496.html
Copyright © 2011-2022 走看看