===============================================================

菜单main.xml

<menu xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    tools:context="com.arlen.cnblogs.MainActivity" >    <item        android:id="@+id/action_share"        android:icon="@drawable/ic_action_share"        android:orderInCategory="100"        android:showAsAction="always"        android:title="@string/action_share">        <menu>            <item                android:id="@+id/action_share_email"                android:icon="@drawable/ic_action_share_email"                android:orderInCategory="101"                android:showAsAction="always"                android:title="@string/action_share_email"/>            <item                android:id="@+id/action_share_message"                android:icon="@drawable/ic_action_share_message"                android:orderInCategory="101"                android:showAsAction="always"                android:title="@string/action_share_message"/>            <item                android:id="@+id/action_share_bluetooth"                android:icon="@drawable/ic_action_share_bluetooth"                android:orderInCategory="101"                android:showAsAction="always"                android:title="@string/action_share_bluetooth"/>            <item                android:id="@+id/action_share_system"                android:icon="@drawable/ic_action_share_system"                android:orderInCategory="101"                android:showAsAction="always"                android:title="@string/action_share_system"/>        </menu>    </item>    <item        android:id="@+id/action_search"        android:icon="@drawable/ic_action_search"        android:orderInCategory="100"        android:showAsAction="always|collapseActionView"        android:title="@string/action_search">        <menu>            <item                android:id="@+id/action_search_user"                android:icon="@drawable/ic_action_search_user"                android:orderInCategory="102"                android:showAsAction="always"                android:title="@string/action_search_user"/>            <item                android:id="@+id/action_search_blog"                android:icon="@drawable/ic_action_search_blog"                android:orderInCategory="102"                android:showAsAction="always"                android:title="@string/action_search_blog"/>        </menu>    </item>    <item        android:id="@+id/action_refresh"        android:icon="@drawable/ic_action_refresh"        android:orderInCategory="100"        android:showAsAction="always"        android:title="@string/action_refresh"/></menu>

主界面布局layout_main.xml

<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">    <FrameLayout        android:id="@+id/content_frame"        android:layout_width="match_parent"        android:layout_height="match_parent" />    <ListView        android:id="@+id/left_drawer"        android:layout_width="240dp"        android:layout_height="match_parent"        android:layout_gravity="start"        android:choiceMode="singleChoice"        android:divider="@android:color/transparent"        android:dividerHeight="0dp"        android:background="#111"/></android.support.v4.widget.DrawerLayout>

ActivityMain.java

  1 package com.arlen.cnblogs;  2   3 import com.arlen.cnblogs.fragment.AboutFragment;  4 import com.arlen.cnblogs.fragment.BlogFragment;  5 import com.arlen.cnblogs.fragment.HomeFragment;  6 import com.arlen.cnblogs.fragment.NewsFragment;  7 import com.arlen.cnblogs.fragment.SettingFragment;  8   9 import android.app.Activity; 10 import android.app.Fragment; 11 import android.app.FragmentManager; 12 import android.content.res.Configuration; 13 import android.os.Bundle; 14 import android.support.v4.app.ActionBarDrawerToggle; 15 import android.support.v4.view.GravityCompat; 16 import android.support.v4.widget.DrawerLayout; 17 import android.view.Menu; 18 import android.view.MenuInflater; 19 import android.view.MenuItem; 20 import android.view.View; 21 import android.widget.AdapterView; 22 import android.widget.ArrayAdapter; 23 import android.widget.ListView; 24 import android.widget.Toast; 25  26 public class MainActivity extends Activity { 27     private DrawerLayout drawerLayout; 28     private ListView drawerList; 29     private ActionBarDrawerToggle drawerToggle; 30  31     private CharSequence drawerTitle; 32     private CharSequence mTitle; 33     private String[] drawerListTitles; 34  35     @Override 36     protected void onCreate(Bundle savedInstanceState) { 37         super.onCreate(savedInstanceState); 38         setContentView(R.layout.activity_main); 39  40         mTitle = drawerTitle = getTitle(); 41         drawerListTitles = getResources().getStringArray(R.array.navigation_list); 42         drawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout); 43         drawerList = (ListView) findViewById(R.id.left_drawer); 44  45         // set a custom shadow that overlays the main content when the drawer opens 46         drawerLayout.setDrawerShadow(R.drawable.drawer_shadow, GravityCompat.START); 47         // set up the drawer's list view with items and click listener 48         drawerList.setAdapter(new ArrayAdapter<String>(this, 49                 R.layout.drawer_list_item, drawerListTitles)); 50         drawerList.setOnItemClickListener(new DrawerItemClickListener()); 51  52         // enable ActionBar app icon to behave as action to toggle nav drawer 53         getActionBar().setDisplayHomeAsUpEnabled(true); 54         getActionBar().setHomeButtonEnabled(true); 55  56         // ActionBarDrawerToggle ties together the the proper interactions 57         // between the sliding drawer and the action bar app icon 58         drawerToggle = new ActionBarDrawerToggle( 59                 this,                  /* host Activity */ 60                 drawerLayout,         /* DrawerLayout object */ 61                 R.drawable.ic_drawer,  /* nav drawer image to replace 'Up' caret */ 62                 R.string.drawer_open,  /* "open drawer" description for accessibility */ 63                 R.string.drawer_close  /* "close drawer" description for accessibility */ 64                 ) { 65             public void onDrawerClosed(View view) { 66                 getActionBar().setTitle(mTitle); 67                 invalidateOptionsMenu(); // creates call to onPrepareOptionsMenu() 68             } 69  70             public void onDrawerOpened(View drawerView) { 71                 getActionBar().setTitle(drawerTitle); 72                 invalidateOptionsMenu(); // creates call to onPrepareOptionsMenu() 73             } 74         }; 75         drawerLayout.setDrawerListener(drawerToggle); 76  77         if (savedInstanceState == null) { 78             selectItem(0); 79         } 80     } 81  82     @Override 83     public boolean onCreateOptionsMenu(Menu menu) { 84         MenuInflater inflater = getMenuInflater(); 85         inflater.inflate(R.menu.main, menu); 86         return super.onCreateOptionsMenu(menu); 87     } 88  89     /* Called whenever we call invalidateOptionsMenu() */ 90     @Override 91     public boolean onPrepareOptionsMenu(Menu menu) { 92         // If the nav drawer is open, hide action items related to the content view 93         boolean drawerOpen = drawerLayout.isDrawerOpen(drawerList); 94         menu.findItem(R.id.action_refresh).setVisible(!drawerOpen); 95         return super.onPrepareOptionsMenu(menu); 96     } 97  98     @Override 99     public boolean onOptionsItemSelected(MenuItem item) {100         101         if (drawerToggle.onOptionsItemSelected(item)) {102             return true;103         }104         105         int id = item.getItemId();106 107         switch (id) {108         case R.id.action_share:109             Toast.makeText(this, "分享", Toast.LENGTH_SHORT).show();110             return true;111         case R.id.action_share_email:112             Toast.makeText(this, "邮件分享", Toast.LENGTH_SHORT).show();113             return true;114         case R.id.action_share_message:115             Toast.makeText(this, "短信分享", Toast.LENGTH_SHORT).show();116             return true;117         case R.id.action_share_bluetooth:118             Toast.makeText(this, "蓝牙分享", Toast.LENGTH_SHORT).show();119             return true;120         case R.id.action_share_system:121             Toast.makeText(this, "系统分享", Toast.LENGTH_SHORT).show();122             return true;123         case R.id.action_search:124             Toast.makeText(this, "搜索", Toast.LENGTH_SHORT).show();125             return true;126         case R.id.action_search_user:127             Toast.makeText(this, "搜索博主", Toast.LENGTH_SHORT).show();128             return true;129         case R.id.action_search_blog:130             Toast.makeText(this, "搜索博文", Toast.LENGTH_SHORT).show();131             return true;132         case R.id.action_refresh:133             Toast.makeText(this, "刷新", Toast.LENGTH_SHORT).show();134             return true;135         default:136             return super.onOptionsItemSelected(item);137         }138     }139 140     /* The click listner for ListView in the navigation drawer */141     private class DrawerItemClickListener implements ListView.OnItemClickListener {142         @Override143         public void onItemClick(AdapterView<?> parent, View view, int position, long id) {144             selectItem(position);145         }146     }147 148     private void selectItem(int position) {149         // update the main content by replacing fragments150         Fragment fragment = null;151         switch (position) {152         case 0:153             fragment = new HomeFragment();154             break;155         case 1:156             fragment = new NewsFragment();157             break;158         case 2:159             fragment = new BlogFragment();160             break;161         case 3:162             fragment = new SettingFragment();163             break;164         case 4:165             fragment = new AboutFragment();166             break;167         default:168             fragment = new HomeFragment();169             break;170         }171 172         FragmentManager fragmentManager = getFragmentManager();173         fragmentManager.beginTransaction().replace(R.id.content_frame, fragment).commit();174 175         // update selected item and title, then close the drawer176         drawerList.setItemChecked(position, true);177         setTitle(drawerListTitles[position]);178         drawerLayout.closeDrawer(drawerList);179     }180 181     @Override182     public void setTitle(CharSequence title) {183         mTitle = title;184         getActionBar().setTitle(mTitle);185     }186 187     /**188      * When using the ActionBarDrawerToggle, you must call it during189      * onPostCreate() and onConfigurationChanged()...190      */191 192     @Override193     protected void onPostCreate(Bundle savedInstanceState) {194         super.onPostCreate(savedInstanceState);195         // Sync the toggle state after onRestoreInstanceState has occurred.196         drawerToggle.syncState();197     }198 199     @Override200     public void onConfigurationChanged(Configuration newConfig) {201         super.onConfigurationChanged(newConfig);202         // Pass any configuration change to the drawer toggls203         drawerToggle.onConfigurationChanged(newConfig);204     }205 }

源码:git@github.com:ZhangTingkuo/Cnblogs.git

更多相关文章

  1. 编译android 源码
  2. Android(安卓)源码编译如何确定模块安装的位置
  3. 在服务器上使用 gradle 打包 android 源码
  4. android WifiMange获取IP为负
  5. android aosp 源码版本
  6. 在服务器上使用 gradle 打包 android 源码
  7. Android——自定义Log显示
  8. 系统重置
  9. Android(安卓)蓝牙2.0工具类

随机推荐

  1. Xamarin android 使用RecyclerView结合Sw
  2. Android实现手机游戏隐藏虚拟按键
  3. Binder 浅出深入 -- 你真的会用 binder?
  4. Toast(吐司提示)的曾经、现在与未来
  5. Android(安卓)动画效果(一): 四种动画基础(Al
  6. 小猪浅谈Android屏幕适配
  7. Android(安卓)使用JNI的相关
  8. vim带你装逼带你飞(一)
  9. 如何入行Android开发
  10. Android(安卓)ListView 自定义背景后 滚