自己的ScrollView實現反彈效果

2021-06-22 07:30:36 字數 1758 閱讀 1157

public class myscrollview extends scrollview 

/***

* 根據 xml 生成檢視工作完成.該函式在生成檢視的最後呼叫,在所有子檢視新增完之後. 即使子類覆蓋了 onfinishinflate

* 方法,也應該呼叫父類的方法,使該方法得以執行.

*/

@override

protected void onfinishinflate() }

/***

* 監聽touch

*/@override

public boolean ontouchevent(motionevent ev)

return super.ontouchevent(ev);

} /***

* 觸控事件

* * @param ev

*/

private 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())

log.e("kk", "矩形:" + inner.getleft() + "," + inner.gettop()

+ "," + inner.getright() + "," + inner.getbottom());

// 移動布局

inner.layout(inner.getleft(), inner.gettop() - deltay / 2,

inner.getright(), inner.getbottom() - deltay / 2);

} iscount = true;

break; }}

/***

* 回縮動畫

*/ private void animation()

/***

* 是否需要移動布局 inner.getmeasuredheight():獲取的是控制項的總高度

* * getheight():獲取的是螢幕的高度

* * @return

*/

private boolean isneedmove()

return false;

} // 是否需要開啟動畫

private boolean isneedanimation()

}

彈性scrollview的實現

public class stretchscrollview extends scrollview public stretchscrollview context context,attributeset attrs override protected void onfinishinflate ...

scrollView實現輪播

1.2.brief 建立輪播,在tableview建立之後和資料載入後 3.4.void createcarousel 24.carousel.contentoffset cgpointmake screen w,0 25.26.27.carouselback addsubview carousel...

ScrollView反彈效果的實現

import android.content.context import android.graphics.rect import android.util.attributeset import android.view.motionevent import android.view.view ...