ScrollView反彈效果的實現

2022-08-16 08:51:14 字數 2134 閱讀 9921

import

android.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...