黑马程序员技术交流社区

标题: 提高你的Android程序的用户体验,巧用back键 [打印本页]

作者: 真真姐    时间: 2012-4-21 22:57
标题: 提高你的Android程序的用户体验,巧用back键
本帖最后由 真真姐 于 2012-10-21 14:27 编辑

在上一篇文章中我们提到了如何避免用户多次重复点击按钮重复弹框的问题(详情请见上一贴http://bbs.itheima.com/thread-12644-1-1.html
最后提到了:这个方法还给返回键代来了两种便利,具体是什么便利呢!
便利一:一般用惯了浏览器,特别是手机浏览器,如UC浏览器的用户,使用返回键几乎成了一种习惯,
              在Androd程序上,有了Activity栈,能让用户很方便的返回之前浏览的Activity,但是如果重复点击了一个按钮出来很多的同样的Activity的话
             自然返回的内容是一样的,当然影响用户体验;有了我们提供的方法自然很便捷避免了这个错误!
(小贴士;在设计这类的应用的时候尽量使用TabHost,既能提高效率,又可以避免这个问题)

便利二:同时跟一个中转界面配合使用的话,可以实现返回按钮双重作用,也就是,返回浏览,退出拦截双重功效,透漏一点,很多应用现在还没有这个功能啊!
             我们在主Activity之前建立一个WelcomeActivity,其中利用生命周期(需要自己加上当前WelcomeActivity 不被系统自动销毁的说明)
部分代码:
       public class Welcome extends BaseActivity {        public static int counter = 0;

        protected void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.welcome);
                final Intent intent = new Intent(this, HomeActivity.class); // 你要转向的Activity

                Timer timer = new Timer();      // 这个很关键,需要的朋友可以看看 实现2秒后自动跳转,很实用
                TimerTask task = new TimerTask() {
                        @Override
                        public void run() {
                                Bundle bundle = new Bundle();
                                bundle.putString("bookType", "home");
                                intent.putExtra("bookType", bundle);
                                startActivity(intent); // 执行
                        }
                };
                timer.schedule(task, 2000); // 2秒后

        }
        protected void onRestart() { //返回到这个界面就判断
                counter = 0;
                 new DialogManager(this).getLogoutDialogA();     // 自定义的dialog拦截退出
                super.onRestart();
        }
        protected void onStop() {
                counter = 2;
                super.onStop();
        }

// 发现了用这种方法拦截的 back键的退出,甚至用不到系统定义的返回键的监听代码

public boolean onKeyDown(int keyCode, KeyEvent event) {      // BaseActivity中的方法
                if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0 && Welcome.counter==0){   //  没有前面的判断的话 菜单键点击也是退出的功能
                }
                return super.onKeyDown(keyCode, event);
        }

很方便仍然是不要很复杂的代码,实现了back按钮的返回浏览,退出关闭双重的作用!  

敝人钻研出的方法,纯手工制作,欢迎借鉴,如有幸被转载请注明出处!申请技术分!请老师核准!












欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2