1. 宣告
第一次寫部落格好緊張呀!
最近在發現寫linearlayout好多頁面乙個手機上剛剛好滿屏,換乙個手機就回出現底部有一部分布局看不到完整布局,第乙個想到就是在外面套一層scrollview, 一下子就解決問題,但是每次都要套一層布局感覺麻煩了,而且套一層布局,如果布局有顏色或者半透明的話,那麼在填充布局到介面上時就會多繪畫乙個層, 所以最近重寫乙個垂直方向自帶滾動效果的linearlayout,暫時只支援垂直方向的滾動效果哦。
2. 開工
廢話不說了直接上**:
public class scrolllinearlayout extends linearlayout implements gesturedetector.ongesturelistener
public scrolllinearlayout(context context, @nullable attributeset attrs)
public scrolllinearlayout(context context, @nullable attributeset attrs, int defstyleattr)
@targetapi(build.version_codes.lollipop)
public scrolllinearlayout(context context, attributeset attrs, int defstyleattr, int defstyleres)
private void init(context context)
@override
protected void onlayout(boolean changed, int l, int t, int r, int b)
}private float mymove;
private float mylastmove;
@override
public boolean onintercepttouchevent(motionevent ev)
return super.onintercepttouchevent(ev);
}@override
public boolean dispatchtouchevent(motionevent event)
mvelocitytracker.addmovement(event);
switch (event.getaction())
mymove = event.gety();
mylastmove = mymove;
break;
case motionevent.action_move:
mymove = event.gety();
int scrolledy = (int) (mylastmove - mymove);
if (scrolledy < 0 && getscrolly() + scrolledy < 0)
if (scrolledy > 0 && getscrolly() + scrolledy > mscrollrange)
if (mscrollrange > 0)
mylastmove = mymove;
break;
case motionevent.action_up:
case motionevent.action_cancel:
if (mvelocitytracker != null && mscrollrange > 0)
releasevelocitytracker();
break;
}return super.dispatchtouchevent(event);
}/**
* mvelocitytracker**
*/private void releasevelocitytracker()
}@override
public void computescroll()
}@override
public boolean ondown(motionevent e)
@override
public void onshowpress(motionevent e)
@override
public boolean onsingletapup(motionevent e)
@override
public boolean onscroll(motionevent e1, motionevent e2, float distancex, float distancey)
@override
public void onlongpress(motionevent e)
@override
public boolean onfling(motionevent e1, motionevent e2, float velocityx, float velocityy) }
3.使用
直接在布局檔案裡面當成自定義布局使用即可,簡單方便。
4.補充
自定義滾動軸
webkit 這個是谷歌瀏覽器的字首,自定義滾動軸只有谷歌瀏覽器支援。webkit scrollbar 滾動軸整體 webkit scrollbar thumb 滑塊 webkit scrollbar track 滑動軌道 webkit scrollbar button 兩端按鈕 webkit sc...
自定義滾動導航控制項
2015 04 25 更新控制左邊距,水平間距,固定title寬屬性,增加非相鄰頻道切換不需要動畫方式。之前囤了不少自定義的控制項,都準備放上來的,但是太懶了.最近發現有需要的時候卻死活找不著了,所以決定開始整理整理,挨個放上來,既幫助了有需要的人也方便了自己.滾動導航檢視 效果圖 覺得不錯請點一下...
自定義滾動條
滾動條從外觀來看是由兩部分組成 1.滑塊 可以滑動的部分 2.軌道 即滑塊的軌道,一般來說滑塊的顏色比軌道的顏色深。滾動條的css樣式主要有三部分組成 1 webkit scrollbar 定義了滾動條整體的樣式 可以改變滾動條的寬度 2 webkit scrollbar thumb 滑塊部分 可以...