星空數獨開發總結(六) ScrollView

2021-08-22 01:11:40 字數 2895 閱讀 3511

1,當一整個介面放不下我們的元件的時候,就要用到scrollview了。

應用挺簡單的,在xml檔案裡設定乙個就ok了,注意一下,該元件裡只能放置乙個子布局,但是子布局就沒有這個限制了。

2,因為有滑動回彈的效果,所以投了乙個別人的demo,這裡放在這裡,但願被偷的人看不到。。。。

public class reboundscrollview extends scrollview 

public reboundscrollview(context context, attributeset attrs)

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

/** after inflating view, we can get the width and height of view */

@override

protected void onfinishinflate()

@override

protected void onlayout(boolean changed, int l, int t, int r, int b)

public reboundscrollview setonreboundendlistener(onreboundendlistener onreboundendlistener)

public reboundscrollview setenabletoprebound(boolean enabletoprebound)

public reboundscrollview setenablebottomrebound(boolean menablebottomrebound)

private int lasty;

private boolean rebound = false;

private int rebounddirection = 0; //<0 表示下部回彈 >0 表示上部回彈 0表示不回彈

@override

public boolean dispatchtouchevent(motionevent ev)

switch (ev.getaction())

//處於頂部或者底部

int deltay = (int) (ev.gety() - lasty);

//deltay > 0 下拉 deltay < 0 上拉

//disable top or bottom rebound

if ((!menabletoprebound && deltay > 0) || (!menablebottomrebound && deltay < 0))

int offset = (int) (deltay * 0.48);

mcontentview.layout(mrect.left, mrect.top + offset, mrect.right, mrect.bottom + offset);

rebound = true;

break;

case motionevent.action_up:

if (!rebound) break;

rebounddirection = mcontentview.gettop() - mrect.top;

translateanimation animation = new translateanimation(0, 0, mcontentview.gettop(), mrect.top);

animation.setduration(300);

animation.setanimationlistener(new animation.animationlistener()

@override

public void onanimationend(animation animation)

if (rebounddirection < 0)

rebounddirection = 0;}}

@override

public void onanimationrepeat(animation animation)

});mcontentview.startanimation(animation);

mcontentview.layout(mrect.left, mrect.top, mrect.right, mrect.bottom);

rebound = false;

break;

}return super.dispatchtouchevent(ev);

}@override

public void setfillviewport(boolean fillviewport)

/*** 判斷當前scrollview是否處於頂部

*/private boolean isscrolltotop()

/*** 判斷當前scrollview是否已滑到底部

*/private boolean isscrolltobottom()

/*** listener for top and bottom rebound

* do your implement in the following methods

*/public inte***ce onreboundendlistener

}

應用的時候,把xml檔案裡的換成該類的包名加類名就ok了。

3.當你設定scrollview後會發現介面會先顯示最上面的內容。怎麼讓他從下面開始顯示呢

設定一下。利用內建方法scrollto

rsv.post(new runnable() 

//因為要求介面載入時就是在底部,所以需要新建乙個執行緒來保證

});

星空數獨開發總結(一) 閃屏製作

android小白,在公司經過乙個月的實習,大體完成了一款星空數獨遊戲的開發,現將學習內容,歸納,總結,備忘 閃屏製作 1,新建splash.activity檔案 在androidmainfest.xml檔案中將以下 從main.activity剪下到splash.activity下 該段 作用 設...

星空數獨開發總結(十) 標記功能的實現

這些邏輯上的東西寫起來會比較麻煩一點 1,按鍵監聽 mark.setonclicklistener new view.onclicklistener else 2,用乙個陣列儲存標記內容 private int smallcell new int 81 9 第乙個用來儲存空格位置,第二個用來儲存輸入...

星空數獨開發總結(八) 進度條和倒計時

採用條形進度條,上方有10分鐘倒計時 系統預設進度條形狀圓形,在xml檔案中設定 android visibility visible 設定可見 style android style widget.progressbar.horizontal 條形倒計時的話推薦我在github上偷的utils,賊...