滑動切換Activity代碼

來源:互聯網
上載者:User

       最近需要對練習項目中的代碼進行最佳化,發現很多代碼寫起來遠比想象的困難很多。剛接觸Android時間不長,很多東西都不能融會貫通,所以才會有這樣的問題存在,當然學習中遇到的問題很有必要做個總結。想想這個需求也是比較簡單,就是不想讓右圖介面上出現點擊Button切換Activity,這也許是許多剛接觸的朋友都會萌生的念頭吧,我也不例外。
開始在網上找的方法很多都是講到ViewPager這樣的東西,Demo看了,也模仿了一個出來,但終究發現不能滿足自己的需求,使用了ViewPager後,布局都是通過代碼載入到第一個Activity中,無法再擷取布局中的控制項進行操作,所以這個方案放棄了。
        那接下來就用我的style來看看這段代碼的實現。大致的思路就是找系統相關監聽螢幕動作的事件方法,剛好在Activity中有onTouchEvent方法可以得到螢幕的觸摸事件,參數MotionEvent event可以得到螢幕觸摸的位置。突然發現這個東西沒有一點技術含量,原理太簡單。
        原理:通過event對象的方法event.getAction()可以獲得觸摸按下和觸摸釋放的動作,同時通過event.getRawX()和event.getRawY()又可以獲得觸摸點的座標,這樣,在觸摸按下時記錄起始點的X、Y對應值,在觸摸釋放量再次獲得X、Y的座標位置,通過起始和釋放點的座標,可以確定到底是向上、向下、向左還向右的操作。
        方法 onTouchEvent 代碼:

public boolean onTouchEvent(MotionEvent event) {int action = event.getAction();switch (action) {case MotionEvent.ACTION_DOWN:O.X = event.getRawX();O.Y = event.getRawY();break;case MotionEvent.ACTION_UP:float x = event.getRawX();float y = event.getRawY();int slideOrientation = O.slide(x, y);switch (slideOrientation) {// case O.SLIDEUP:// Toast.makeText(this, "向上滑", Toast.LENGTH_SHORT).show();// break;// case O.SLIDEDOWN:// Toast.makeText(this, "向下滑", Toast.LENGTH_SHORT).show();// break;case O.SLIDELEFT:// Toast.makeText(this, "向左滑", Toast.LENGTH_SHORT).show();startActivity(new Intent(this, Wizard_1_Activity.class));finish();break;// case O.SLIDERIGHT: //第一個設定介面不需要回退// Toast.makeText(this, "向右滑", Toast.LENGTH_SHORT).show();// break;default:break;}break;default:break;}return super.onTouchEvent(event);}

 封裝邏輯的O.java代碼

package com.hitech.resxantivirus.utils;public class O {public static final int SLIDEUP = 1;public static final int SLIDEDOWN = 2;public static final int SLIDELEFT = 3;public static final int SLIDERIGHT = 4;// 橫軸起始座標public static float X = 0;// 縱軸起始座標public static float Y = 0;private O() {}/** * 啟用Activity,由螢幕Slide方向決定 *  * @param x *            結束點橫軸座標 * @param y *            結束點縱軸座標 * @param cls *            需要啟用Activity的class */public static int slide(float x, float y) {float resX = X - x;float resY = Y - y;int res = -1;// slideToLeftif (resX > 10 && resY > -10 && resY < 10) {res = 3;}// slideToRightif (resX < -10 && resY > -10 && resY < 10) {res = 4;}// slideUpif (resY > 10 && resX > -10 && resX < 10) {res = 1;}// slideDownif (resY < -10 && resX > -10 && resX < 10) {res = 2;}return res;}}

 

聯繫我們

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