Android UI-SlidingMenu侧滑菜单效果

来源:互联网 发布:云数据库语言 编辑:程序博客网 时间:2024/05/01 14:49

Android UI-SlidingMenu侧滑菜单效果


本篇博客给大家分享一个效果比较好的侧滑菜单的Demo,实现点击左边菜单切换Fragment。

效果如下:



主Activity代码:

[java] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. package com.infzm.slidingmenu.demo;  
  2.   
  3. import android.os.Bundle;  
  4. import android.support.v4.app.Fragment;  
  5. import android.view.View;  
  6. import android.view.View.OnClickListener;  
  7. import android.view.Window;  
  8. import android.widget.ImageView;  
  9. import android.widget.TextView;  
  10.   
  11. import com.infzm.slidingmenu.demo.fragment.LeftFragment;  
  12. import com.infzm.slidingmenu.demo.fragment.TodayFragment;  
  13. import com.jeremyfeinstein.slidingmenu.lib.SlidingMenu;  
  14. import com.jeremyfeinstein.slidingmenu.lib.app.SlidingFragmentActivity;  
  15.   
  16. /** 
  17.  * @date 2014/11/14 
  18.  * @author wuwenjie 
  19.  * @description 主界面 
  20.  */  
  21. public class MainActivity extends SlidingFragmentActivity implements  
  22.         OnClickListener {  
  23.   
  24.     private ImageView topButton;  
  25.     private Fragment mContent;  
  26.     private TextView topTextView;  
  27.   
  28.     @Override  
  29.     public void onCreate(Bundle savedInstanceState) {  
  30.         requestWindowFeature(Window.FEATURE_NO_TITLE); // 无标题  
  31.         super.onCreate(savedInstanceState);  
  32.         setContentView(R.layout.activity_main);  
  33.         initSlidingMenu(savedInstanceState);  
  34.   
  35.         topButton = (ImageView) findViewById(R.id.topButton);  
  36.         topButton.setOnClickListener(this);  
  37.         topTextView = (TextView) findViewById(R.id.topTv);  
  38.     }  
  39.   
  40.     /** 
  41.      * 初始化侧边栏 
  42.      */  
  43.     private void initSlidingMenu(Bundle savedInstanceState) {  
  44.         // 如果保存的状态不为空则得到之前保存的Fragment,否则实例化MyFragment  
  45.         if (savedInstanceState != null) {  
  46.             mContent = getSupportFragmentManager().getFragment(  
  47.                     savedInstanceState, "mContent");  
  48.         }  
  49.   
  50.         if (mContent == null) {  
  51.             mContent = new TodayFragment();  
  52.         }  
  53.   
  54.         // 设置左侧滑动菜单  
  55.         setBehindContentView(R.layout.menu_frame_left);  
  56.         getSupportFragmentManager().beginTransaction()  
  57.                 .replace(R.id.menu_frame, new LeftFragment()).commit();  
  58.   
  59.         // 实例化滑动菜单对象  
  60.         SlidingMenu sm = getSlidingMenu();  
  61.         // 设置可以左右滑动的菜单  
  62.         sm.setMode(SlidingMenu.LEFT);  
  63.         // 设置滑动阴影的宽度  
  64.         sm.setShadowWidthRes(R.dimen.shadow_width);  
  65.         // 设置滑动菜单阴影的图像资源  
  66.         sm.setShadowDrawable(null);  
  67.         // 设置滑动菜单视图的宽度  
  68.         sm.setBehindOffsetRes(R.dimen.slidingmenu_offset);  
  69.         // 设置渐入渐出效果的值  
  70.         sm.setFadeDegree(0.35f);  
  71.         // 设置触摸屏幕的模式,这里设置为全屏  
  72.         sm.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN);  
  73.         // 设置下方视图的在滚动时的缩放比例  
  74.         sm.setBehindScrollScale(0.0f);  
  75.   
  76.     }  
  77.   
  78.     @Override  
  79.     protected void onSaveInstanceState(Bundle outState) {  
  80.         super.onSaveInstanceState(outState);  
  81.         getSupportFragmentManager().putFragment(outState, "mContent", mContent);  
  82.     }  
  83.   
  84.     /** 
  85.      * 切换Fragment 
  86.      *  
  87.      * @param fragment 
  88.      */  
  89.     public void switchConent(Fragment fragment, String title) {  
  90.         mContent = fragment;  
  91.         getSupportFragmentManager().beginTransaction()  
  92.                 .replace(R.id.content_frame, fragment).commit();  
  93.         getSlidingMenu().showContent();  
  94.         topTextView.setText(title);  
  95.     }  
  96.   
  97.     @Override  
  98.     public void onClick(View v) {  
  99.         switch (v.getId()) {  
  100.         case R.id.topButton:  
  101.             toggle();  
  102.             break;  
  103.         default:  
  104.             break;  
  105.         }  
  106.     }  
  107.   
  108. }  


侧边栏菜单Fragment

[java] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. package com.infzm.slidingmenu.demo.fragment;  
  2.   
  3. import android.app.Activity;  
  4. import android.os.Bundle;  
  5. import android.support.v4.app.Fragment;  
  6. import android.view.LayoutInflater;  
  7. import android.view.View;  
  8. import android.view.View.OnClickListener;  
  9. import android.view.ViewGroup;  
  10.   
  11. import com.infzm.slidingmenu.demo.MainActivity;  
  12. import com.infzm.slidingmenu.demo.R;  
  13. /** 
  14.  * @date 2014/11/14 
  15.  * @author wuwenjie 
  16.  * @description 侧边栏菜单 
  17.  */  
  18. public class LeftFragment extends Fragment implements OnClickListener{  
  19.     private View todayView;  
  20.     private View lastListView;  
  21.     private View discussView;  
  22.     private View favoritesView;  
  23.     private View commentsView;  
  24.     private View settingsView;  
  25.       
  26.       
  27.     @Override  
  28.     public void onCreate(Bundle savedInstanceState) {  
  29.         super.onCreate(savedInstanceState);  
  30.     }  
  31.       
  32.     @Override  
  33.     public void onAttach(Activity activity) {  
  34.         super.onAttach(activity);  
  35.     }  
  36.       
  37.     @Override  
  38.     public View onCreateView(LayoutInflater inflater, ViewGroup container,  
  39.             Bundle savedInstanceState) {  
  40.         View view = inflater.inflate(R.layout.layout_menu, null);  
  41.         findViews(view);  
  42.           
  43.         return view;  
  44.     }  
  45.       
  46.       
  47.     public void findViews(View view) {  
  48.         todayView = view.findViewById(R.id.tvToday);  
  49.         lastListView = view.findViewById(R.id.tvLastlist);  
  50.         discussView = view.findViewById(R.id.tvDiscussMeeting);  
  51.         favoritesView = view.findViewById(R.id.tvMyFavorites);  
  52.         commentsView = view.findViewById(R.id.tvMyComments);  
  53.         settingsView = view.findViewById(R.id.tvMySettings);  
  54.           
  55.         todayView.setOnClickListener(this);  
  56.         lastListView.setOnClickListener(this);  
  57.         discussView.setOnClickListener(this);  
  58.         favoritesView.setOnClickListener(this);  
  59.         commentsView.setOnClickListener(this);  
  60.         settingsView.setOnClickListener(this);  
  61.     }  
  62.       
  63.     @Override  
  64.     public void onDestroyView() {  
  65.         super.onDestroyView();  
  66.     }  
  67.       
  68.     @Override  
  69.     public void onDestroy() {  
  70.         super.onDestroy();  
  71.     }  
  72.   
  73.     @Override  
  74.     public void onClick(View v) {  
  75.         Fragment newContent = null;  
  76.         String title = null;  
  77.         switch (v.getId()) {  
  78.         case R.id.tvToday: // 今日  
  79.             newContent = new TodayFragment();  
  80.             title = getString(R.string.today);  
  81.             break;  
  82.         case R.id.tvLastlist:// 往期列表  
  83.             newContent = new LastListFragment();  
  84.             title = getString(R.string.lastList);  
  85.             break;  
  86.         case R.id.tvDiscussMeeting: // 讨论集会  
  87.             newContent = new DiscussFragment();  
  88.             title = getString(R.string.discussMeetting);  
  89.             break;  
  90.         case R.id.tvMyFavorites: // 我的收藏  
  91.             newContent = new MyFavoritesFragment();  
  92.             title = getString(R.string.myFavorities);  
  93.             break;  
  94.         case R.id.tvMyComments: // 我的评论  
  95.             newContent = new MyCommentsFragment();  
  96.             title = getString(R.string.myComments);  
  97.             break;  
  98.         case R.id.tvMySettings: // 设置  
  99.             newContent = new MySettingsFragment();  
  100.             title = getString(R.string.settings);  
  101.             break;  
  102.         default:  
  103.             break;  
  104.         }  
  105.         if (newContent != null) {  
  106.             switchFragment(newContent, title);  
  107.         }  
  108.     }  
  109.       
  110.     /** 
  111.      * 切换fragment 
  112.      * @param fragment 
  113.      */  
  114.     private void switchFragment(Fragment fragment, String title) {  
  115.         if (getActivity() == null) {  
  116.             return;  
  117.         }  
  118.         if (getActivity() instanceof MainActivity) {  
  119.             MainActivity fca = (MainActivity) getActivity();  
  120.             fca.switchConent(fragment, title);  
  121.         }  
  122.     }  
  123.       
  124. }  

上面是核心代码,引入SlidingMenu开源库。

Demo下载地址:http://download.csdn.net/download/wwj_748/8184889

http://blog.csdn.net/wwj_748/article/details/41355459

0 0
原创粉丝点击