slidingmenu + fragment 左右菜单滑动

slidingmenu + fragment 左右菜单滑动           slidingmenu + fragment 左右菜单滑动           slidingmenu + fragment 左右菜单滑动

content_frame.xml

1 <?xml version="1.0" encoding="utf-8"?> 2 <FrameLayout 3 xmlns:android="http://schemas.android.com/apk/res/android" 4  android:id="@+id/content_frame" 5  android:layout_width="match_parent" 6  android:layout_height="match_parent" />

 

左侧  menu_frame.xml

1 <?xml version="1.0" encoding="utf-8"?> 2 <FrameLayout 3 xmlns:android="http://schemas.android.com/apk/res/android" 4  android:id="@+id/menu_frame" 5  android:layout_width="match_parent" 6  android:layout_height="match_parent" />

 

右侧  menu_frame_right.xml

1 <?xml version="1.0" encoding="utf-8"?> 2 <FrameLayout 3 xmlns:android="http://schemas.android.com/apk/res/android" 4  android:id="@+id/menu_frame_right" 5  android:layout_width="match_parent" 6  android:layout_height="match_parent" />

 

  1 package com.cn.slidingmenu.fragment;  2  3 import com.actionbarsherlock.view.MenuItem;  4 import com.cn.slidingmenu.fragment.R;  5 import com.jeremyfeinstein.slidingmenu.lib.SlidingMenu;  6 import com.jeremyfeinstein.slidingmenu.lib.SlidingMenu.CanvasTransformer;  7 import com.jeremyfeinstein.slidingmenu.lib.app.SlidingFragmentActivity;  8  9 import android.graphics.Canvas;  10 import android.os.Bundle;  11 import android.support.v4.app.Fragment;  12 import android.view.animation.Interpolator;  13  14 /**  15  * slidingmenu + fragment  16  *  17  * @author dr  18 */  19 public class MainActivity extends SlidingFragmentActivity {  20  21 private SlidingMenu sm;  22 private Fragment contentFragment;  23 private Fragment leftFragment;  24  25  @Override  26 public void onCreate(Bundle savedInstanceState) {  27 super.onCreate(savedInstanceState);  28  setContentView(R.layout.content_frame);  29  30 // 设置SlidingMenu的layout  31  setBehindContentView(R.layout.menu_frame);  32  33 if (savedInstanceState == null) {  34 contentFragment = new Fragment1();  35 } else {  36 // 取出之前保存的contentFragment  37 contentFragment = this.getSupportFragmentManager().getFragment(  38 savedInstanceState, "contentFragment");  39  }  40 // 设置当前的fragment  41 // getSupportFragmentManager JAR包当中的  42 this.getSupportFragmentManager().beginTransaction()  43  .replace(R.id.content_frame, contentFragment).commit();  44  45 /** 设置SlidingMenu属性和layout */  46 // 得到SlidingMenu的对象  47 sm = getSlidingMenu();  48 // 设置slidingmenu滑动的方式  49  sm.setMode(SlidingMenu.LEFT_RIGHT);  50 // 设置slidingmenu边界的阴影图片  51  sm.setShadowDrawable(R.drawable.shadow);  52 // 设置阴影的宽度  53  sm.setShadowWidthRes(R.dimen.shadow_width);  54 // 设置slidingmenu宽度  55  sm.setBehindOffsetRes(R.dimen.slidingmenu_offset);  56 // 设置slidingmenu宽度  57 // sm.setBehindWidth(400);  58 // 设置滑出slidingmenu范围  59  sm.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN);  60  sm.setMenu(R.layout.menu_frame);  61 // 设置slidingmenu动画  62 sm.setBehindCanvasTransformer(null);  63  64 // 设置menu的fragment  65 leftFragment = new LeftFragment();  66 this.getSupportFragmentManager().beginTransaction()  67  .replace(R.id.menu_frame, leftFragment).commit();  68  69 // 设置右侧的slidingmenu  70  sm.setSecondaryMenu(R.layout.menu_frame_right);  71  sm.setSecondaryShadowDrawable(R.drawable.shadowright);  72  73 // 设置右侧滑出的slidingmenu  74 RightFragment rightFragment = new RightFragment();  75 this.getSupportFragmentManager().beginTransaction()  76  .replace(R.id.menu_frame_right, rightFragment).commit();  77  78 // 设置在slidingmenu页显示ActionBar  79 setSlidingActionBarEnabled(false);  80 // 是ActionBar的图标可以被点击  81 getSupportActionBar().setHomeButtonEnabled(true);  82 // 启用向左的图标  83 getSupportActionBar().setDisplayHomeAsUpEnabled(true);  84  85  }  86  87  @Override  88 public boolean onMenuItemSelected(int featureId, MenuItem item) {  89 switch (item.getItemId()) {  90 case android.R.id.home:  91 // 动态打开或关闭slidingmenu  92  sm.toggle();  93 break;  94 default:  95 break;  96  }  97 return true;  98  }  99 100  @Override 101 protected void onSaveInstanceState(Bundle outState) { 102 super.onSaveInstanceState(outState); 103 // 1.bundle 104 // 2.存放的ID 105 // 3.当前要保存的fragment的实例 106 this.getSupportFragmentManager().putFragment(outState, 107 "contentFragment", contentFragment); 108  } 109 110 /** 111  * 切换fragment 112  * 113  * @param f 114 */ 115 public void switchFragment(Fragment f) { 116 contentFragment = f; 117 this.getSupportFragmentManager().beginTransaction() 118  .replace(R.id.content_frame, contentFragment).commit(); 119  sm.toggle(); 120  } 121 122 /** 123  * 缩放动画 124 */ 125 private CanvasTransformer canvasTransformer = new CanvasTransformer() { 126 127  @Override 128 public void transformCanvas(Canvas canvas, float percentOpen) { 129 float scale = (float) (percentOpen * 0.25 + 0.75); 130 canvas.scale(scale, scale, canvas.getWidth() / 2, 131 canvas.getHeight() / 2); 132  } 133 134  }; 135 private static Interpolator interp = new Interpolator() { 136  @Override 137 public float getInterpolation(float t) { 138 t -= 1.0f; 139 return t * t * t + 1.0f; 140  } 141  }; 142 143 /** 144  * 从下网上动画 145 */ 146 private CanvasTransformer canvasTransformer2 = new CanvasTransformer() { 147 148  @Override 149 public void transformCanvas(Canvas canvas, float percentOpen) { 150  canvas.translate( 151 0, 152  canvas.getHeight() 153 * (1 - interp.getInterpolation(percentOpen))); 154  } 155 156  }; 157 158 /** 159  * 拉伸动画 160 */ 161 private CanvasTransformer canvasTransformer3 = new CanvasTransformer() { 162  @Override 163 public void transformCanvas(Canvas canvas, float percentOpen) { 164 canvas.scale(percentOpen, 1, 0, 0); 165 166  } 167  }; 168 169 }

 

 1 package com.cn.slidingmenu.fragment;  2  3 import com.cn.slidingmenu.fragment.R;  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.ViewGroup;  9 import android.widget.TextView; 10 11 public class Fragment1 extends Fragment { 12 13  @Override 14 public void onCreate(Bundle savedInstanceState) { 15 super.onCreate(savedInstanceState); 16  } 17  @Override 18 public View onCreateView(LayoutInflater inflater, ViewGroup container, 19  Bundle savedInstanceState) { 20 //设置fragment的layout 21 View view = inflater.inflate(R.layout.text, null); 22 TextView tv = (TextView) view.findViewById(R.id.test); 23 tv.setText(Fragment1.class.getSimpleName()); 24 return view; 25  } 26  @Override 27 public void onActivityCreated(Bundle savedInstanceState) { 28 super.onActivityCreated(savedInstanceState); 29  } 30 31 }

 

 1 package com.cn.slidingmenu.fragment;  2  3 import java.util.ArrayList;  4 import java.util.List;  5 import com.cn.slidingmenu.fragment.R;  6 import android.os.Bundle;  7 import android.support.v4.app.Fragment;  8 import android.view.LayoutInflater;  9 import android.view.View; 10 import android.view.ViewGroup; 11 import android.widget.AdapterView; 12 import android.widget.AdapterView.OnItemClickListener; 13 import android.widget.ArrayAdapter; 14 import android.widget.ListView; 15 16 public class LeftFragment extends Fragment implements OnItemClickListener { 17 18 private View rootView; 19 20  @Override 21 public void onCreate(Bundle savedInstanceState) { 22 super.onCreate(savedInstanceState); 23  } 24 25  @Override 26 public View onCreateView(LayoutInflater inflater, ViewGroup container, 27  Bundle savedInstanceState) { 28 // 设置fragment的layout 29 rootView = inflater.inflate(R.layout.activity_main, null); 30 return rootView; 31  } 32 33  @Override 34 public void onActivityCreated(Bundle savedInstanceState) { 35 super.onActivityCreated(savedInstanceState); 36 ListView lv = (ListView) rootView.findViewById(R.id.listview); 37 38 List<String> list = initData(); 39 40 ArrayAdapter<String> adapter = new ArrayAdapter<String>(getActivity(), 41  android.R.layout.simple_list_item_1, android.R.id.text1, list); 42 43  lv.setAdapter(adapter); 44 lv.setOnItemClickListener(this); 45  } 46 47 /** 48  * 初始化数据 49  * @return 50 */ 51 public List<String> initData() { 52 List<String> list = new ArrayList<String>(); 53 list.add(Fragment1.class.getSimpleName()); 54 list.add(Fragment2.class.getSimpleName()); 55 list.add(Fragment3.class.getSimpleName()); 56 list.add(Fragment4.class.getSimpleName()); 57 list.add(Fragment5.class.getSimpleName()); 58 return list; 59  } 60 61  @Override 62 public void onItemClick(AdapterView<?> parent, View view, int position, 63 long id) { 64 Fragment f = null; 65 switch (position) { 66 case 0: 67 f = new Fragment1(); 68 break; 69 case 1: 70 f = new Fragment2(); 71 break; 72 case 2: 73 f = new Fragment3(); 74 break; 75 case 3: 76 f = new Fragment4(); 77 break; 78 case 4: 79 f = new Fragment5(); 80 break; 81 default: 82 f = new Fragment1(); 83 break; 84  } 85  switchFragment(f); 86  } 87 88 /** 89  * listview item 点击时切换fragment 90  * @param f 91 */ 92 private void switchFragment(Fragment f) { 93 if (getActivity() instanceof MainActivity) { 94 MainActivity activity = (MainActivity) getActivity(); 95  activity.switchFragment(f); 96  } 97  } 98 99 }

 

 1 package com.cn.slidingmenu.fragment;  2  3 import java.util.ArrayList;  4 import java.util.List;  5 import android.os.Bundle;  6 import android.support.v4.app.Fragment;  7 import android.view.LayoutInflater;  8 import android.view.View;  9 import android.view.ViewGroup; 10 import android.widget.ArrayAdapter; 11 import android.widget.ListView; 12 13 public class RightFragment extends Fragment { 14 15 private View rootView; 16 17  @Override 18 public void onCreate(Bundle savedInstanceState) { 19 super.onCreate(savedInstanceState); 20  } 21 22  @Override 23 public View onCreateView(LayoutInflater inflater, ViewGroup container, 24  Bundle savedInstanceState) { 25 rootView = inflater.inflate(R.layout.activity_main, null); 26 return rootView; 27  } 28  @Override 29 public void onActivityCreated(Bundle savedInstanceState) { 30 super.onActivityCreated(savedInstanceState); 31 ListView lv = (ListView) rootView.findViewById(R.id.listview); 32 List<String> list = initData(); 33 ArrayAdapter<String> adapter = new ArrayAdapter<String>( 34  getActivity(), 35  android.R.layout.simple_list_item_1, 36  android.R.id.text1, 37  list); 38 39  lv.setAdapter(adapter); 40  } 41 42 /** 43  * 初始化数据 44  * @return 45 */ 46 public List<String> initData() { 47 List<String> list = new ArrayList<String>(); 48 list.add(Fragment1.class.getSimpleName()); 49 list.add(Fragment2.class.getSimpleName()); 50 list.add(Fragment3.class.getSimpleName()); 51 list.add(Fragment4.class.getSimpleName()); 52 list.add(Fragment5.class.getSimpleName()); 53 return list; 54  } 55 56 }

 

DEMO下载地址:http://pan.baidu.com/s/1o6v7iX0

文件中三个包,  SlidingMenuFragment21引用library,library引用actionbarsherlock。

 

你可能感兴趣的:(Fragment)