亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

Android的Launcher中拖拽圖標,停留,顯示卸載

系統 1961 0

使用用ADW的Launcher的人應該有點印象里面的功能,就是拖拽應用或者Widget圖標到刪除圖標上,停留1秒以上,

則會顯示"Drop to uninstall"的提示,放開則打開卸載該程序的界面,現在就是要分析模仿這個功能。

主要用到有兩方面的東西,卸載和停留提示。

卸載主要使用的是:

從這個來看,要卸載一個應用,主要是知道其PackageName即可。

當拖拽圖標到刪除欄上,停留超過一定時間的時候,就轉到卸載的模式,這個可以用Handler的

postDelayed ( Runnable r, long delayMillis)

來實現。

我們現在來分析一下拖拽所產生的響應事件,

當開始拖拽的時候,首先運行的是:

onDragStart->onDragOver->onDragExit->onDragEnd.

當把圖標拖動進入刪除區域的時候,會執行onDragEnter,移出則執行onDragExit.

而如果圖標是拖入到刪除區域再松開的話,則會是onDragEnter->onDragDrop->onDragExit->onDragEnd.

拖動結束一定會執行的兩個事件是onDragExit->onDragEnd.其中onDragExit在onDragEnd之前發生。

因此在onDragEnter的時候,讀取PackageName和postDelayed發送一個延遲消息給Runnable(設置卸載標志)

然后在onDragExit里面再

removeCallbacks ( Runnable r)移除隊列里面的消息,

postDelayed一個消息,清空卸載標志,當然這里的延遲時間要比前面onDragEnter里面的時間要小得多,

這樣實現的效果是:

1. 如果是拖拽進刪除區域,再拖出來的時候,會清空卸載標志;

2. 如果是拖拽進刪除區域足夠長時間再放開(應該打開卸載界面,已經設置卸載標志),確保延遲的時間內onDragEnd已經執行,因為postDelayed是清空卸載標志的,所以如果要保留卸載標志,需要延遲時間要比onDragEnd執行時間大。

最后在onDragEnd的時候,判斷卸載標志和程序PackageName如果符合條件則執行卸載動作。

呵呵,說得不是很清楚,下面上主要源碼:

onDragEnter:

onDragExit:

onDragEnd:

運行效果圖:

Android的Launcher中拖拽圖標,停留,顯示卸載的分析

Android的Launcher中拖拽圖標,停留,顯示卸載的分析


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦?。?!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 91亚洲精品一区二区福利 | 亚洲va欧美va人人爽夜夜嗨 | 日本a∨在线 | 久久一级片 | 亚洲综合色自拍一区 | 亚洲一级理论片 | 免费观看羞羞视频网站 | 天天天天 | 国产最新网站 | 久久午夜国产片 | 天天干夜夜撸 | 亚洲视频精选 | 久久久久国产精品免费看 | 久久亚洲视频 | 亚洲欧美久久精品一区 | 亚洲第一成人在线 | 香蕉视频18 | 在线观看视频国产 | 国产精品一区二区久久不卡 | 欧美三级中文字幕 | 色婷婷在线视频 | 日韩三区 | 另类综合视频 | 久久精品在线免费观看 | 四虎最新影院 | 久久99精品综合国产首页 | 久久久久国产精品美女毛片 | 久久久久国产精品免费看 | 免费看片aⅴ免费大片 | 亚洲精品午夜久久久伊人 | 欧美天堂在线视频 | 色老老精品偷偷鲁 | 色综合久久精品中文字幕首页 | 毛片大全 | 日本精品a在线 | 操一操| 久久久综合网 | 国产精品久久久久久搜索 | 毛片大全在线观看 | 亚洲 欧美 中文字幕 | 国产精品亚洲精品 |