跑馬燈相關屬性
站在用戶的角度思考問題,與客戶深入溝通,找到陳倉網站設計與陳倉網站推廣的解決方案,憑借多年的經驗,讓設計與互聯網技術結合,創造個性化、用戶體驗好的作品,建站類型包括:做網站、網站制作、企業官網、英文網站、手機端網站、網站推廣、空間域名、網站空間、企業郵箱。業務覆蓋陳倉地區。
上面方式1能暫時實現跑馬燈效果,但在多次點擊事件之后容易失焦。而且在Android4.4上實現有短暫停頓。
MarqueeTextView
MarqueeTextView
attrs.xml
使用
MarqueeView :可垂直跑、可水平跑的跑馬燈。
MarqueeViewLibrary :一個很方便使用和擴展的跑馬燈Library,通過提供不同的MarqueeFactory來定制不同的跑馬燈View, 并且提供了常用類型的跑馬燈效果:SimpleMarqueeView。
XML
設置字符串列表數據,或者設置自定義的Model數據類型
設置字符串數據
設置事件監聽
在 Activity 或 Fragment 中
在 ListView 或 RecyclerView 的 Adapter 中
在某些情況下,我們可能需要使底部tabbar的中間按鈕突出,即類似于如下的效果:
在android要實現該效果,十分簡單,只需要在按鈕的父布局將android:clipChildren屬性設置為false:
并設置按鈕的layout_gravity為bottom:
示例布局文件如下:
其中android:clipChildren屬性的作用為 是否限制子View不超過父布局,默認情況下是為true。當該屬性為true時,子View超出父布局的部分會被裁剪。 因此,將該屬性設置為false,父布局不再裁剪子View超出父布局的部分,就能實現突出按鈕的效果了。
在App中添加一些動畫效果,會給用戶耳目一新,眼前一亮的感覺,讓APP顯的高端大氣上檔次,因此開發項目的過程中能夠實現一些常見的動畫效果還是很有必要的,Android本身提供了豐富的動畫API,方便我們實現炫酷的動畫效果。
先放上幾張實現的效果圖:
一幀一幀進行播放,它的原理與Gif類似,按序播放一組預先定義好的圖片序列,如:
直接更改View 的屬性來實現的動畫。
工作原理:在一定時間間隔內,通過不斷調用set方法對值進行改變,并不斷將該值賦給對象的屬性,從而實現該對象在該屬性上的動畫效果
Google在Android 5.0之后推出的一種動畫效果,就是以某種方式從一個場景以動畫的形式過渡到另一個場景,可以參考 Material-Animations ,常用于點擊列表頁中的圖片跳轉到大圖或由列表頁跳轉到詳情頁
Lottie 是 Airbnb推出的一套跨平臺的動畫完整解決方案,它能夠幫助開發者直接加載json格式的文件在 iOS、Android 和 React Native之上,實現 100% 與設計稿相同的動畫效果,而無需關心中間的實現細節。設計師只需要使用 After Effectes 設計出動畫之后,通過使用 Lottie 提供的Bodymovin插件將設計好的動畫導出成json格式的文件交付給開發即可完成。 Lottie網站 lottie-android
跨平臺的即時通信軟件Telegram推出的新的Sticker貼紙格式,這個全新的 Sticker 貼紙格式為 .tgs,其實就是基于Lottie json文件改造而來的一種格式
GIF(Graphics Interchange Format)是由CompuServe公司開發的一種圖像文件格式,可以將多幅圖像保存到一個圖像文件,展示的時候將多幅圖像數據逐幀讀出并顯示到屏幕上,從而形成動畫效果。在Android中播放GIF通常有以下幾種方式:
animlogoview
Telegram
在其他App上看到了這樣的一個效果,感覺有點意思,于是決定實現一個類似的效果。
( 其實是iOS的同學在實現功能的時候隨意發揮了一下 )
效果大概值這樣子的:
UI看完后
“這個效果不錯啊”
“要不你們Android也么做?” 于是~~
作為一個有追求的程序員,決定也要實現一個這樣的效果 (滿腦子都是草泥馬在奔騰)
這樣的效果嘛~~
利用自定義的 ViewGroup ,通過對手勢的處理,應該就能實現了吧?
主要應該分兩部分:
比較麻煩的應該是在第一部分,需要對事件的分發有一些理解。
說到手勢的判斷,難免需要對事件分發進行處理。
下拉部分
1、在 onInterceptTouchEvent 中對事件進行處理,如果為下拉事件,則將該事件攔截,交給 onTouchEvent 處理;
2、在 onTouchEvent 中通過計算得到下拉的距離,然后動態改變 Header 的配置,實現放大的效果。
重置部分
在 onTouchEvent 的 ACTION_UP 中重置 Header ,實現回彈
知道思路以后,實現起來就比較簡單了
創建一個 ViewGroup (這么命名為 FlexibleLayout )繼承 LinearLayout 。
onInterceptTouchEvent的處理
先通過兩個條件判斷是否為下拉事件:
然后通過 mIsBeingDragged 來標記開始拖拽
onTouchEvent的處理
修改頭部大小
得到下拉的距離后,就可以來改變 Header 的大小,實現放大效果了。
放大、重置的部分大家可以自由發揮
這里利用 Math.pow(offsetY, 0.8) 得到實際需要增加的高度,通過計算得到對應的寬度以及偏移(類似阻尼效果)。
重置頭部
直接將寬高以及偏移設置成原來的參數即可。
(如果覺得這樣重置過程不夠絲滑,可以通過動畫來完成一個流暢的重置效果,這里就不演示了)
到這里,一個簡易拉下放大的效果就做完了。試試效果
使用
直接在需要下拉放大的布局外面套上 FlexibleLayout 即可,例如 ScrollView
效果
ScrollVIew:
RecyclerView:
CoordinatorLayout:
大功告成!!!
當然里面還有一些細節的處理,比如下拉的條件、回彈的動畫、最大高度等,具體內容的可以在 源碼 中看到。
完成下拉放大后,貌似把一個很重要的功能遺忘了下拉刷新 ??
光顧這下拉放大,刷新怎么辦?【黑人問號】
這個功能留著下周實現吧,我的7小時睡眠已遙遙無期~~
雖然沒有直接實現下拉刷新的功能,不過源碼中已經暴露了一個下拉的監聽,你也可以通過這個監聽實現下拉刷新的操作
到這里就結束了
(來還上周欠下的債~~)
和下拉放大類似,通過希手指下滑的監聽,利用 View 的 translationY 和 rotation 實現移動和旋轉。
具體的實現過程這里就不貼出來了,直接看效果吧
有興趣的可以直接去 Github 上看源碼以及用法。
Github
PullZoomView
Android事件分發機制 詳解攻略,您值得擁有
Transition 框架是 Android 4.4 KitKat 中加入的,但在 5.0 才開始被人應用起來,
而且這一部分也涉及了 22.0 的 API,雖然有對應的 support.v4 包,但也還是有點問題。
所以這一部分可以說是 5.0 以上適用的方法。
效果(錄制出來的效果有點卡頓):
這里遇到一點小問題,即上述 Activity 引用的 style 中不僅設置了 android:windowIsTranslucent ,也設置了 android:windowIsTranslucent : 讓 Activity 的背景為透明,在我測試的時候發現使用共享元素的時候出現了返回時閃屏的現象,解決方法是設置 Activity 背景顏色為透明。
在 onCreate 中:
或者在上述的 style 中的 theme 添加:
在打開的 Activity 的 xml 中
對應的 ImageView 中的 android:transitionName 屬性值必須相同,而對兩個控件的大小、id 等屬性并無要求。
在 makeSceneTransitionAnimation 傳入的參數中,mImgView 是第一個界面中 ImageView 的實例,第三個參數對應 xml 中的 android:transitionName 的值。
因為打開新的 Activity 的時候,可能要去加載新的圖片,這時候我們需要 延遲過渡動畫的開始 ,直到圖片加載完成之后再開始動畫。否則會出現各種 bug。
所以要在第二個 Activity 中的 onCreate() 中阻止動畫的執行:
然后在圖片加載完成后開始動畫:
當然,啟動動畫不一定要等待圖片加載完成再進行,因為還存在著圖片加載失敗、加載時間過長等問題,這里只是提出一種方法,實際還是自己看情況決定。
以上只是簡單的實現了一種效果,關于 Transition 的使用、共享元素在
Fragment 中的使用、多個共享元素的使用等,在這里暫時不打算細講,可以參考:
使用 Transition FrameWork 實現有意義的轉場動畫(譯)
(譯)Android 5.0 頁面共享元素過渡
定義定制動畫
原理大概就是如此,實現動畫的方法有很多種。
可以參考:
Activity 共享元素轉場動畫實踐
Android共享元素轉場動畫兼容實踐
Android在5.0版為Button默認添加了點擊時的漣漪效果,而且在其他的控件上也可以輕松的實現這種炫酷的效果。
我們只需要在控件的android:backgroud 屬性上進行設置即可。
如果控件已經使用了android:background屬性去設置背景色或者背景圖片,但是有想要有點擊時的漣漪效果。那么我們可以考慮在android:foreground屬性中設置漣漪效果,這樣同樣可以達到點擊時產生漣漪,也不會影響我們對控件背景的設置。
不過對于默認無法點擊的控件,還要記得設置android:clickable為true。另外還要注意,如果Android版本過低,無邊界的漣漪效果可能無法很好的展。
有邊界的漣漪效果:
無邊界的漣漪效果:
除了進行上面的設置之外,還要記得設置控件為可點擊的
主要是在資源文件夾里創建.xml文件:
1.沒有邊界的Ripple(Ripple With No Mask)
2.用顏色作為Mask的Ripple(Ripple With Color Mask),然而顏色并沒有什么卵用
3.用圖片作為Mask的Ripple(Ripple With Picture Mask)
4.用設定形狀作為Mask的Ripple(Ripple With Shape Mask)
5.搭配selector作為Ripple(Ripple With Selector)
參考文檔:
Android Ripple的詳解
分享標題:android效果,安卓特色功能
文章鏈接:http://m.newbst.com/article4/phheoe.html
成都網站建設公司_創新互聯,為您提供建站公司、品牌網站建設、App設計、網站設計、微信公眾號、網站收錄
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯