當前位置:編程學習大全網 - 源碼下載 - [Android]創建下拉放大效果

[Android]創建下拉放大效果

在其他app上看到這樣的效果,覺得有點意思,於是決定也實現類似的效果。

(其實iOS的同學在實現功能的時候是隨意播放的。)

效果大概值得這樣:

在閱讀了UI之後,

“這個效果不錯。”

“為什麽不在安卓上做?”所以~ ~

作為壹個有抱負的程序員,我決定達到這樣的效果(腦子裏都是草和泥馬)

這樣的效果~ ~

利用自定義的ViewGroup,通過手勢的處理,應該可以實現吧?

主要應該分為兩部分:

比較麻煩的應該在第壹部分,需要對事件的分布有壹定的了解。

說到手勢判斷,就不可避免的要處理事件分布。

下拉部分

1.處理onInterceptTouchEvent中的事件。如果是下拉事件,截取事件,交給onTouchEvent處理。

2.在onTouchEvent中通過計算得到下拉距離,然後動態改變Header的配置,達到放大效果。

重置零件

重置onTouchEvent的ACTION_UP中的Header以實現反彈。

知道了思路之後,實現起來就比較簡單了。

創建壹個ViewGroup(因此命名為FlexibleLayout)來繼承LinearLayout。

對onInterceptTouchEvent的處理

第壹,是否是下拉事件,通過兩個條件判斷:

然後通過mIsBeingDragged來標記拖動的開始。

onTouchEvent的處理

修改頭部尺寸

得到下拉距離後,可以通過改變表頭的大小來達到放大的效果。

可以自由彈奏放大和復位的部分。

在這裏,我們使用數學。Pow (offset,0.8)得到實際要增加的高度,通過計算得到相應的寬度和偏移量(類似阻尼效果)。

重置磁頭

只需將寬度、高度和偏移量直接設置為原始參數。

(如果覺得復位過程不夠流暢,可以通過動畫完成壹個流暢的復位效果,這裏就不演示了。)

至此,壹個簡單的下拉和放大效果就完成了。試試效果

使用

只需將FlexibleLayout放在需要下拉放大的布局上,比如ScrollView。

影響

滾動視圖:

回收視圖:

CoordinatorLayout布局:

妳完了!!!

當然還有壹些細節的處理,比如下拉的條件,反彈的動畫,最大高度等等。具體內容可以在源代碼中看到。

完成下拉放大後,似乎忘記了壹個很重要的功能。

光顧這種下拉放大刷新怎麽辦?什麽?

這個功能留到下周,我的7小時睡眠還遠著呢~ ~

雖然沒有直接下拉刷新功能,但是在源代碼中已經曝光了壹個下拉監視器,妳也可以通過這個監視器實現下拉刷新操作。

它在這裏

(為了還清上周欠的債~ ~)

類似於下拉放大,通過對手指滑動的監控,利用視圖的平移和旋轉來實現移動和旋轉。

具體實施過程這裏就不貼了,直接看效果就好。

有興趣可以直接去Github看看源代碼和用法。

開源代碼庫

PullZoomView

Android事件分發機制詳細介紹,妳值得擁有。

  • 上一篇:如何把主板上的聲卡spdif和顯卡的spdif連接起來
  • 下一篇:刷彩虹源代碼代
  • copyright 2024編程學習大全網