自訂導覽列,實現緩衝,更新緩衝,提高效率

來源:互聯網
上載者:User

終於自己看api搞明白  類似導覽列的頁面如何提高效率,緩衝多組頁面,根據需要更新了.需求是這樣的,有個導覽列,其中點擊一個可以進入很多歌一級介面。這樣就要區分什麼時候使用緩衝,什麼時候要更新緩衝,來顯示最新的資訊。顯示看了網上的分析,同事之前寫好的代碼如下:

protected void onTabClicked(int tab, Intent intent) {
if (tab != -1) {
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
String activityId = ACTIVITY_ID_PRE + mTabIndex[tab];
if (SlimConf.INFO)
Log.i(TAG, " activityId =" + activityId);


View root = null;
Window window = getLocalActivityManager().startActivity(activityId,
intent);


if (window != null) {
root = window.getDecorView();
}
if (root != null) {
switchView(tab, root);
}
}
}


void switchView(int tab, View currentView) {


boolean flag = false;
for (int i = 0; i < viewList.size(); i++) {
View view = viewList.get(i);
if (view != null) {
if (!view.equals(currentView)) {
view.setVisibility(View.GONE);
} else if (view.equals(currentView)) {
// if (tab == TAB_TEAM) {
//
// if (!teamTag.equals(PrefConf.getString(
// PrefConf.TEAM_STATE, "init"))) {
//
// ViewGroup parent = (ViewGroup) currentView
// .getParent();
// parent.childDrawableStateChanged(currentView);
// }
// flag = true;
// view.setVisibility(View.VISIBLE);
//
// } else {
flag = true;
view.setVisibility(View.VISIBLE);
// }
}
}
}
if (!flag) {
if (tab == TAB_TEAM) {
teamTag = PrefConf.getString(PrefConf.TEAM_STATE, "d");


}
viewList.add(currentView);
mTabLayout.addView(currentView);


// mTabLayout.invalidate();
}
}


前面的介面緩衝就一筆帶過了,其實就是activityManager得到Window對象,在通過這個window對象的getDecorView()方法得到一個activity的view,然後得到的view放到一個viewgroup中,如上面的mTabLayout;當然需要一個list來存放這些view,以便控制他們的顯示(viewList)。

注釋掉的部分就是我後來加上的,思路是,當點擊team模組時,判斷已有欄位teamTag和preference中的是否相同,不相同說明介面有變化。這時候再parent.childDrawableStateChanged(currentView);就可以更新緩衝中的介面了。

問題就結局了,如果不加上注釋的內容,緩衝不會自動更新。

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.