<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      帶你實現開發者頭條(二) 實現左滑菜單

      今天開始模仿開發者頭條的側滑菜單,是本系列第二篇文章,相信大家已經看到很多app使用這種側滑。今天我來教大家用android自帶DrawerLayout控件實現。

      DrawerLayout是SupportLibrary包中實現了側滑菜單效果的控件,可以說DrawerLayout是因為第三方控件如MenuDrawer等的出現之后,google借鑒而出現的產物。DrawerLayout分為側邊菜單和主內容區兩部分,側邊菜單可以根據手勢展開與隱藏(DrawerLayout自身特性),主內容區的內容可以隨著菜單的點擊而變化(這需要使用者自己實現)。

      一.先上效果圖:

      這里寫圖片描述

      二.代碼實現

      1.drawerLayout其實是一個布局控件,跟LinearLayout等控件是一種東西,但是drawerLayout帶有滑動的功能。只要按照drawerLayout的規定布局方式寫完布局,就能有側滑的效果。我這邊把側滑菜單的內容放一個布局文件了。

      <android.support.v4.widget.DrawerLayout 
          xmlns:android="http://schemas.android.com/apk/res/android"
          android:id="@+id/drawer_layout"
          android:layout_width="match_parent"
          android:layout_height="match_parent" >
      
          <RelativeLayout
              android:layout_width="match_parent"
              android:layout_height="match_parent"
              android:clipToPadding="true"
              android:fitsSystemWindows="true" >
      
              <include
                  android:id="@+id/rl_title"
                  layout="@layout/layout_main_title" />
      
              <!-- The main content view -->
      
              <FrameLayout
                  android:id="@+id/content_frame"
                  android:layout_width="match_parent"
                  android:layout_height="match_parent"
                  android:layout_below="@+id/rl_title"
                  android:background="@color/white_normal" >
              </FrameLayout>
          </RelativeLayout>
      
          <!-- The navigation view -->
          <FrameLayout
              android:id="@+id/left_drawer"
              android:layout_width="280dp"
              android:layout_height="match_parent"
              android:layout_gravity="start" >
      		<!--   左側菜單 -->
              <include layout="@layout/layout_main_left" />
          </FrameLayout>
      </android.support.v4.widget.DrawerLayout>
      

      注意事項
      主內容區的布局代碼要放在側滑菜單布局的前面,這可以幫助DrawerLayout判斷誰是側滑菜單,誰是主內容區
      側滑菜單的部分的布局(這里是ListView)可以設置layout_gravity屬性,他表示側滑菜單是在左邊還是右邊。

      2.MainActivity.java 繼承FragmentActivity
      1).設置內容Fragment,設置狀態欄
      2).處理左側點擊事件,在點擊事件中設置選中背景,關閉左邊側滑菜單。

      public class MainActivity extends FragmentActivity{
      	private DrawerLayout mDrawerLayout;
      	private RelativeLayout rlHome, rlGift, rlShare;
      	private int currentSelectItem = R.id.rl_home;// 默認首頁
      	private ContentFragment contentFragment;
      
      	@Override
      	protected void onCreate(Bundle savedInstanceState) {
      		super.onCreate(savedInstanceState);
      		setContentView(R.layout.activity_main);
      
      		mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
      
      		findViewById(R.id.iv_menu).setOnClickListener(clickListener);
      		
      		initLeftMenu();//初始化左邊菜單
      		
      		contentFragment=new ContentFragment();
      		getSupportFragmentManager().beginTransaction().add(R.id.content_frame,contentFragment).commit();  
      
      		setWindowStatus();
      	}
      
      	private void initLeftMenu() {
      		rlHome = (RelativeLayout) findViewById(R.id.rl_home);
      		rlGift = (RelativeLayout) findViewById(R.id.rl_gift);
      		rlShare = (RelativeLayout) findViewById(R.id.rl_share);
      
      		rlHome.setOnClickListener(onLeftMenuClickListener);
      		rlGift.setOnClickListener(onLeftMenuClickListener);
      		rlShare.setOnClickListener(onLeftMenuClickListener);
      
      		rlHome.setSelected(true);
      	}
      
      	private OnClickListener onLeftMenuClickListener = new OnClickListener() {
      		@Override
      		public void onClick(View v) {
      			if (currentSelectItem != v.getId()) {//防止重復點擊
      				currentSelectItem=v.getId();
      				noItemSelect();
      				
      				switch (v.getId()) {
      				case R.id.rl_home:
      					rlHome.setSelected(true);
      					contentFragment.setContent("這是首頁");
      					break;
      				case R.id.rl_gift:
      					rlGift.setSelected(true);
      					contentFragment.setContent("這是禮物兌換");
      					break;
      				case R.id.rl_share:
      					rlShare.setSelected(true);
      					contentFragment.setContent("這是我的分享");
      					break;
      				}
      				
      				mDrawerLayout.closeDrawer(Gravity.LEFT);
      			}
      		}
      	};
      	
      	private void noItemSelect(){
      		rlHome.setSelected(false);
      		rlGift.setSelected(false);
      		rlShare.setSelected(false);
      	}
      
      	private OnClickListener clickListener = new OnClickListener() {
      		@Override
      		public void onClick(View v) {
      			switch (v.getId()) {
      			case R.id.iv_menu:// 打開左邊抽屜
      				mDrawerLayout.openDrawer(Gravity.LEFT);
      				break;
      			}
      		}
      	};
      
      	// 設置狀態欄
      	private void setWindowStatus() {
      		if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
      			// 透明狀態欄
      			getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
      			// 透明導航欄
      			getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);
      			// 設置狀態欄顏色
      			getWindow().setBackgroundDrawableResource(R.color.main_color);
      		}
      	}
      }
      

      3.左側菜單item選中背景的布局文件 selector_left_menu_item.xml。

      <?xml version="1.0" encoding="utf-8"?>
      <selector xmlns:android="http://schemas.android.com/apk/res/android">
          <item android:drawable="@color/menu_left_item_select" android:state_selected="true"/>
          <item android:drawable="@color/white_normal"/>
      </selector>
      

      4.ContentFragment 顯示內容的Fragment 這里我加了一個設置內容的方法,就是用來點擊左側切換顯示用的。

      public class ContentFragment extends Fragment{
      	private TextView tvContent;
      	
      	@Override
      	public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState){
      		View rootView=LayoutInflater.from(getActivity()).inflate(R.layout.fragment_content, null);
      		tvContent=(TextView) rootView.findViewById(R.id.tv_content);
      		return rootView;
      	}
      	
      	public void setContent(String content){
      		tvContent.setText(content);
      	}
      }
      

      5.drawerLayout與Fragment是什么關系?
      我們看到很多使用drawerLayout的代碼中都同時使用了Fragment,這會造成誤解,以為使用drawerLayout必須用到Fragment,其實這是錯誤的,使用Fragment是因為在側滑菜單被點擊的時候,主內容區如果內容比較復雜,用Fragment去填充會更容易,如果你的主內容區只是一個簡單的字符串,只想在不同菜單點擊的時候更新一下字符串的內容,我覺得沒必要用Fragment。我這邊用Fragment所做的就是更新字符串內容這么簡單。

      三.源碼下載

      點擊下載源碼

      四.相關文章:

      帶你實現開發者頭條(一) 啟動頁實現

      **推薦下自己創建的android QQ群: 202928390歡迎大家的加入. **

      如果你想第一時間看我們的后期文章,掃碼關注公眾號,每周不定期推送Android開發實戰教程文章,你還等什么,趕快關注吧,學好技術,,出任ceo,贏取白富美。。。。。。。。。。

            Android開發666 - 安卓開發技術分享
                  掃描二維碼加關注
      

      互聯網動態

      posted @ 2016-04-19 01:46  安輝  閱讀(2653)  評論(3)    收藏  舉報
      主站蜘蛛池模板: 国产中文字幕日韩精品| 亚洲老熟女一区二区三区 | 无码日韩精品一区二区三区免费| 国产精品久久久国产盗摄| 中文字幕亚洲综合小综合| 好吊妞人成视频在线观看| 起碰免费公开97在线视频| 久久精品国产久精国产69| 国产99视频精品免费视频6| 91精品亚洲一区二区三区| 亚洲AV无码久久久久网站蜜桃 | 人人妻人人澡人人爽不卡视频| 国产精品中文字幕综合| 四虎库影成人在线播放| 99久久亚洲综合精品成人网| 人人综合亚洲无线码另类| 国产日韩AV免费无码一区二区三区| 任我爽精品视频在线播放| 日韩人妻精品中文字幕| 黑人巨大精品欧美| 国产精品一区二区不卡91| 国产热A欧美热A在线视频| 麻豆久久天天躁夜夜狠狠躁 | 伊人精品无码av一区二区三区 | 爱性久久久久久久久| 一本大道无码av天堂| 色噜噜一区二区三区| 国产91精品丝袜美腿在线| 国产成人无码aa片免费看| 鄢陵县| 四房播色综合久久婷婷| 亚洲经典在线中文字幕| 图片区 小说区 区 亚洲五月| 99精品热在线在线观看视| 亚洲人成网7777777国产| 男女激情一区二区三区| 亚洲av成人一区二区三区| 天天看片视频免费观看| 亚洲人成小说网站色在线 | 双乳奶水饱满少妇呻吟免费看| 日本道精品一区二区三区|