編輯:關於Android編程
一直對於這幾個概念沒有仔細區分過.
現在找個時間來分析一下這個幾個東西
scrollTo,scrollBy和Scroller 具體用法:
首先 scrollTo(x,y) 的參數是絕對坐標移動到x,y的位置區
btnScroll = (Button) findViewById(R.id.button1); llMain = (LinearLayout) findViewById(R.id.ll_main); // zslMain = (ZScrollLayout) findViewById(R.id.ll_main); btnScroll.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // llMain.scrollBy(-50, 0); llMain.scrollTo(-50, 0); // zslMain.startSrcoll(); } });
然後 scrollBy(x,y)是相對坐標,每一次scroll都會偏移相應的偏移量
btnScroll = (Button) findViewById(R.id.button1); llMain = (LinearLayout) findViewById(R.id.ll_main); // zslMain = (ZScrollLayout) findViewById(R.id.ll_main); btnScroll.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { llMain.scrollBy(-50, 0); // llMain.scrollTo(-50, 0); // zslMain.startSrcoll(); } });
ps: 特別要指出的一點是,scrollTo和scrollBy 都是由父控件調用後,父控件移動子控件的,這個可能表達的有點繞了,具體可以看代碼
最後 Scroller 是滾動器,與scroolTo和scrollBy有較大的差別。Scroller的是專門用來計算漸變坐標的一個類,它並不負責UI的更新而只是純粹的數據計算。
Scroller 的UI更新是通過調用上面的兩個函數來實現的。
這個是自定義的父控件,需要 重寫computeScroll函數,這個函數是在繪制動作是每次都會調用的,android也正是通過這種方式的漸變移動效果
public class ZScrollLayout extends LinearLayout { private Scroller mScroller; public ZScrollLayout(Context context, AttributeSet attrs) { super(context, attrs); mScroller = new Scroller(context); } public void startSrcoll() { mScroller.startScroll(10, 0, -300, 0, 5000); invalidate(); } @Override public void computeScroll() { if (mScroller.computeScrollOffset()) { // 產生了動畫效果,根據當前值 每次滾動一點 scrollTo(mScroller.getCurrX(), mScroller.getCurrY()); // 此時同樣也需要刷新View ,否則效果可能有誤差 postInvalidate(); } } }
btnScroll = (Button) findViewById(R.id.button1); // llMain = (LinearLayout) findViewById(R.id.ll_main); zslMain = (ZScrollLayout) findViewById(R.id.ll_main); btnScroll.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { llMain.scrollBy(-50, 0); llMain.scrollTo(-50, 0); // zslMain.startSrcoll(); } });
完整demo地址:http://download.csdn.net/detail/zmobs/6704237
復制代碼 代碼如下:public class PageWidget extends View { private Bitmap for
在Android中,UI主線程並非線程安全的,所有UI相關的操作均需在UI主線程中完成。在默認情況下,開發者創建的Service、Activity、Broadcast均運
什麼是線程?線程或者線程執行本質上就是一串命令(也是程序代碼),然後我們把它發送給操作系統執行。一般來說,我們的CPU在任何時候一個核只能處理一個線程。多核處理器(目前大
本文實例講述了Android中ListView下拉刷新的實現方法。分享給大家供大家參考,具體如下:ListView中的下拉刷新是非常常見的,也是經常使用的,看到有很多同學