[android] 實現返回鍵操作思路,android思路

來源:互聯網
上載者:User

[android] 實現返回鍵操作思路,android思路

記錄使用者點擊的操作曆史,使用棧資料結構,頻繁的操作棧頂(添加,擷取,刪除),使用LinkedList

捕獲使用者的返回鍵操作,響應返回鍵,返回上一個介面

MainActivity.java

    /**     * 返回鍵處理     */    @Override    public boolean onKeyDown(int keyCode, KeyEvent event) {        if(keyCode==KeyEvent.KEYCODE_BACK){            boolean result=MiddleManager.getInstance().goBack();            if(!result){                Toast.makeText(MainActivity.this, "是否退出應用", 1).show();            }            return false;        }        return super.onKeyDown(keyCode, event);    }

MiddleManager.java

    //操作曆史棧    private LinkedList<String> HISTORY=new LinkedList<String>();    /**     * 處理返回鍵     * @return      */    public boolean goBack() {        //如果為空白會拋異常        if(HISTORY.size()>0){            if(HISTORY.size()==1){                return false;            }                        HISTORY.removeFirst();            if(HISTORY.size()>0){                String key=HISTORY.getFirst();                BaseView targetView=VIEWCACHE.get(key);                mainContainer.removeAllViews();                View child=targetView.getView();                mainContainer.addView(child);                child.startAnimation(AnimationUtils.loadAnimation(mainContainer.getContext(), R.anim.left_to_right));                currentView=targetView;                return true;            }        }        return false;    }
    /**     * 載入介面     */    public void loadView(Class<? extends BaseView> baseViewClass) {        BaseView baseView=null;        //判斷是否存在        String key=baseViewClass.getSimpleName();        if(VIEWCACHE.containsKey(key)){            baseView=VIEWCACHE.get(key);        }else{            try {                Constructor<? extends BaseView> constructor;                constructor = baseViewClass.getConstructor(Context.class);                baseView=constructor.newInstance(mainContainer.getContext());            } catch (Exception e) {                e.printStackTrace();            }            VIEWCACHE.put(key, baseView);        }        mainContainer.removeAllViews();        View child=baseView.getView();        mainContainer.addView(child);        child.startAnimation(AnimationUtils.loadAnimation(mainContainer.getContext(), R.anim.left_to_right));        currentView=baseView;        //放入棧        HISTORY.addFirst(key);    }

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.