Android开发之神奇的Fading Edge,让你的View更有层次感!
最近在研究Android Framework層源碼,發現我們對源碼的理解應該建立在對API的理解之上,如果有一些API你沒用過,那么即使你在源碼中見到這個東西都不知道是干嘛的,更談不上理解了。一直以來我都很想把View的繪制方法draw詳細的走一遍,但是這里涉及到的細節問題是在是太多了,因此,今天我們還是先來看看Fading Edge,為draw方法詳解繼續打基礎。
在這篇博客之前,我已經陸續推出了五篇關于View繪制的文章,相信這五篇博客對你理解本篇博客會有幫助。
1.View繪制詳解,從LayoutInflater談起
2.View繪制詳解(二),從setContentView談起
3.View繪制詳解(三),扒一扒View的測量過程
4.View繪制詳解(四),諞一諞layout過程
5.View繪制詳解(五),draw方法細節詳解之View的滾動/滑動問題
為什么要說Fading Edge?這個在我們平時開發中并不怎么起眼的API其實是View繪制過程中重要的一步,繞不過的坎!可是要理解源碼,我們就得先知道這個Fading Edge到底是干什么的?從字面來理解,這個是實現邊緣漸變效果的,OK,那我們先來看看效果圖:
我這里以一個滾動的TexView為例,小伙伴們看到了這種帶陰影的效果。Fading Edge也可以使用在ListView上,效果類似。OK,那我們就先來看看上面這種效果怎么實現。
一般來說,要想實現TextView的滾動效果,很多小伙伴首先想到的方法可能都是ScrollView中嵌套一個TextView,但是實際上,不這樣做我們依然可以實現TextView的滾動效果,我們先來看看上文中藍色TextView的滾動效果如何實現:
<TextView
android:id="@+id/tv"
android:layout_width="match_parent"
android:layout_height="128dp"
android:background="@color/colorPrimary"
android:fadingEdgeLength="50dp"
android:requiresFadingEdge="vertical"
android:text="@string/content"/>
fadingEdgeLength表示陰影部分的高度,requiresFadingEdge表示陰影的方向。方向可以是水平的,也可以是垂直的。水平效果我一會再說。當然,如果我們只是在xml文件中這樣寫,TextView還是無法滾動起來,還需要在Activity中添加如下一行代碼,TextView才能滾動起來,如下:
tv.setMovementMethod(new ScrollingMovementMethod());
當然,我們也可以借助ScrollView讓TextView滾動起來,這個時候只需把Fading Edge相關的屬性添加到ScrollView中即可:
<ScrollView
android:layout_width="match_parent"
android:layout_height="128dp"
android:layout_marginTop="20dp"
android:fadingEdgeLength="50dp"
android:requiresFadingEdge="vertical">
<TextView
android:layout_width="match_parent"
android:layout_height="72dp"
android:scrollbars="vertical"
android:text="@string/content"/>
</ScrollView>
相關屬性的含義不用我再說了吧!
OK,接下來我們再來看一個水平方向上的效果:
越到末尾的時候字的顏色慢慢變淡直到消失。OK,那么這個效果要怎么實現呢?看下面:
<TextView
android:id="@+id/tv"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:singleLine="true"
android:ellipsize="none"
android:background="@color/colorPrimary"
android:fadingEdgeLength="200dp"
android:requiresFadingEdge="horizontal"
android:text="@string/content"/>
OK,除此之外,最后我們再來看看Fading Edge在ListView中的使用吧。先來看看效果圖:
其實在Fading Edge使用時候,ListView中這種效果算是最容易實現的一種了,我們來看看代碼:
<ListView
android:id="@+id/lv"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fadingEdge="vertical"
android:fadingEdgeLength="200dp"
android:requiresFadingEdge="vertical"></ListView>
數據綁定就是普通的綁定方式,不贅述。
OK,這就是我們View中Fading Edge的一個簡單使用,先記錄下來,為后面全面分析draw方法打下基礎。
以上。
總結
以上是生活随笔為你收集整理的Android开发之神奇的Fading Edge,让你的View更有层次感!的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: avoid
- 下一篇: 天龙八部畅易阁 抢号