作者tga123 (叛帝)
看板AndroidDev
標題[閒聊] 螢幕鎖的製作...
時間Thu Jan 9 18:24:23 2014
我今天原本打算要製作一種特效
就做是像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;
}
}
}
});
--
ボ ◢ ◥══
◢ ◥═══
◢ ◥◣ ══
◥◣◢◤◣
═ ◣◢═Vocaloi
d╮
║
◣ ◤◥ ◢◢◢▼ 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