自定義ScrollView實現頭尾部的下拉,上拉

2021-08-14 01:52:27 字數 1612 閱讀 3613

public class myscrollview extends scrollview 

public myscrollview(context context, attributeset attrs)

public myscrollview(context context, attributeset attrs, int defstyleattr)

//假設scrollview中有個linearlayout,首先獲取linearlayout

@override

protected void onfinishinflate()

private int lasty;//上次移動的y座標

private rect normal = new rect();//記錄預設的座標

private boolean isfinishanimation = true;

private int lastx, downx, downy;

/** * 事件攔截:攔截:實現父檢視對子檢視的攔截

* 是否攔截成功,取決於方法的返回值。返回值true:攔截成功。反之,攔截失敗

*/@override

public boolean onintercepttouchevent(motionevent ev)

lasty=eventy;

lastx=eventx;

break;

}return isintercept;

}@override

public boolean ontouchevent(motionevent ev)

int eventy = (int) ev.gety();

switch (ev.getaction())

//重新布局

childview.layout(childview.getleft(), childview.gettop() + dy / 2

, childview.getright(), childview.getbottom() - dy / 2);

}lasty = eventy;//重新賦值

break;

case motionevent.action_up:

if (isneedanimation())

@override

public void onanimationend(animation animation)

@override

public void onanimationrepeat(animation animation)

});//啟動動畫

childview.startanimation(translateanimation);

}break;

}return super.ontouchevent(ev);

}private boolean isneedmove()

//其他處在臨界範圍內的,返回false。即表示,仍按照scrollview的方式處理

return false;

}//判斷是否需要執行平移動畫

public boolean isneedanimation()

}

scroll view實現自定義下拉重新整理

refresher enabled true 開啟下拉重新整理 refresher triggered 設定當前下拉重新整理狀態,true 表示下拉重新整理已經被觸發,false 表示下拉重新整理未被觸發 bindrefresherrefresh 自定義下拉重新整理被觸發事件 bindscrollt...

自定義水平ScrollView

description 自定義水平 scrollview 水平滑動 public class cushoriscrollview extends horizontalscrollview public cushoriscrollview context context,attributeset at...

自定義scrollview彈性布局

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