Android開發之神奇的Fading Edge,讓你的View更有層次感!

來源:互聯網
上載者:User

標籤:textview   class   基礎   表示   動效   res   nts   new   roi   

最近在研究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繪製過程中重要的一步,繞不過的坎!可是要理解源碼,我們就得Crowdsourced Security Testing道這個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更有層次感!

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.