開源中國客戶端原始碼閱讀筆記

2022-05-17 22:27:03 字數 3570 閱讀 1527

1、

/>

android:id="@+id/main_scrolllayout"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:layout_weight="1">

="@layout/frame_news"/>

="@layout/frame_question"/>

="@layout/frame_tweet" />

="@layout/frame_active" />

="@layout/main_footer"/>

通過include其他的layout拆分了設計

是如何在自定義控制項裡又包含了其他的layout?

android:layout_weight="1"

的作用是指定控制項所佔空間的權重,預設為0,即為怎麼設定怎麼顯示

而設為1說明是平攤控制項,這樣兩個android:layout_width="fill_parent"

的控制項會左右各佔一半空間

2.android:id="@+id/frame_btn_news_lastest"

style="@style/frame_button"

android:text="@string/frame_title_news_lastest"/>

="frame_button">

="android:layout_width">

fill_parentitem>

="android:layout_height">

fill_parentitem>

="android:layout_weight">

1item>

="android:background">

@drawable/frame_button_bgitem>

="android:textcolor">

@color/frame_button_text_lightitem>

style>

>

="true"android:drawable

="@drawable/frame_button_n"/>

="false"android:drawable

="@drawable/frame_button_p"/>

selector>

xmlns:android="">

="true"android:color

="@color/frame_button_text_nor"/>

="false"android:color

="@color/frame_button_text_select"/>

="@color/frame_button_text_nor"/>

selector>

對用一些多次重用的屬性(比如在一組按鈕中),可以設為乙個style供呼叫style="@style/frame_button"

,按鈕的背景可以設定為乙個selector,使其在不同的狀態下有不同的影象,文字的顏色也可以這樣

3.android:layout_height="fill_parent"

android:background="@drawable/frame_button_cutline"

/>

仿tab按鈕之間的分隔效果是通過貼圖實現的

4,工具欄的tab效果是用按鈕模擬出來的(這裡用radiobutton不知道有何深意,但是卻沒用radiobuttongroup)

通過陣列來操作,統一操作

/*** 初始化水平滾動翻頁

*/private

void initpagescroll()

}mscrolllayout.snaptoscreen(pos);

}});

}//設定第一顯示屏

mcursel = 0;

mbuttons[mcursel].setchecked(true);

mscrolllayout.setonviewchangelistener(new scrolllayout.onviewchangelistener() 

} else 

}break;    

case 1://問答

if(lvquestiondata.isempty())  

break;

case 2://動彈

if(lvtweetdata.isempty()) 

break;

case 3://動態

//判斷登入

if(lvactive.getvisibility()==view.visible && lvactivedata.isempty())else

if(lvmsg.getvisibility()==view.visible && lvmsgdata.isempty())

uihelper.showlogindialog(main.this);

break;

}//處理通知資訊

if(bv_atme.isshown()) 

frameactivebtnonclick(framebtn_active_atme, activelist.catalog_atme, uihelper.listview_action_refresh);

else

if(bv_review.isshown()) 

frameactivebtnonclick(framebtn_active_comment, activelist.catalog_comment, uihelper.listview_action_refresh);

else

if(bv_message.isshown())

frameactivebtnonclick(framebtn_active_message, 0, uihelper.listview_action_refresh);

else

if(lvactive.getvisibility() == view.visible && lvactivedata.isempty())

loadlvactivedata(curactivecatalog, 0, lvactivehandler, uihelper.listview_action_init);

else

if(lvmsg.getvisibility() == view.visible && lvmsgdata.isempty())

loadlvmsgdata(0, lvmsghandler, uihelper.listview_action_init);

break;

}setcurpoint(viewindex);

}});

}/**

* 設定底部欄當前焦點

* @param index

*/private

void setcurpoint(int index)

else

if(index == 1)

else

if(index == 2)

else

if(index == 3)}。

來自為知筆記(wiz)

開源中國iOS客戶端學習 序

說到這款開源軟體就得提到她的娘家了 開源中國社群 開源中國社群簡介 開源中國 www.oschina.net 成立於2008年8月,是目前中國最大的開源技術社群。傳播開源的理念,推廣開源專案,為 it 開發者提供了乙個發現 使用 並交流開源技術的平台。目前開源中國社群已收錄超過兩萬款開源軟體。開源中...

HDFS客戶端 輸出流原始碼解析

一 建立檔案 1 dfsclient.create 用於建立乙個空檔案,返回乙個輸出流物件。在函式內部,會構造乙個dfsoutputstream,它主要是通過namenode的rpc方法,建立乙個檔案到namenode。2 此建構函式還會計算乙個包中最大可以放的資料。一般來說,資料報最大能達到64k...

四 RabbitMQ 客戶端原始碼之Frame

frame是指amqp協議層面的通訊幀 乙個正式定義的連線資料報 我們來看下frame類中的成員變數有哪些 frame type code public final int type frame channel number,0 65535 public final int channel fram...