Android右滑返回上一介面

來源:互聯網
上載者:User

標籤:android   滑動返回   

  今天突然心血來潮,想在自己的項目裡面加一個右滑finish介面的功能。思路很簡單就是攔截螢幕滑動事件,然後finish當前頁面,不多說了,上代碼吧。

  第一步:利用VelocityTracker計算滑動速度,及一些附帶的代碼。

    private VelocityTracker mVelocityTracker = null;//速度記錄器

    private int getScrollVelocity() {

mVelocityTracker.computeCurrentVelocity(1000);

int velocity = (int) mVelocityTracker.getXVelocity();

return Math.abs(velocity);

}

        /**

* 回收VelocityTracker對象。

*/

private void recycleVelocityTracker() {

mVelocityTracker.recycle();

mVelocityTracker = null;

}

        /**

* 建立VelocityTracker對象,並將觸摸content介面的滑動事件加入到VelocityTracker中。

* @param event

*/

private void createVelocityTracker(MotionEvent event) {

if (mVelocityTracker == null) {

mVelocityTracker = VelocityTracker.obtain();

}

mVelocityTracker.addMovement(event);

}

  第二步:在activity攔截滑動事件,注意如果是重寫TouchEvent是先到介面子控制項之後才會傳遞到這個方法中,所以可能導致介面中只有極少的部分能夠擷取到滑動事件。

    private float xDown, xMove;

//手指向右滑動時的最小速度  

    private static final int XSPEED_MIN = 200;  

    //手指向右滑動時的最小距離  

    private static final int XDISTANCE_MIN = 150; 

    @Override

    public boolean dispatchTouchEvent(MotionEvent ev) {

// TODO Auto-generated method stub

createVelocityTracker(ev);

switch (ev.getAction()) {

case MotionEvent.ACTION_DOWN:

xDown = ev.getRawX();

break;

case MotionEvent.ACTION_MOVE:

xMove = ev.getRawX();

//活動的距離  

                        int distanceX = (int) (xMove - xDown);  

                        //擷取順時速度  

                        int xSpeed = getScrollVelocity();  

                        if (distanceX > XDISTANCE_MIN && xSpeed >XSPEED_MIN){

                        finish();

                        }

break;

case MotionEvent.ACTION_UP:

recycleVelocityTracker();

break;

default:

break;

}

return super.dispatchTouchEvent(ev);

}


本文出自 “Android開發記錄” 部落格,請務必保留此出處http://dyxiaoyu.blog.51cto.com/5805904/1439473

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.