AndroidUI--SlidingMenu使用例子

来源:互联网 发布:中国电信网络重构 编辑:程序博客网 时间:2024/04/30 08:05
 

AndroidUI--SlidingMenu使用例子

分类: 【Android开发学习之路】 6013人阅读 评论(8) 收藏 举报
Android开源项目

AndroidUI--SlidingMenu使用例子


2013年12月3日 开源项目SlidingMenu的使用学习


最近想学习有趣的UI,也想把这些UI整合到自己的项目当中,之前就已经了解到SlidingMenu这个开源控件,用过印象笔记和唱吧的童鞋可能就会看到过这种滑动菜单的效果。以下我也是通过学习其他大牛,然后自己稍微做了下Demo让自己熟悉SlidingMenu这个开源控件的使用,发现并太复杂,当然直接拿来用是没有太多问题,但要弄懂这个控件的效果实现还是不太容易,毕竟是大牛做出来的东西嘛。

我在网上找了很久,发现下面这个家伙写得不错,在这里也推荐一下

http://blog.csdn.net/yangyu20121224/article/details/9255829



他讲的很详细,让我写也不一定能写得像他那样,所以我就不讲了,我这里就是借助他提供的项目,稍微做了个Demo.

关键操作

把slidingmenu_library这个项目import到工作区当中去,然后将作为library导入到新建的项目当中去


项目结构效果图如下:





项目运行效果图:






源码:

/2013.12.2_SlidingMenu_for_weibo/src/com/wwj/slidingmenu/demo/MainActivity.java

[java] view plaincopy在CODE上查看代码片派生到我的代码片
  1. package com.wwj.slidingmenu.demo;  
  2.   
  3. import com.jeremyfeinstein.slidingmenu.lib.SlidingMenu;  
  4. import com.jeremyfeinstein.slidingmenu.lib.app.SlidingFragmentActivity;  
  5.   
  6. import android.os.Bundle;  
  7. import android.support.v4.app.Fragment;  
  8. import android.view.Menu;  
  9. import android.view.MenuItem;  
  10.   
  11. public class MainActivity extends SlidingFragmentActivity {  
  12.   
  13.     @Override  
  14.     public void onCreate(Bundle savedInstanceState) {  
  15.         super.onCreate(savedInstanceState);  
  16.         // 设置标题栏的标题  
  17.         setTitle("新浪微博客户端");  
  18.   
  19.         // 设置是否能够使用ActionBar来滑动  
  20.         setSlidingActionBarEnabled(true);  
  21.   
  22.         // 设置是否显示Home图标按钮  
  23.         getActionBar().setDisplayHomeAsUpEnabled(true);  
  24.         getActionBar().setIcon(R.drawable.weibo_logo);  
  25.   
  26.         // 初始化滑动视图  
  27.         initSlidingMenu(savedInstanceState);  
  28.   
  29.     }  
  30.   
  31.     private void initSlidingMenu(Bundle savedInstanceState) {  
  32.         // 如果保存的状态不为空则得到之前保存的Fragment,否则实例化MyFragment  
  33.         if (savedInstanceState != null) {  
  34.             mContent = getSupportFragmentManager().getFragment(  
  35.                     savedInstanceState, "mContent");  
  36.         }  
  37.         if (mContent == null) {  
  38.             mContent = new MyFragment();  
  39.         }  
  40.         // 设置主界面视图  
  41.         setContentView(R.layout.content_frame);  
  42.         getSupportFragmentManager().beginTransaction()  
  43.                 .replace(R.id.content_frame, new MyFragment()).commit();  
  44.   
  45.         // 设置滑动菜单的视图  
  46.         setBehindContentView(R.layout.menu_frame);  
  47.         getSupportFragmentManager().beginTransaction()  
  48.                 .replace(R.id.menu_frame, new SampleListFragment()).commit();  
  49.   
  50.         // 实例话滑动菜单对象  
  51.         SlidingMenu sm = getSlidingMenu();  
  52.         // 设置滑动阴影的宽度  
  53.         sm.setShadowWidthRes(R.dimen.shadow_width);  
  54.         // 设置滑动阴影的图像资源  
  55.         sm.setShadowDrawable(R.drawable.shadow);  
  56.         // 设置滑动菜单视图的宽度  
  57.         sm.setBehindOffsetRes(R.dimen.slidingmenu_offset);  
  58.         // 设置渐入渐出效果的值  
  59.         sm.setFadeDegree(0.35f);  
  60.         // 设置触摸屏幕的模式  
  61.         sm.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN);  
  62.     }  
  63.   
  64.     /** 
  65.      * 保存Fragment的状态 
  66.      */  
  67.     @Override  
  68.     protected void onSaveInstanceState(Bundle outState) {  
  69.         super.onSaveInstanceState(outState);  
  70.         getSupportFragmentManager().putFragment(outState, "mContent", mContent);  
  71.     }  
  72.   
  73.     /** 
  74.      * 菜单按钮点击事件,通过点击ActionBar的Home图标按钮来打开滑动菜单 
  75.      */  
  76.     @Override  
  77.     public boolean onOptionsItemSelected(MenuItem item) {  
  78.         switch (item.getItemId()) {  
  79.         case android.R.id.home:  
  80.             toggle();  
  81.             return true;  
  82.         }  
  83.         return super.onOptionsItemSelected(item);  
  84.     }  
  85.   
  86.     @Override  
  87.     public boolean onCreateOptionsMenu(Menu menu) {  
  88.         // Inflate the menu; this adds items to the action bar if it is present.  
  89.         getMenuInflater().inflate(R.menu.main, menu);  
  90.         return true;  
  91.     }  
  92.   
  93.     private Fragment mContent;  
  94.   
  95.     /** 
  96.      * 切换视图 
  97.      * @param fragment 
  98.      */  
  99.     public void switchContent(Fragment fragment) {  
  100.         mContent = fragment;  
  101.         getSupportFragmentManager().beginTransaction()  
  102.                 .replace(R.id.content_frame, fragment).commit();  
  103.         getSlidingMenu().showContent();  
  104.     }  
  105.   
  106. }  


/2013.12.2_SlidingMenu_for_weibo/src/com/wwj/slidingmenu/demo/SampleListFragment.java

[java] view plaincopy在CODE上查看代码片派生到我的代码片
  1. package com.wwj.slidingmenu.demo;  
  2.   
  3. import android.content.Context;  
  4. import android.os.Bundle;  
  5. import android.support.v4.app.Fragment;  
  6. import android.support.v4.app.ListFragment;  
  7. import android.view.LayoutInflater;  
  8. import android.view.View;  
  9. import android.view.ViewGroup;  
  10. import android.widget.ArrayAdapter;  
  11. import android.widget.ImageView;  
  12. import android.widget.ListView;  
  13. import android.widget.TextView;  
  14.   
  15. /** 
  16.  *  
  17.  * @author wwj 功能描述:列表Fragment,用来显示滑动菜单打开后的内容 
  18.  */  
  19. public class SampleListFragment extends ListFragment {  
  20.   
  21.     @Override  
  22.     public View onCreateView(LayoutInflater inflater, ViewGroup container,  
  23.             Bundle savedInstanceState) {  
  24.         return inflater.inflate(R.layout.list, null);  
  25.     }  
  26.   
  27.     @Override  
  28.     public void onActivityCreated(Bundle savedInstanceState) {  
  29.         super.onActivityCreated(savedInstanceState);  
  30.   
  31.         SampleAdapter adapter = new SampleAdapter(getActivity());  
  32.         adapter.add(new SampleItem("登录", R.drawable.login_logo));  
  33.         adapter.add(new SampleItem("疑问", R.drawable.d_yiwen));  
  34.         adapter.add(new SampleItem("右哼哼", R.drawable.d_youhengheng));  
  35.         adapter.add(new SampleItem("晕", R.drawable.d_yun));  
  36.         adapter.add(new SampleItem("抓狂", R.drawable.d_zhuakuang));  
  37.         adapter.add(new SampleItem("猪头", R.drawable.d_zhutou));  
  38.         adapter.add(new SampleItem("做鬼脸", R.drawable.d_zuoguilian));  
  39.         adapter.add(new SampleItem("左哼哼", R.drawable.d_zuohengheng));  
  40.   
  41.         setListAdapter(adapter);  
  42.     }  
  43.   
  44.     public class SampleAdapter extends ArrayAdapter<SampleItem> {  
  45.         public SampleAdapter(Context context) {  
  46.             super(context, 0);  
  47.         }  
  48.   
  49.         @Override  
  50.         public View getView(int position, View convertView, ViewGroup parent) {  
  51.             if (convertView == null) {  
  52.                 convertView = LayoutInflater.from(getContext()).inflate(  
  53.                         R.layout.row, null);  
  54.             }  
  55.             ImageView icon = (ImageView) convertView  
  56.                     .findViewById(R.id.row_icon);  
  57.             icon.setImageResource(getItem(position).iconRes);  
  58.             TextView title = (TextView) convertView  
  59.                     .findViewById(R.id.row_title);  
  60.             title.setText(getItem(position).tag);  
  61.             return convertView;  
  62.         }  
  63.     }  
  64.   
  65.     @Override  
  66.     public void onListItemClick(ListView l, View v, int position, long id) {  
  67.         Fragment newContent = null;  
  68.         switch (position) {  
  69.         case 0:  
  70.             newContent = new MyFragment();  
  71.             break;  
  72.         case 1:  
  73.             newContent = new MyFragment1();  
  74.             break;  
  75.         case 2:  
  76.             newContent = new MyFragment2();  
  77.             break;  
  78.         case 3:  
  79.             newContent = new MyFragment3();  
  80.             break;  
  81.         case 4:  
  82.             newContent = new MyFragment4();  
  83.             break;  
  84.         case 5:  
  85.             newContent = new MyFragment5();  
  86.             break;  
  87.         case 6:  
  88.             newContent = new MyFragment6();  
  89.         case 7:  
  90.             newContent = new MyFragment7();  
  91.             break;  
  92.         }  
  93.         if (newContent != null) {  
  94.             switchFragment(newContent);  
  95.         }  
  96.         super.onListItemClick(l, v, position, id);  
  97.     }  
  98.   
  99.     private void switchFragment(Fragment fragment) {  
  100.         if (getActivity() == null) {  
  101.             return;  
  102.         }  
  103.         if (getActivity() instanceof MainActivity) {  
  104.             MainActivity fca = (MainActivity) getActivity();  
  105.             fca.switchContent(fragment);  
  106.         }  
  107.     }  
  108.   
  109.     private class SampleItem {  
  110.         public String tag;  
  111.         public int iconRes;  
  112.   
  113.         public SampleItem(String tag, int iconRes) {  
  114.             this.tag = tag;  
  115.             this.iconRes = iconRes;  
  116.         }  
  117.     }  
  118.   
  119. }  

/2013.12.2_SlidingMenu_for_weibo/src/com/wwj/slidingmenu/demo/MyFragment.java

[java] view plaincopy在CODE上查看代码片派生到我的代码片
  1. package com.wwj.slidingmenu.demo;  
  2.   
  3. import android.os.Bundle;  
  4. import android.support.v4.app.Fragment;  
  5. import android.view.LayoutInflater;  
  6. import android.view.View;  
  7. import android.view.ViewGroup;  
  8.   
  9. /*** 
  10.  *  
  11.  * @author wwj 
  12.  *  
  13.  */  
  14. public class MyFragment extends Fragment {  
  15.     @Override  
  16.     public void onCreate(Bundle savedInstanceState) {  
  17.         super.onCreate(savedInstanceState);  
  18.     }  
  19.   
  20.     @Override  
  21.     public View onCreateView(LayoutInflater inflater, ViewGroup container,  
  22.             Bundle savedInstanceState) {  
  23.         View view = inflater.inflate(R.layout.login, null);  
  24.         return view;  
  25.     }  
  26.   
  27.     @Override  
  28.     public void onActivityCreated(Bundle savedInstanceState) {  
  29.         super.onActivityCreated(savedInstanceState);  
  30.     }  
  31.   
  32.     @Override  
  33.     public void onPause() {  
  34.         super.onPause();  
  35.     }  
  36. }  

/2013.12.2_SlidingMenu_for_weibo/src/com/wwj/slidingmenu/demo/MyFragment1.java

[java] view plaincopy在CODE上查看代码片派生到我的代码片
  1. package com.wwj.slidingmenu.demo;  
  2.   
  3. import android.os.Bundle;  
  4. import android.support.v4.app.Fragment;  
  5. import android.view.LayoutInflater;  
  6. import android.view.View;  
  7. import android.view.ViewGroup;  
  8. import android.widget.ImageView;  
  9. import android.widget.TextView;  
  10.   
  11. public class MyFragment1 extends Fragment {  
  12.   
  13.     @Override  
  14.     public void onCreate(Bundle savedInstanceState) {  
  15.         super.onCreate(savedInstanceState);  
  16.     }  
  17.   
  18.     @Override  
  19.     public View onCreateView(LayoutInflater inflater, ViewGroup container,  
  20.             Bundle savedInstanceState) {  
  21.         View view = inflater.inflate(R.layout.row, null);  
  22.         TextView title = (TextView) view.findViewById(R.id.row_title);  
  23.         title.setText("疑问");  
  24.         ImageView icon = (ImageView) view.findViewById(R.id.row_icon);  
  25.         icon.setImageResource(R.drawable.d_yiwen);  
  26.         return view;  
  27.     }  
  28.   
  29.     @Override  
  30.     public void onActivityCreated(Bundle savedInstanceState) {  
  31.         super.onActivityCreated(savedInstanceState);  
  32.     }  
  33.   
  34.     @Override  
  35.     public void onDestroyView() {  
  36.         super.onDestroyView();  
  37.     }  
  38. }  

其他Fragment类似,就不贴了。
0 0
原创粉丝点击