看板 AndroidDev 關於我們 聯絡資訊
我今天原本打算要製作一種特效 就做是像nexus 5狀態列 在listview中按住其中一個item往右拉之後放開 被選取的這行item就會消失.. 找了很久發現可以利用監聽觸碰座標的方式去做.. 但是很慘的是我只需要單一item的效果.. 就是說在listview中放一個按鈕 然後按住按鈕往右邊拉..放開之後就可以消除這行listview 而不是直接拖曳listview 碰到第一個問題就是listview中的按鈕 除了按下之外好像監聽不到其他狀態... 而且更糟的是我listview套在..viewpager上 一拖曳就翻頁了.... 最後我想到用seekBar.... 這樣就可以在listview中拖曳又可以監聽的到狀態了 不過要做到...單純的放開就彈回去... 而且要做到能夠不能被直接從中段拖曳 一定要從頭的地方拖曳... 我就想把兩個bar套在一起..這樣看起來就很像了... 不會寫註解..程式碼有點亂XD 我一直想查解除待機畫面的拖曳怎麼做...但是沒有頭緒... 既然拖曳只需要拖左右而且又限制監聽...只好這樣弄了... 搞掉我一整天Q口Q 程式碼: bar1.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { @Override public void onStopTrackingTouch(SeekBar seekBar) { //沒有拉到底所以要彈回去 if(check<100){ bar1.setProgress(0); ///把被拉到的bar蓋住 bar2.setVisibility(View.VISIBLE); } //判斷歸零 w=0; bar1.setVisibility(View.VISIBLE); } @Override public void onStartTrackingTouch(SeekBar seekBar) { // TODO Auto-generated method stub } @Override public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { //判斷拖曳的起始位置 check =progress; //判斷拖曳的位置是否為頭 if(check<13&&check!=0){ w=1; //把覆蓋層拿掉 bar2.setVisibility(View.INVISIBLE); } //如果位置不是頭就讓它彈回去然後隱藏起來 //這樣看起來很像bar沒被拖動過,事實上是有的 if (w==0){ if (check>13){ bar1.setVisibility(View.INVISIBLE); bar1.setProgress(0); bar2.setVisibility(View.VISIBLE); check=0; } } } }); -- ══ ◣◢◣◢Vocaloid╮ ◤◥ ◢◢ quetzal◥◥ ◥◤ ◣◢ ║ ║ ● ●▼ ● ●◥ ● ● ; ◥▼ ▃▃ ║ ● ● ● ● ド! ███▆≡ ▅▅ ════ ◥◣ / / / ══ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.34.164.154 ※ 編輯: tga123 來自: 114.34.164.154 (01/09 18:25)
gn00742754:github上很多類似功能的,不然去看Nexus的原始碼不就 01/09 19:00
gn00742754:好了 01/09 19:00
tga123:原碼~抖~聽起好像很複雜囧 01/09 19:17
tac0wu:看原碼 是變強的第一步阿 01/09 20:52
lovelycateye:看原碼看到TODO 是變小心的第一步阿 01/10 12:56
tga123:=口=...所以我現在第一步是去摸GITHUB嗎=口=? 01/10 14:25
wuliou:github也沒啥好摸的 看到想看的Code就右下角下載zip就好了 01/11 12:16