1、 <include layout="@layout/main_header" />             <net.oschina.app.widget.ScrollLayout          android:id="@+id/main_scrolllayout"           android:layout_width="fill_parent"           android:layout_height="fill_parent"          android:layout_weight="1">               <include layout="@layout/frame_news" />              <include layout="@layout/frame_question" />              <include layout="@layout/frame_tweet" />                  <include layout="@layout/frame_active/>             net.oschina.app.widget.ScrollLayout>           <include layout="@layout/main_footer" />    通过include其他的layout拆分了设计 是如何在自定义控件里又包含了其他的layout? android:layout_weight="1" 的作用是指定控件所占空间的权重,默认为0,即为怎么设定怎么显示      而设为1说明是平摊控件,这样两个android:layout_width="fill_parent" 的控件会左右各占一半空间   2. <Button               android:id="@+id/frame_btn_news_lastest"              style="@style/frame_button"              android:text="@string/frame_title_news_lastest"/>   <style name="frame_button">         <item name="android:layout_width">fill_parentitem>            <item name="android:layout_height">fill_parentitem>            <item name="android:layout_weight">1item>            <item name="android:background">@drawable/frame_button_bgitem>            <item name="android:textColor">@color/frame_button_text_lightitem>     style>   <selector xmlns:android="http://schemas.android.com/apk/res/android">     <item android:state_enabled="true" android:drawable="@drawable/frame_button_n" />     <item android:state_enabled="false" android:drawable="@drawable/frame_button_p" /> selector>   <selector   xmlns:android="http://schemas.android.com/apk/res/android">     <item android:state_enabled="true" android:color="@color/frame_button_text_nor" />     <item android:state_enabled="false" android:color="@color/frame_button_text_select" />     <item android:color="@color/frame_button_text_nor" /> selector> 对用一些多次重用的属性(比如在一组按钮中),可以设为一个style供调用style="@style/frame_button" 按钮的背景可以设置为一个selector,使其在不同的状态下有不同的图像,文字的颜色也可以这样   3. <ImageView android:layout_width="wrap_content" android:layout_height="fill_parent" android:background="@drawable/frame_button_cutline"/> 仿TAB按钮之间的分隔效果是通过贴图实现的   4, 工具栏的TAB效果是用按钮模拟出来的(这里用RadioButton不知道有何深意,但是却没用RadioButtonGroup) 通过数组来操作,统一操作   /**      * 初始化水平滚动翻页      */     private void initPageScroll()     {         mScrollLayout = (ScrollLayout) findViewById(R.id.main_scrolllayout);                  LinearLayout linearLayout = (LinearLayout) findViewById(R.id.main_linearlayout_footer);         mHeadTitles = getResources().getStringArray(R.array.head_titles);         mViewCount = mScrollLayout.getChildCount();         mButtons = new RadioButton[mViewCount];                  for(int i = 0; i < mViewCount; i++)         {             mButtons[i] = (RadioButton) linearLayout.getChildAt(i*2);  获取底部工具栏的单选按钮, 存入数组中,所以通过private RadioButton fbNews一直无法找到处理操作的函数)             mButtons[i].setTag(i);             mButtons[i].setChecked(false);             mButtons[i].setOnClickListener(new View.OnClickListener() {                 public void onClick(View v) {                     int pos = (Integer)(v.getTag());                     //点击当前项刷新                     if(mCurSel == pos) {                         switch (pos) {                         case 0://资讯+博客                             if(lvNews.getVisibility() == View.VISIBLE)                                 lvNews.clickRefresh();                             else                                 lvBlog.clickRefresh();                             break;                             case 1://问答                             lvQuestion.clickRefresh();                             break;                         case 2://动弹                             lvTweet.clickRefresh();                             break;                         case 3://动态+留言                             if(lvActive.getVisibility() == View.VISIBLE)                                 lvActive.clickRefresh();                             else                                 lvMsg.clickRefresh();                             break;                         }                     }                     mScrollLayout.snapToScreen(pos);                 }             });         }                  //设置第一显示屏         mCurSel = 0;         mButtons[mCurSel].setChecked(true);                  mScrollLayout.SetOnViewChangeListener(new ScrollLayout.OnViewChangeListener() {             public void OnViewChange(int viewIndex) {                 //切换列表视图-如果列表数据为空:加载数据                 switch (viewIndex) {                 case 0://资讯                     if(lvNews.getVisibility() == View.VISIBLE) {                         if(lvNewsData.isEmpty()) {                             loadLvNewsData(curNewsCatalog, 0, lvNewsHandler, UIHelper.LISTVIEW_ACTION_INIT);                         }                     } else {                         if(lvBlogData.isEmpty()) {                             loadLvBlogData(curNewsCatalog, 0, lvBlogHandler, UIHelper.LISTVIEW_ACTION_INIT);                         }                     }                     break;                     case 1://问答                     if(lvQuestionData.isEmpty()) {                         loadLvQuestionData(curQuestionCatalog, 0, lvQuestionHandler, UIHelper.LISTVIEW_ACTION_INIT);                     }                      break;                 case 2://动弹                     if(lvTweetData.isEmpty()) {                         loadLvTweetData(curTweetCatalog, 0, lvTweetHandler, UIHelper.LISTVIEW_ACTION_INIT);                     }                     break;                 case 3://动态                     //判断登录                     if(!appContext.isLogin()){                         if(lvActive.getVisibility()==View.VISIBLE && lvActiveData.isEmpty()){                             lvActive_foot_more.setText(R.string.load_empty);                             lvActive_foot_progress.setVisibility(View.GONE);                         }else if(lvMsg.getVisibility()==View.VISIBLE && lvMsgData.isEmpty()){                             lvMsg_foot_more.setText(R.string.load_empty);                             lvMsg_foot_progress.setVisibility(View.GONE);                         }                         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)     {         if (index < 0 || index > mViewCount - 1 || mCurSel == index)             return;                 mButtons[mCurSel].setChecked(false);         mButtons[index].setChecked(true);                 mHeadTitle.setText(mHeadTitles[index]);                 mCurSel = index;                  mHead_search.setVisibility(View.GONE);         mHeadPub_post.setVisibility(View.GONE);         mHeadPub_tweet.setVisibility(View.GONE);         //头部logo、发帖、发动弹按钮显示         if(index == 0){             mHeadLogo.setImageResource(R.drawable.frame_logo_news);             mHead_search.setVisibility(View.VISIBLE);         }         else if(index == 1){             mHeadLogo.setImageResource(R.drawable.frame_logo_post);             mHeadPub_post.setVisibility(View.VISIBLE);         }         else if(index == 2){             mHeadLogo.setImageResource(R.drawable.frame_logo_tweet);             mHeadPub_tweet.setVisibility(View.VISIBLE);         }         else if(index == 3){             mHeadLogo.setImageResource(R.drawable.frame_logo_active);             mHeadPub_tweet.setVisibility(View.VISIBLE);         }     }   。

来自为知笔记(Wiz)

更多相关文章

  1. listview列表控件的快速滚动滑块
  2. android的popupwindow点击返回按钮关闭
  3. Android(安卓)Property动画——ObjectAnimator使用
  4. Android(安卓)实现按钮在没有触摸事件时几秒钟之后自动隐藏
  5. [随时更新] Android小问题记录
  6. Android(安卓)View.onMeasure方法的理解
  7. 浅谈Android中常用的五种布局方式
  8. android错误之ListView设置setOnItemClickListener失效
  9. 一起学android之自定义控件一起制作自定义标签(39)

随机推荐

  1. 2012年4月6日学习记录
  2. Android横向拼接多个Bitmap
  3. Android功能代码
  4. android实验四 QR码生成器的设计与实现
  5. Android LayoutInflater.inflate详解
  6. 浅谈Android程序与JavaScript脚本的交互
  7. 纵向开关
  8. android 获取适配的bitmap等相关
  9. Error:Android(安卓)Packager: java.util
  10. android 图片处理方法(整理)