importandroid.content.context;
import
android.graphics.rect;
import
android.util.attributeset;
import
android.view.motionevent;
import
android.view.view;
import
android.view.animation.translateanimation;
import
android.widget.scrollview;
/*** scrollview**效果的實現 */
public
class bouncescrollview extends
scrollview
/***
* 根據 xml 生成檢視工作完成.該函式在生成檢視的最後呼叫,在所有子檢視新增完之後. 即使子類覆蓋了 onfinishinflate
* 方法,也應該呼叫父類的方法,使該方法得以執行.
*/@override
protected
void
onfinishinflate()
}/***
* 監聽touch
*/@override
public
boolean
ontouchevent(motionevent ev)
return
super
.ontouchevent(ev);
}/***
* 觸控事件
* *
@param
ev
*/public
void
commontouchevent(motionevent ev)
break
;
/***
* 排除出第一次移動計算,因為第一次無法得知y座標, 在motionevent.action_down中獲取不到,
* 因為此時是myscrollview的touch事件傳遞到到了listview的孩子item上面.所以從第二次計算開始.
* 然而我們也要進行初始化,就是第一次移動的時候讓滑動距離歸0. 之後記錄準確了就正常執行.
*/case
motionevent.action_move:
final
float prey = y;//
按下時的y座標
float nowy = ev.gety();//
時時y座標
int deltay = (int) (prey - nowy);//
滑動距離
if (!iscount)
y =nowy;
//當滾動到最上或者最下時就不會再滾動,這時移動布局
if(isneedmove())
//移動布局
inner.layout(inner.getleft(), inner.gettop() - deltay / 2,
inner.getright(), inner.getbottom() - deltay / 2);
}iscount = true
;
break
;
default
:
break
; }
}/***
* 回縮動畫
*/public
void
animation()
//是否需要開啟動畫
public
boolean
isneedanimation()
/***
* 是否需要移動布局 inner.getmeasuredheight():獲取的是控制項的總高度
* * getheight():獲取的是螢幕的高度
* *
@return
*/public
boolean
isneedmove()
return
false
; }
}
自己的ScrollView實現反彈效果
public class myscrollview extends scrollview 根據 xml 生成檢視工作完成.該函式在生成檢視的最後呼叫,在所有子檢視新增完之後.即使子類覆蓋了 onfinishinflate 方法,也應該呼叫父類的方法,使該方法得以執行.override protect...
ScrollView 實現滾動效果
布局檔案 縱向滾動條 需要新增滾動條的內容.水平滾動條 內容 設定滾動條屬性 sethorizontalscrollbarenable false setverticalscrollbarenable false 監聽scrollview何時滑到底部 setontouchlistener activ...
自定義具有回彈效果的ScrollView
專案中需要具有回彈效果的scrollview,可設定最大拖動距離,實現回彈效果。可以用來解決與子布局中的onclick事件衝突問題。override public boolean canscrollvertically int direction public class springbackscr...