綁定帳號登入

Android 台灣中文網

打印 上一主題 下一主題

[軟體] ViewStub範例

[複製連結] 查看: 38008|回覆: 1|好評: 3
跳轉到指定樓層
樓主
iamjason008 | 收聽TA | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
發表於 2013-10-24 13:32

馬上加入Android 台灣中文網,立即免費下載應用遊戲。

您需要 登錄 才可以下載或查看,沒有帳號?註冊

x
本帖最後由 iamjason008 於 2013-10-24 13:32 編輯


原本我對此一無所知,是剛好要做一個元件,希望它可以收起/展開,無意間在csdn找到這例子!
但沒有說明,所以我又找了下面這個網頁,再配合例子就很清楚了

以下是它的說明(出處: http://rainhomepage.appspot.com/2010/01/use-viewstub-to-optimize-the-layout-of)
ViewStub 是一個不可見的,大小為0的View,最佳用途就是實現View的延遲載入,在需要的時候再載入View,可Java中常見的性能優化方法延遲載入一樣。

當調用ViewStub的setVisibility函數設置為可見或則調用 inflate初始化該View的時候,ViewStub引用的資源開始初始化,然後引用的資源替代ViewStub自己的位置填充在ViewStub的 位置。因此在沒有調用setVisibility(int) 或則 inflate()函數之前 ViewStub一種存在元件樹層級結構中,但是由於ViewStub非常羽量級,這對性能影響非常小。 可以通過ViewStub的inflatedId屬性來重新定義引用的layout id。 例如:

     <ViewStub android:id="@+id/stub"
               android:inflatedId="@+id/subTree"
               android:layout="@layout/mySubTree"
               android:layout_width="120dip"
               android:layout_height="40dip" />


上面定義的ViewStub ,可以通過id “stub”來找到,在初始化資源“mySubTree”後,stub從父元件中刪除,然後"mySubTree"替代stub的位置。初始資源"mySubTree"得到的元件可以通過inflatedId 指定的id "subTree"引用。 然後初始化後的資源被填充到一個120dip寬、40dip高的地方。

推薦使用下面的方式來初始化ViewStub:

     ViewStub stub = (ViewStub) findViewById(R.id.stub);
     View inflated = stub.inflate();


當調用inflate()函數的時候,ViewStub 被引用的資源替代,並且返回引用的view。 這樣程式可以直接得到引用的view而不用再次調用函數 findViewById()來查找了。

運行畫面:
點擊"test"
「用Android 就來APK.TW」,快來加入粉絲吧!
Android 台灣中文網(APK.TW)

評分

參與人數 3碎鑽 +1 幫助 +3 收起 理由
lcctno + 1
CHD88 + 1 +花
ty3251775 + 1 + 1 非常讚

查看全部評分

收藏收藏 分享分享 分享專題
用Android 就來Android 台灣中文網(https://apk.tw)
回覆

使用道具 舉報

您需要登錄後才可以回帖 登錄 | 註冊

本版積分規則