Android功能總結(jié):仿照Launcher的Workspace實(shí)現(xiàn)左右滑動切換 |
稿件投遞 收藏本頁 2011年06月22日 20:50 http://www.cnmsdn.com/ |
對于Launcher的桌面滑動大家應(yīng)該都比較熟悉了,最好的體驗(yàn)應(yīng)該是可以隨著手指的滑動而顯示不同位置的桌面, 比一般用ViewFlinger+動畫所實(shí)現(xiàn)的手勢切換頁面感覺良好多了~~~~ 分析了一下Launcher中的WorkSpace,里面有太多的代碼我們用不上了(拖拽,長按,,,),把里面的冗余代碼去掉得到實(shí)現(xiàn)滑動切換屏幕所必需的。。。。 新建一個(gè)ScrollLayout類,繼承自ViewGroup。 重寫onMeasure和onLayout兩個(gè)方法: 其中onMeasure方法中,得到ScrollLayout的布局方式(一般使用FILL_PARENT),然后再枚舉其中所有的子view,設(shè)置它們的布局(FILL_PARENT),這樣在ScrollLayout之中的每一個(gè)子view即為充滿屏幕可以滑動顯示的其中一頁。 在onLayout方法中,橫向畫出每一個(gè)子view,這樣所得到的view的高與屏幕高一致,寬度為getChildCount()-1個(gè)屏幕寬度的view。 添加一個(gè)Scroller來平滑過渡各個(gè)頁面之間的切換, 重寫onInterceptTouchEvent和onTouchEvent來響應(yīng)手指按下劃動時(shí)所需要捕獲的消息,例如劃動的速度,劃動的距離等。再配合使用scrollBy (int x, int y)方法得到慢速滑動小距離的時(shí)候,所需要顯示的內(nèi)容。最后當(dāng)手指起來時(shí),根據(jù)劃動的速度與跨度來判斷是向左滑動一頁還是向右滑動一頁,確保每次用戶操作結(jié)束之后顯示的都是整體的一個(gè)子view. ScrollLayout源碼: view plaincopy to clipboardprint? package com.yao_guet.test; import Android.content.Context; import android.graphics.Canvas; import android.util.AttributeSet; import android.util.Log; import android.view.MotionEvent; import android.view.VelocityTracker; import android.view.View; import android.view.ViewConfiguration; import android.view.ViewGroup; import android.widget.Scroller; /** * 仿Launcher中的WorkSapce,可以左右滑動切換屏幕的類 |
聯(lián)系客服