的原始視覺特性的視覺特性來呈現(xiàn)。這樣的視覺特性可以包含(通過示例而非限制)大小、形狀、顏色、不透明度、亮度、內(nèi)容、等等。
[0071]在至少一些實施例中,候選用于拖動的元素在用戶交互之前(諸如當(dāng)加載頁面時,當(dāng)頁面被加載后創(chuàng)建新的元素時,當(dāng)頁面被加載后非可拖動元素被改變?yōu)樽兂煽赏蟿訒r,等等)被呈現(xiàn)在分離的視覺層中。候選用于拖動的元素可以包括頁面上的元素,該元素被標(biāo)識為可拖動元素,諸如能夠經(jīng)由拖放操作被拖動的元素。這些可拖動元素可以包括聲明屬性,其將元素標(biāo)識為“可拖動”用于按下并保持手勢、交叉滑動手勢、或發(fā)起拖放操作的其他觸摸輸入。以這種方式提供聲明屬性允許運行時環(huán)境提供多線程拖放體驗,其利用現(xiàn)有的操縱技術(shù),以確保針對用戶的快速和流暢體驗。
[0072]通過預(yù)分層可拖動元素,Web平臺106可以按需求而沒有用戶發(fā)起拖動操作應(yīng)有的延遲來呈現(xiàn)元素到單獨可拖動視口中,從而創(chuàng)建從頁面中的元素到被用戶移動的拖動畫面的無縫轉(zhuǎn)變。此外,預(yù)分層可拖動元素可能減少通常通過在發(fā)起拖動操作的時間創(chuàng)建拖動畫面引起的滯后時間。在一個實施例中,拖動畫面可以包括在發(fā)起拖放操作時的元素的靜態(tài)表示。此外或可替代地,拖動畫面可以包括動態(tài)表示,動態(tài)表示在元素被拖動時繼續(xù)被呈現(xiàn)。動態(tài)表示可以通過例如在元素被拖動時接收到元素的拖動畫面的動態(tài)視覺更新來維持。
[0073]現(xiàn)在考慮圖7,圖7是描述依據(jù)一個或多個實施例的方法中的步驟的流程圖。該方法可以結(jié)合任何合適的硬件、軟件、固件、或其組合來實施。在至少一些實施例中,方法可以由形式為被體現(xiàn)在某一類型的計算機(jī)可讀存儲介質(zhì)上的計算機(jī)可讀指令的軟件執(zhí)行,該方法可以在一個或多個處理器的影響下被執(zhí)行??梢詧?zhí)行要被描述的功能的軟件組件的非限制示例僅在圖6以上被描述,包含以上描述的手勢模塊104。
[0074]步驟700接收加載頁面的請求??梢砸匀魏芜m合方式執(zhí)行該步驟。例如,該請求可以包含導(dǎo)航到web頁面或應(yīng)用程序的導(dǎo)航請求。步驟702標(biāo)識頁面上的可拖動元素??梢岳萌魏芜m合的標(biāo)識技術(shù)。在至少一些實施例中,元素可以包含聲明屬性,其標(biāo)識元素是使能拖動的。聲明屬性還可以指示元素對于特定手勢(諸如按下并保持手勢或交叉滑動手勢)可拖動,如以上描述的那樣。
[0075]步驟704將頁面上的可拖動元素呈現(xiàn)到與頁面上的內(nèi)容分離的層??梢砸匀魏芜m合方式執(zhí)行該步驟。在一個或多個實施例中,可拖動元素被預(yù)分層為視覺層,該視覺層與其中呈現(xiàn)頁面上的其他內(nèi)容的另一層分離。步驟706接收發(fā)起拖放操作的輸入??梢岳萌魏芜m當(dāng)配置的輸入。在至少一些實施例中,輸入可以包含觸摸輸入,諸如按下并保持手勢或交叉滑動手勢,如以上描述的那樣。響應(yīng)于拖放操作被發(fā)起,步驟708基于可拖動元素呈現(xiàn)拖動畫面。可以以任何適合方式執(zhí)行該步驟。在一個或多個實施例中,拖動畫面在視覺上匹配可拖動元素。因為可拖動元素被預(yù)分層為單獨層,所以拖動畫面可以按需求來生成和呈現(xiàn)而沒有延遲,從而創(chuàng)建從元素到拖動畫面的無縫轉(zhuǎn)變。
[0076]已經(jīng)考慮用于預(yù)分層可拖動元素的技術(shù)后,現(xiàn)在考慮依據(jù)一個或多個實施例映射觸摸輸入到旨在鼠標(biāo)的拖放API的討論。
[0077]觸摸輸入到旨在鼠標(biāo)拖放AP I的映射圖8圖示用于接收和處理鼠標(biāo)和觸摸輸入的示例體系結(jié)構(gòu)。例如,接收到輸入802,并且如果輸入引起產(chǎn)生鼠標(biāo)消息,則鼠標(biāo)消息被發(fā)送到處理組件804以確定鼠標(biāo)消息是否被配置為發(fā)起拖放操作。可以利用任何適當(dāng)配置的處理組件。在至少一些實施例中,處理組件可以包含對象鏈接和嵌入(OLE)組件。可以利用其他組件,而不偏離要求保護(hù)的主題的精神和范圍?;诖_定鼠標(biāo)消息是拖動輸入,處理組件804發(fā)送一個或多個拖動通知到拖放管理器806。拖放管理器806然后基于拖動通知確定該元素是可拖動元素,并發(fā)起對可拖動元素的拖放操作。
[0078]然而,如果接收到的輸入802是引起產(chǎn)生指針消息的觸摸輸入,則指針消息被發(fā)送到直接操縱組件810以確定指針消息是否配置為發(fā)起拖放操作?;诖_定指針消息是拖動輸入,直接操縱組件810將操縱通知發(fā)送到觸摸拖/放助手812。在至少一些實施例中,觸摸拖/放助手812配置為使來自直接操縱組件810的更新與表示元素的拖動畫面相關(guān)。觸摸拖/放助手812進(jìn)一步配置為將拖動通知發(fā)送到拖放管理器806。這些拖動通知是通常由處理組件804提供用于基于鼠標(biāo)的拖放操作的拖動通知的仿真,從而促進(jìn)針對觸摸用戶的向后兼容性以在針對鼠標(biāo)設(shè)計的web站點/ app中使用拖放功能。
[0079]在一個或多個實施例中,觸摸拖/放助手812將觸摸輸入映射到鼠標(biāo)兼容的功能用于拖放管理器806,使得拖放管理器806不必理解觸摸輸入。相反,拖放管理器806簡單地發(fā)起與拖動通知相關(guān)聯(lián)的功能,而無論拖動通知是由觸摸拖/放助手812從觸摸輸入生成還是由處理組件804從鼠標(biāo)輸入生成。
[0080]現(xiàn)在考慮圖9,圖9是描述依據(jù)一個或多個實施例的輸入變換過程或方法中的步驟的流程圖。該方法可以結(jié)合任何合適的硬件、軟件、固件、或其組合來實施。在至少一些實施例中,方法可以由形式為被體現(xiàn)在某一類型的計算機(jī)可讀存儲介質(zhì)上的計算機(jī)可讀指令的軟件執(zhí)行,該方法可以在一個或多個處理器的影響下被執(zhí)行??梢詧?zhí)行要被描述的功能的軟件組件的非限制示例僅在以上在圖8被描述,包含以上描述的手勢模塊104。
[0081]步驟900接收輸入??梢砸匀魏芜m合方式執(zhí)行該步驟。例如,可以關(guān)于出現(xiàn)在顯示設(shè)備上的元素接收輸入。任何適合類型的元素可以是輸入的主體。步驟902確定輸入是否包括鼠標(biāo)輸入或其他類型的輸入,例如觸摸輸入??梢岳萌魏芜m合類型的確定場景。如果輸入被確定為鼠標(biāo)輸入,則步驟904處理鼠標(biāo)輸入,以提供一個或多個拖動通知,其包括與元素相關(guān)聯(lián)的數(shù)據(jù)。這樣的數(shù)據(jù)可以包括(通過示例而非限制)拖動狀態(tài)和數(shù)據(jù)傳遞信息。步驟906根據(jù)拖動通知確定拖動資格。
[0082]如果元素是有資格用于拖動,則步驟908發(fā)起并執(zhí)行拖動操作。如果另一方面,元素沒有資格用于拖動,則可以發(fā)起和執(zhí)行各種其他操作之一,諸如例如,元素的選擇或鏈接的激活。在其他實施例中,如果該元素沒有資格用于拖動,則任何事情都不會發(fā)生。
[0083]{0083]如果輸入不是鼠標(biāo)輸入,并且步驟902確定輸入是某一其他類型的輸入(諸如觸摸輸入),則步驟910生成與觸摸輸入相關(guān)聯(lián)的操縱通知??梢砸匀魏芜m合方式執(zhí)行該步驟。例如,可以生成操縱通知,其包括與元素的操縱(諸如元素到新位置的移動)相關(guān)聯(lián)的數(shù)據(jù)。步驟912使用操縱通知來處理觸摸輸入以提供一個或更多拖動通知。這些拖動通知包括與元素關(guān)聯(lián)的數(shù)據(jù),該元素是觸摸輸入的主體。這樣的數(shù)據(jù)可以包括(通過示例而非限制)拖動狀態(tài)和數(shù)據(jù)傳遞信息。然后使用基于觸摸輸入的拖動通知(類似于針對鼠標(biāo)輸入的拖動通知)來在步驟906中確定元素的拖動資格。步驟908然后基于該元素有資格用于拖動而發(fā)起拖動操作。
[0084]已經(jīng)考慮以上描述的映射技術(shù)后,現(xiàn)在考慮依據(jù)一個或多個實施例的獨立自動滾動的討論。
_5]用于獨立自動滾動的方法/手勢
圖10圖示示出可操作來采用自動滾動用于觸摸輸入的示例實施方式的系統(tǒng)1000。當(dāng)用觸摸輸入拖動元素時,用戶可能旨在將元素放在不是當(dāng)前可見的目標(biāo)上。例如,目標(biāo)位置可能被隱藏在可滾動區(qū)域中的幕后。在至少一些實施例中,用戶可以通過靠近可滾動區(qū)域的邊緣拖動元素來觸發(fā)可滾動區(qū)域的自動滾動。例如,用戶可以拖動諸如圖10的陰影區(qū)1002的區(qū)域內(nèi)的元素來觸發(fā)自動滾動??梢砸匀魏芜m合方式執(zhí)行自動滾動。例如,可以獨立于應(yīng)用程序的運行代碼來觸發(fā)并且執(zhí)行滾動。在至少一些其它實施例中,消息可以被發(fā)送到應(yīng)用程序,以命令應(yīng)用程序來發(fā)起滾動。然而,應(yīng)用程序可能需要對這樣的消息作出響應(yīng),并自身執(zhí)行滾動,這在應(yīng)用程序已處理其他操作的情況下可能引入滯后。
[0086]繼續(xù)進(jìn)行其中放下目標(biāo)位于可滾動容器內(nèi)并且不是當(dāng)前可見的以上示例,以上關(guān)于圖4描述的IHT線程404可以配置為認(rèn)知除了可拖動視口以外的可滾動視口。在該特定示例中,操縱線程406可以提供針對拖動畫面的更新給IHT線程404<JHT線程404然后可以命令操縱線程406滾動拖動畫面下方的視口。為了使用戶能夠揭示隱藏的放下目標(biāo),可以在頁面上的一個或多個可滾動視口的周圍建立距離閾值1004??梢岳萌魏芜m合的距離閾值。例如,距離閾值1004可以包含針對典型手指的大小提供足夠空間的足夠距離。在至少一些實施例中,距離閾值1004可以包括大約100個像素。
[0087]當(dāng)拖動畫面進(jìn)入距離閾值1004內(nèi)的可滾動視口的區(qū)域(諸如自動滾動區(qū)域)時,可滾動視口開始在該邊緣方向上滾動。進(jìn)一步,為了在跨應(yīng)用程序進(jìn)行拖動時避免意外觸發(fā)滾動區(qū)域,可以建立最小時間閾值,在該時間閾值內(nèi)可拖動元素在自動滾動區(qū)域中逗留??梢岳萌魏芜m合的時間閾值。在至少一些實施例中,時間閾值可以包括200-500毫秒的范圍內(nèi)的值。
[0088]此外,可以響應(yīng)于用戶拖動元素遠(yuǎn)離邊緣并且到自動滾動區(qū)域之外而取消可滾動區(qū)域的自動滾動。例如,在執(zhí)行自動滾動期間,目標(biāo)放下可以被滾動到視圖中。為了避免通過目標(biāo)下降的滾動,用戶可以將元素拖動遠(yuǎn)離可滾動區(qū)域的邊緣,諸如向屏幕的中心。通過拖動元素到針對可滾動區(qū)域的距離閾值外來終止自動滾動,并且然后用戶可以在目標(biāo)放下處放下該元素。
[0089]已經(jīng)考慮用于獨立自動滾動的以上描述的技術(shù)后,現(xiàn)在考慮依據(jù)一個或多個實施例的z次序轉(zhuǎn)變的討論。
[0090]Z-次序的平滑轉(zhuǎn)變
當(dāng)拖動手勢被觸發(fā)時,表示元素的拖動畫面被產(chǎn)生供用戶重新排列。拖動畫面可以基本上類似原始元素的外觀。進(jìn)一步,拖動畫面可以被呈現(xiàn)在頂層或z-索引處,以防止拖動畫面被頁面上的其他元素削減。在傳統(tǒng)的技術(shù)中,從元素到拖動畫面的轉(zhuǎn)變由于在呈現(xiàn)中的瞬時缺陷通常對用戶顯而易見,因為原始元素迅速回到其原始位置并且新的畫面出現(xiàn)在用戶的手指下。然而,使用高性能觸摸拖放,從元素到拖動畫面的轉(zhuǎn)變是平滑的。
[0091]為了確??赏蟿拥脑卦谕蟿悠陂g不被阻擋,在拖放操作被發(fā)起以維持頂層上的可拖動元素的時間實施z索引。在至少一些實施例中,可以應(yīng)用轉(zhuǎn)變動畫,該轉(zhuǎn)變動畫在其原始Z索引中使元素淡出,并且在新的Z索引處使拖動畫面淡入以減少視覺“彈出”,否則如果元素最初被阻擋,視覺“彈出”將發(fā)生??商娲鼗虼送猓D(zhuǎn)變動畫可以持續(xù)比兩個垂直消隱間隔更長,以便隱藏該缺陷。
[0092]現(xiàn)在考慮圖11,圖11是描述依據(jù)一個或多個實施例的方法中的步驟的流程圖。該方法可以結(jié)合任何合適的硬件、軟件、固件、