一種通過鼠標(biāo)拖拽滑動(dòng)切換界面的方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及,特別涉及一種通過鼠標(biāo)拖拽滑動(dòng)切換界面的方法。
【背景技術(shù)】
[0002]隨著計(jì)算機(jī)技術(shù)的發(fā)展,現(xiàn)今的手機(jī)、電腦等設(shè)備的CPU速度越來越快,由此帶來軟件亦有著長足的發(fā)展,特別是在人機(jī)交互界面的操作性上,已變得越來越人性化。比如,現(xiàn)今普遍流行的智能手機(jī)上通過鼠標(biāo)拖拽滑動(dòng)切換頁面的技術(shù),就給了用戶一種非常好的操作體驗(yàn)。該技術(shù)可以用在很多的人機(jī)交互界面上,比如,桌面圖標(biāo)頁的左右頁面切換;列表控件的垂直方向拖動(dòng);圖片瀏覽的左右(上下)拖動(dòng)切換等等。就目前而言,該效果在Android、1s等操作系統(tǒng)上,由于系統(tǒng)的支持,實(shí)現(xiàn)起來難度不大;但對于眾多使用WinCE系統(tǒng)的嵌入式設(shè)備,以及使用Window系列操作系統(tǒng)的臺式機(jī)電腦設(shè)備,想要實(shí)現(xiàn)此效果,由于操作系統(tǒng)的不支持,則存在有不少的難度。
【發(fā)明內(nèi)容】
[0003]本發(fā)明的目的在于提供一種通過鼠標(biāo)拖拽滑動(dòng)切換界面的方法。
[0004]本發(fā)明解決上述技術(shù)問題所采用的技術(shù)方案為:一種通過鼠標(biāo)拖拽滑動(dòng)切換界面的方法,所述界面包括一顯示區(qū)域、及一個(gè)可在所述顯示區(qū)域內(nèi)滑動(dòng)的且具有多項(xiàng)顯示列表的滑動(dòng)列表,所述的切換界面的方法主要用于通過鼠標(biāo)拖拽所述滑動(dòng)列表以使之在所述顯示區(qū)域內(nèi)滑動(dòng),通過所述滑動(dòng)列表的滑動(dòng)可切換所述多項(xiàng)顯示列表分別在顯示區(qū)域內(nèi)的顯示,該方法具體包括如下階段:
階段Si,獲得鼠標(biāo)在顯示區(qū)域內(nèi)的壓下動(dòng)作信息后進(jìn)入鼠標(biāo)移動(dòng)事件,實(shí)時(shí)檢測鼠標(biāo)的所有移動(dòng)過程,并記錄下鼠標(biāo)的移動(dòng)信息,直至鼠標(biāo)釋放壓下的動(dòng)作;
階段S2,當(dāng)鼠標(biāo)釋放壓下的動(dòng)作之后進(jìn)入鼠標(biāo)釋放事件,根據(jù)步驟SI中記錄的鼠標(biāo)的移動(dòng)過程,計(jì)算出鼠標(biāo)釋放壓下動(dòng)作時(shí)的滑動(dòng)速度,以此滑動(dòng)速度作為滑動(dòng)列表繼續(xù)滑動(dòng)的初速度、并以勻減速運(yùn)動(dòng)控制所述滑動(dòng)列表在顯示區(qū)域內(nèi)順勢滑動(dòng);
階段S3,根據(jù)步驟S2中滑動(dòng)列表的滑動(dòng)方向,當(dāng)所述滑動(dòng)列表向右滑動(dòng)超出左邊緣或向左滑動(dòng)超出右邊緣時(shí),所述滑動(dòng)列表進(jìn)入反向回彈滑動(dòng)階段。
[0005]在優(yōu)選的實(shí)施例中,所述階段SI還包括:當(dāng)獲取鼠標(biāo)壓下動(dòng)作信息后,首先判斷所述滑動(dòng)列表是否處于滑動(dòng)過程中,如果是,則停止當(dāng)前滑動(dòng)列表的滑動(dòng)動(dòng)作、并標(biāo)記鼠標(biāo)已按下,如果否,則直接標(biāo)記鼠標(biāo)已按下,然后再進(jìn)入鼠標(biāo)移動(dòng)事件;同時(shí)將鼠標(biāo)的移動(dòng)信息記錄到一個(gè)隊(duì)列Q中。
[0006]在優(yōu)選的實(shí)施例中,所述階段S2包括如下步驟:
步驟S210,響應(yīng)鼠標(biāo)釋放事件,并在所述隊(duì)列Q中取出鼠標(biāo)在移動(dòng)事件中的開始信息Qh和結(jié)尾信息Qe ;
步驟S220,根據(jù)步驟S210中取出的開始信息Qh和結(jié)尾信息Qe計(jì)算出鼠標(biāo)在釋放時(shí)的運(yùn)行初速度VO ; 步驟S230,清除隊(duì)列Q中的所有內(nèi)容及鼠標(biāo)已按下的信息;
步驟S240,預(yù)設(shè)一個(gè)最小速度Vmin,并判斷步驟S220中的初速度VO是否小于該最小速度,如果是,則進(jìn)入步驟S250,如果否,則進(jìn)入步驟S260;
步驟S250,判斷顯示區(qū)域內(nèi)當(dāng)前顯示列表的左邊緣與顯示區(qū)域左邊緣之間的距離1是否等于0,如果是,則鼠標(biāo)釋放事件完成,如果否,則進(jìn)入步驟S251 ;
步驟S251,設(shè)置當(dāng)前顯示列表需要滑動(dòng)的距離長度S=-1o,然后進(jìn)入步驟S270;
步驟S260,預(yù)設(shè)一減速度a,并依據(jù)該減速度a和步驟S220中的初速度,計(jì)算出當(dāng)滑動(dòng)速度降為零時(shí)當(dāng)前顯示列表需要滑動(dòng)的距離長度S ;
步驟S261,計(jì)算出預(yù)計(jì)的滑動(dòng)結(jié)束時(shí)滑動(dòng)列表左側(cè)邊緣距離顯示區(qū)域左側(cè)邊緣的距離
Sr;
步驟S262,判斷Sr是否位于顯示區(qū)域的外部,如果是,則進(jìn)入步驟S280,如果否,則進(jìn)入步驟S263 ;
步驟S263,調(diào)整需要滑動(dòng)的距離長度S為顯示列表寬度的Iw的整倍數(shù);
步驟S264,設(shè)置需要滑動(dòng)的距離長度S=S-1o,然后進(jìn)入步驟S270 ;
步驟S270,根據(jù)預(yù)設(shè)的減速度a和需要滑動(dòng)的距離長度S,重新計(jì)算初速度VO ;
步驟S280,根據(jù)鼠標(biāo)釋放時(shí)運(yùn)行的起始點(diǎn)SO、預(yù)設(shè)的減速度a和需要滑動(dòng)的距離長度S,啟動(dòng)滑動(dòng)列表的滑動(dòng)引擎;
步驟S290,鼠標(biāo)釋放事件處理完成。
[0007]在優(yōu)選的實(shí)施例中,所述反向回彈滑動(dòng)階段包括減速滑動(dòng)部分、反彈滑動(dòng)的前1/3部分和反彈滑動(dòng)的后2/3部分,所述1/3部分為加速運(yùn)動(dòng),所述2/3部分為減速運(yùn)動(dòng)。
[0008]在優(yōu)選的實(shí)施例中,所述滑動(dòng)列表的滑動(dòng)引擎用于定時(shí)提供勻加(減)速運(yùn)動(dòng)的最新位置點(diǎn),供滑動(dòng)控制使用,所述滑動(dòng)引擎過程啟動(dòng)后,首先由定時(shí)器定時(shí)發(fā)出控制信息,響應(yīng)定時(shí)器的定時(shí)消息后,滑動(dòng)引擎執(zhí)行如下步驟:
步驟S281:獲取當(dāng)前時(shí)間Tc ;
步驟S282:計(jì)算與上次定時(shí)器消息之間的間隔時(shí)長t = Tc-TO ;
步驟S283:計(jì)算當(dāng)前的速度Vc,計(jì)算采用如下的勻加速直線運(yùn)動(dòng)物理公式(a為負(fù)值):Vc = VO + a 氺 t ;
步驟S284:計(jì)算在t時(shí)間內(nèi)滑行的距離S,計(jì)算采用如下的勻加速直線運(yùn)動(dòng)物理公式:S=V0*t+a*t2/ 2 ;
步驟S285:計(jì)算當(dāng)前的位置點(diǎn)Sc = SO + S ;
步驟S286:保存當(dāng)前狀態(tài)作為下次定時(shí)消息的起始值:T0 = Tc ;V0 = Vc ;S0 = Sc ;步驟S287:發(fā)出消息,通知外界當(dāng)前的位置點(diǎn)。外界響應(yīng)該消息之后,就可以做相對應(yīng)的處理;
步驟S288:判斷Vc是否已達(dá)到零,假如是,則執(zhí)行步驟S9 ;
步驟S289:發(fā)出消息,通知外界滑動(dòng)速度已為零,外界響應(yīng)該消息之后,可知滑動(dòng)已結(jié)束,此時(shí)滑動(dòng)引擎控制結(jié)束。
[0009]本發(fā)明通過鼠標(biāo)拖拽滑動(dòng)切換界面的方法的有益效果在于:該方法主要用于通過鼠標(biāo)拖拽滑動(dòng)列表以使之在顯示區(qū)域內(nèi)滑動(dòng),通過滑動(dòng)列表的滑動(dòng)可切換多項(xiàng)顯示列表分別在顯示區(qū)域內(nèi)的顯示,該方法具體包括如下階段:階段SI,響應(yīng)鼠標(biāo)壓下和鼠標(biāo)移動(dòng)事件;階段S2,當(dāng)鼠標(biāo)釋放壓下的動(dòng)作之后進(jìn)入鼠標(biāo)釋放事件;階段S3,根據(jù)階段S2中滑動(dòng)列表的滑動(dòng)方向,當(dāng)所述滑動(dòng)列表向右滑動(dòng)超出左邊緣或向左滑動(dòng)超出右邊緣時(shí),滑動(dòng)列表進(jìn)入反向回彈滑動(dòng)階段。該方法通過按下鼠標(biāo)并拖拽,然后利用簡單的勻加(減)速直線運(yùn)動(dòng)組合而成的具有反彈效果的滑動(dòng)動(dòng)畫技術(shù),以及通過對鼠標(biāo)滑動(dòng)的監(jiān)控,計(jì)算出鼠標(biāo)滑動(dòng)速度的技術(shù),即可以實(shí)現(xiàn)流暢的滑動(dòng)動(dòng)畫效果,該方法簡單易操作,能有效解決通過鼠標(biāo)拖拽滑動(dòng)切換WinCE系統(tǒng)界面的目的。
【附圖說明】
[0010]圖1為一實(shí)施例中通過鼠標(biāo)拖拽滑動(dòng)切換界面的方法的控制過程圖。
[0011]圖2為一實(shí)施例中滑動(dòng)模型靜態(tài)示意圖。
[0012]圖3為一實(shí)施例中鼠標(biāo)壓下事件處理流程圖。
[0013]圖4為一實(shí)施例中鼠標(biāo)移動(dòng)事件處理流程圖。
[0014]圖5為一實(shí)施例中鼠標(biāo)釋放事件處理流程圖。
[0015]圖6為一實(shí)施例中滑動(dòng)引擎控制滑動(dòng)過程的流程圖。
[0016]圖7為一實(shí)施例中邊緣之外的反向回彈滑動(dòng)階段處理流程圖。
[0017]圖8為一實(shí)施例中滑動(dòng)引擎的控制示意圖。
[0018]圖9為一實(shí)施例中模型滑動(dòng)示意圖a。
[0019]圖10為一實(shí)施例中模型滑動(dòng)示意圖b。
[0020]圖11為一實(shí)施例中模型滑動(dòng)示意圖C。
[0021]圖12為一實(shí)施例中模型滑動(dòng)示意圖d。
【具體實(shí)施方式】
[0022]下面將結(jié)合具體實(shí)施例及附圖對本發(fā)明通過鼠標(biāo)拖拽滑動(dòng)切換界面的方法作進(jìn)一步詳細(xì)描述。
[0023]一種通過鼠標(biāo)拖拽滑動(dòng)切換界面的方法,該界面包括一顯示區(qū)域、及一個(gè)可在該顯示區(qū)域內(nèi)滑動(dòng)的且具有多項(xiàng)顯示列表的滑動(dòng)列表。
[0024]請參見圖2、圖9至圖12,為了更直觀的描述,這里建立一個(gè)滑動(dòng)模型,在圖2中,有一個(gè)多項(xiàng)的列表(因?yàn)樵摿斜頌榭苫瑒?dòng)的,這里稱為“滑動(dòng)列表”)在顯示區(qū)域內(nèi)左右移動(dòng)(亦可以上下移動(dòng),為闡述方便,這里只是列舉了左右移動(dòng)的例子,上下移動(dòng)的原理是一樣的)。該滑動(dòng)列表的每一項(xiàng)都是等寬的,且每