android侧滑及Fragment的运用

来源:互联网 发布:软件界面设计图 编辑:程序博客网 时间:2024/04/29 15:23

  转载请注明出处:http://blog.csdn.net/gutaocslg/article/details/20444903

在使用android应用的过程中看见过很多漂亮的实现效果,其中侧滑就是一种。在这种效果中分为左滑、右滑和两种都支持。我今天结合了Slidingmenu这个框架和Fragment来实现左滑和右滑,有哪里不好的请大神们指点!下面就进行详细的分析。

首先新建一个android项目,主Activity是MainActivity并且关联Slidingmenu(这个可以在网上下载)。

看一下,Activity_main.xml:

<?xml version="1.0" encoding="utf-8"?><FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:id="@+id/content_frame"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:background="#FFFFFF"/>
MainActivity.java

public class MainActivity extends FragmentActivity {private SlidingMenu menu;private Fragment conFragment;private MenuFragment menuFragment;private Button button;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);conFragment = new ContentFragment();//新建主页menuFragment = new MenuFragment();//新建菜单menu = new SlidingMenu(this,SlidingMenu.SLIDING_CONTENT);menu.setMenu(R.layout.menu_main);menu.setSecondaryMenu(R.layout.second_menu);//menu.setSecondaryShadowDrawable(R.drawable.shadow);menu.setShadowWidth(20);//设置阴影有立体效果menu.setShadowDrawable(R.drawable.shadow);menu.setBehindOffset(50);menu.setBehindScrollScale(1);menu.setBehindWidth((int) (getWindowManager().getDefaultDisplay().getWidth()*0.6));menu.setFadeDegree(1.0f);menu.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN);menu.setMode(SlidingMenu.LEFT_RIGHT);initView();}private void initView() {button = (Button) this.findViewById(R.id.exit);button.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {MainActivity.this.finish();}});FragmentTransaction ft = this.getSupportFragmentManager().beginTransaction();ft.replace(R.id.content_frame, conFragment);ft.replace(R.id.menu_frame, menuFragment);ft.commit();}//切换主页对应菜单的内容public void switchContent(Fragment fragment) {FragmentTransaction ft = this.getSupportFragmentManager().beginTransaction();conFragment = fragment;ft.replace(R.id.content_frame, conFragment);ft.addToBackStack(null);ft.commit();menu.showContent();}}

在上面的代码中很多人会关心菜单切换对应的内容的变化是怎么实现的,下面就看一下菜单MenuFragment的实现

public class MenuFragment extends Fragment {private LinearLayout layout;private ListView list;ArrayList<HashMap<String, Object>> data = new ArrayList<HashMap<String, Object>>();@Overridepublic View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {layout = (LinearLayout) inflater.inflate(R.layout.menu_layout,container, false);initView();return layout;}private void initView() {//简单的构建菜单实例for (int i = 1; i <= 5; i++) {HashMap<String, Object> map = new HashMap<String, Object>();map.put("itemId", i);map.put("itemText", "菜单"+i);data.add(map);}list = (ListView) layout.findViewById(R.id.menu_list);SimpleAdapter simperAdapter = new SimpleAdapter(getActivity(), data,R.layout.item_menu, new String[] { "itemImage", "itemText" },new int[] { R.id.menuitem_image, R.id.menuitem_text });list.setAdapter(simperAdapter);list.setSelector(R.drawable.menu_selector);list.setOnItemClickListener(new OnItemClickListener() {@Overridepublic void onItemClick(AdapterView<?> parent, View view,int position, long id) {if(getActivity() instanceof MainActivity) {HashMap<String, Object> map = (HashMap<String, Object>) parent.getItemAtPosition(position);int i = (Integer) map.get("itemId");Fragment frag = getFragment(i);//获取对应页面的Fragment((MainActivity) getActivity()).switchContent(frag);}}});}public Fragment getFragment(int i) {switch (i) {case 1:return new ContentFragmentOne();case 2:return new ContentFragmentTwo();case 3:return new ContentFragmentThree();case 4:return new ContentFragmentFour();case 5:return new ContentFragmentFive();default:return new ContentFragment();}}}

里面新建了多个菜单切换是所对应页面的Fragment这个朋友们可以下载我上传的源码可以看见。

下面来看一下效果图。


好了这篇的内容就到这了,希望大神给予批评建议!

下载地址:http://download.csdn.net/detail/gutaocslg/6989547

源码要关联Slidingmenu

1 0
原创粉丝点击