首先我們需要實(shí)現(xiàn)自己的ListView來(lái)處理截獲屏幕的事件,但不是由ListView處理,而是轉(zhuǎn)發(fā)給自定義item控件處理,也就是實(shí)現(xiàn)的SlideView控件。根據(jù)處理手勢(shì)設(shè)置item的狀態(tài),也就是說(shuō)當(dāng)已經(jīng)滑動(dòng)了,這個(gè)時(shí)候如果不獲取item的狀態(tài),下次在滑動(dòng)這個(gè)item的時(shí)候是不知道這個(gè)控件已經(jīng)滑動(dòng)了,不然就會(huì)有二次滑動(dòng),所以必須保存滑動(dòng)狀態(tài)。
創(chuàng)新互聯(lián)建站專注于岫巖網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗(yàn)。 熱誠(chéng)為您提供岫巖營(yíng)銷型網(wǎng)站建設(shè),岫巖網(wǎng)站制作、岫巖網(wǎng)頁(yè)設(shè)計(jì)、岫巖網(wǎng)站官網(wǎng)定制、小程序設(shè)計(jì)服務(wù),打造岫巖網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供岫巖網(wǎng)站排名全網(wǎng)營(yíng)銷落地服務(wù)。
點(diǎn)擊事件不要使用onCLick而是在OnTouch(……)的MotionEvent.ACTION_UP中判斷,如果左右滑動(dòng)距離大于某個(gè)值視為滑動(dòng)刪除;否則視為點(diǎn)擊事件即可;
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
//……
break;
case MotionEvent.ACTION_UP:
if (再次判斷手勢(shì)滑動(dòng)距離是否滿足條件) {
如果滿足視為滑動(dòng)操作
} else {//否則 視為點(diǎn)擊事件.避免事件沖突
**// 跳轉(zhuǎn)
}
break;
}
return false;
}
鼠標(biāo)的手勢(shì)操作主要還是基于mousedown、mousemove、mouseup來(lái)實(shí)現(xiàn)。
觸屏設(shè)備基于touchstart、touchmove、touchend來(lái)實(shí)現(xiàn)。
本身這兩種設(shè)備就是不等同的。而且現(xiàn)實(shí)工作中。誰(shuí)會(huì)搞一個(gè)既在PC瀏覽器上支持,又在觸屏瀏覽器上支持的東西呢?因?yàn)槲覀兊木W(wǎng)站本來(lái)就是分為桌面版和觸屏版。讓用戶自由選擇好了,我們開(kāi)發(fā)者區(qū)分對(duì)待。
更何況,二者的手勢(shì)形勢(shì)從根本上就是不同的。觸屏設(shè)備支持多點(diǎn)觸控,可以進(jìn)行pinch(雙指縮放)、rotate(雙指旋轉(zhuǎn))、雙指下拉、雙指上推等等特殊手勢(shì)。請(qǐng)問(wèn)鼠標(biāo)如何去實(shí)現(xiàn)呢?
所以說(shuō),我們作為前端開(kāi)發(fā),不要總期許有一個(gè)大而全,萬(wàn)能的大神,寫一個(gè)啥都能干的東西出來(lái)。即便是大神也要考慮有所為,有所不為啊。
移動(dòng)端推薦使用Hammer.js,很多手勢(shì)調(diào)用。
多點(diǎn)觸控插件Hammer.js,是一個(gè)開(kāi)源的,輕量級(jí)的javascript庫(kù),它可以在不需要依賴其他東西的情況下識(shí)別觸摸,鼠標(biāo)事件。
還支持jQuery插件的形式調(diào)用
span class="tag" style="color: rgb(0, 0, 128);"span class="title"script src=""/scriptspan
$("#element")
.hammer({
// 對(duì)DOM進(jìn)行一些初始化,這里可以加入一些參數(shù)
})
.bind("tap", function(ev) {
console.log(ev);
});
一個(gè)簡(jiǎn)單的解決方案:頂端固定一個(gè)DIV作為導(dǎo)航容器,該DIV左端和右端分別用DIV模擬向左和向右的按鈕,中間區(qū)域呈現(xiàn)導(dǎo)航按鈕,計(jì)算當(dāng)前位置,用模擬的按鈕控制左右滾動(dòng)。
另,你說(shuō)的手機(jī)端用手指滑動(dòng),在 HTML 中是由瀏覽器根據(jù)手勢(shì)觸控事件來(lái)支持的,jQuery 超越不了瀏覽器對(duì) JS 的支持,因?yàn)?jQuery 就是 JS 的程序包。如果使用 Mouse 事件來(lái)實(shí)現(xiàn),也不是不可以,因?yàn)槭謩?shì)觸控的本質(zhì)無(wú)非還是 Mouse 事件同源的衍生計(jì)算。費(fèi)老鼻子勁使用 Mouse 事假實(shí)現(xiàn)一個(gè)有加速減速效果的導(dǎo)航滑動(dòng),不經(jīng)濟(jì)。供參考。
swipleft/right 是判斷手指是向左還是向右滑動(dòng)。
注意他只是個(gè)判斷 ,沒(méi)有那種拖動(dòng)焦點(diǎn)圖的那種效果。
不知道您是想用這個(gè)做什么效果?
$(document).bind('swiperight',function(){
config.$bookBlock.bookblock('prev');
}).bind('swipeleft',function(){
config.$bookBlock.bookblock('next');
});
如果您是想要滑動(dòng)門的效果,那jquerymobile就辦不到了。
可以搜索一下Swiper-master 這個(gè)插件,效果很棒的!