作者Wolfken ()
看板AndroidDev
標題Re: [問題] viewFlippr的的連點事件
時間Fri Nov 18 12:13:13 2011
※ 引述《motors55 (‵Д′╬)》之銘言:
: 各位先進好
: 最近用到viewFlipper來實現換頁效果
: 流程是這樣:
: 點擊viewVlipper內的button後,viewFlipper做showNext()
: 但因為點擊button後會從網路抓點東西,所以會稍微lag個零點幾秒
: 問題來了
: 若使用者在此時又按一次button則又做一次showNext()
: 等到換頁執行成功時,顯示的頁面是下下頁
: 想請問看看有沒有甚麼做法可以讓button只收第一次的點擊事件
: 我試過在點擊後將button設成disable是可以擋住之後的點擊
: 但我有的button是動態產生,不好findView將它設回enable
: 請教一下有沒有甚麼比較好的做法
: 謝謝
幾個建議
1. 即使lag零點幾秒,在換頁時依然相當明顯,何況你還是靠網路
要是網路爆慢或是斷線,你不是卡在那裡?
UI的東西絕不能卡在這種response time無法確定的東西
你可以先直接換頁,需要網路抓的東西就等抓完再用handler填回去就好
2. 真的不行的話,你把button的reference保留下來,等抓完再call就好
3. 再不然就是按一次後就把button直接destroy掉,抓完再產生一個新的
4. 或是你可以參考Looper跟Handler,用handler.post把thread塞進queue裡面
這樣他thread就會一個接一個執行,設計得宜的話也可解決問題
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 118.165.228.116
推 motors55:感謝回覆,當然要抓網路的東西時我會先判斷網路狀態 11/18 13:14
→ motors55:也會用thread讓主程式跳progressDialog來表示loading 11/18 13:16
→ motors55:文中的button不單指button,有時是listview的item 11/18 13:18
→ motors55:若destroy的話,返回此頁時list裡的內容要重抓,感覺很沒 11/18 13:19
→ motors55:效率,本文主要想請教的還是針對showNext()對連點的處理 11/18 13:21
→ motors55:我也嘗試用過點擊第一次時跑thread讓主程式睡一下,再丟 11/18 13:22
→ motors55:handler做showNext(),但有人會覺得這樣會感覺裝置的處理 11/18 13:23
→ motors55:速度很慢,連換頁都要loading,但這招是我目前嘗試出最理 11/18 13:24
→ motors55:想的做法,viewFlipper沒有child的index實在不太好用.. 11/18 13:26
→ sjrom:setDisplayedChild(index) ?? 11/18 21:53