zoukankan      html  css  js  c++  java
  • SlidingMenu开源项目滑动界面的实现总结

    先上图


    须要准备的是先得在GitHub上下载ActionBarSherlock-master.zip,和SlidingMenu-master.zip这两个开源文件,然后解压这两个包,SlidingMenu里面的library文件导入到Eclipse的一个project里面(在这里不强调利Import一个androidproject),还有ActionBarSherlock里面的actionbarsherlock文件导入到Eclipse其中。

    导入之后就须要把library设置为一个library方便以后再其它project里面调用。详细操作例如以下:

    1.选中刚才导入的libraryproject,Alt+Enter


    点击选中android,然后Add前面的actionbarsherlock文件(切记actionbarsherlock文件的路径不要是中文名,而且要跟library还有平时须要新建project的地址在同一个工作区——Workspace)。然后勾选上面的islibrary;这一步的目的是让我们的library(SlidingMenu刚才导入的项目)关联actionbarsherlock项目,由于它用到了actionbarsherlock里面的一些东西

    2.假设做完第一步之后有的同学会发现可能会报错,这是由于library下的libs文件中面的包android-support-v4.jar跟actionbarsherlock存在差异,当然由于library引用actionbarsherlock里面的内容。所以我们能够删除library下libs里面的android-support-v4.jar,就能够


    3.接下来就是改动library里面的SlidingFragmentActivity.java让它继承SherlockFragmentActivity。

    4.做完上面的下来就是自己新建项目来实践证明一下。我最開始用的是SlidingMenu里面的example导入之后,执行完美,毫无破绽。然后就想自己新建个试试,结果遇到了非常多麻烦

    首先就是须要把自己新建项目里面的libs下的那个jar包删除,有一部分同学是好的,可是我运气不好,一直是R.java文件找不到。看底下报错信息,都是在actionbarsherlock里面缺省一些信息,

    后来找了半天发现我须要改动新建项目里面的AndroidMainfest.xml文件中面的theme,改成 android:theme="@style/Theme.Sherlock" > 再此我得感谢那个叫“心尘”的同学帮了我。

    只是还是有问题,R文件依旧找不到,原因这次就和明了了,是由于我使用的额Eclipse版本号可能过高。它里面新建project的时候自身会依赖另外一个包,这也就是我每次新建一个project自己主动多出来一个包的原因;然后锁依赖的这个包里面有非常多东西和library是冲突的,有的反复定义过了,所以我果断删除这个包,然后继续看哪里报错,找到报错的地方继续删除,删除之后再把Mainactivity继承的类改为最原始的Activity,会好。假设发现有menu相关的,继续删除就可以


    接下来就总结下SlidingMenu的一些属性

    SlidingMenu 经常使用属性介绍:
    menu.setMode(SlidingMenu.LEFT);//设置左滑菜单
    menu.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN);//设置滑动的屏幕范围,该设置为全屏区域都能够滑动
    menu.setShadowDrawable(R.drawable.shadow);//设置阴影图片
    menu.setShadowWidthRes(R.dimen.shadow_width);//设置阴影图片的宽度
    menu.setBehindOffsetRes(R.dimen.slidingmenu_offset);//SlidingMenu划出时主页面显示的剩余宽度
    menu.setBehindWidth(400);//设置SlidingMenu菜单的宽度
    menu.setFadeDegree(0.35f);//SlidingMenu滑动时的渐变程度
    menu.attachToActivity(this, SlidingMenu.SLIDING_CONTENT);//使SlidingMenu附加在Activity上
    menu.setMenu(R.layout.menu_layout);//设置menu的布局文件
    menu.toggle();//动态推断自己主动关闭或开启SlidingMenu
    menu.showMenu();//显示SlidingMenu
    menu.showContent();//显示内容
    menu.setOnOpenListener(onOpenListener);//监听slidingmenu打开
    关于关闭menu有两个监听,简单的来说,对于menu close事件。一个是when,一个是after
    menu.OnClosedListener(OnClosedListener);//监听slidingmenu关闭时事件
    menu.OnClosedListener(OnClosedListener);//监听slidingmenu关闭后事件

    左右都能够划出SlidingMenu菜单仅仅须要设置
    menu.setMode(SlidingMenu.LEFT_RIGHT);属性,然后设置右側菜单的布局文件
    menu.setSecondaryShadowDrawable(R.drawable.shadowright);//右側菜单的阴影图片

    设置SlidingMenu属性
    sm = getSlidingMenu();
    //假设仅仅显示左側菜单就是用LEFT,右側就RIGHT,左右都支持就LEFT_RIGHT
    sm.setMode(SlidingMenu.LEFT_RIGHT);//设置菜单滑动模式,菜单是出如今左側还是右側,还是左右两側都有
    sm.setShadowDrawable(R.drawable.shadow);//设置阴影的图片资源
    sm.setShadowWidthRes(R.dimen.shadow_width);//设置阴影图片的宽度
    //sm.setBehindWidth(200);//设置菜单的宽
    sm.setBehindOffsetRes(R.dimen.slidingmenu_offset);//SlidingMenu划出时主页面显示的剩余宽度
    sm.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN);//设置滑动的区域

    支持右側划出菜单:
    //SlidingMenu能够同一时候支持划出左右两側的菜单。互不冲突,并且动画优美,体验良好。
    sm.setSecondaryMenu(R.layout.menu_frame2);//设置右側菜单
    sm.setSecondaryShadowDrawable(R.drawable.shadowright);//设置右側菜单阴影的图片资源
    //右側SlidingMenu的Fragment
    getSupportFragmentManager().beginTransaction().replace(R.id.menu_frame2, new SampleListFragment()).commit();

    slidingMenu = getSlidingMenu();
    //设置是左滑还是右滑,还是左右都能够滑
    slidingMenu.setMode(SlidingMenu.LEFT_RIGHT);
    //设置阴影宽度
    slidingMenu.setShadowWidth(getWindowManager().getDefaultDisplay().getWidth() / 40);
    //设置左菜单阴影图片
    slidingMenu.setShadowDrawable(R.drawable.shadow);
    //设置右菜单阴影图片
    slidingMenu.setSecondaryShadowDrawable(R.drawable.right_shadow);
    //设置菜单占屏幕的比例
    slidingMenu.setBehindOffset(getWindowManager().getDefaultDisplay().getWidth() / 5);
    //设置滑动时菜单的是否淡入淡出
    slidingMenu.setFadeEnabled(true);
    //设置淡入淡出的比例
    slidingMenu.setFadeDegree(0.4f);
    //设置滑动时拖拽效果
    slidingMenu.setBehindScrollScale(0);
    //设置要使菜单滑动,触碰屏幕的范围
    slidingMenu.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN);

    附上自己简单写的一段

    SlidingMenu menu = new SlidingMenu(this);
    		menu.setMode(SlidingMenu.LEFT);
    		menu.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN);
    		menu.setShadowWidthRes(R.dimen.shadow_width);
    		menu.setShadowDrawable(R.drawable.shadow);
    		menu.setBehindOffsetRes(R.dimen.slidingmenu_offset);
    		menu.setFadeDegree(0.35f);
    		menu.attachToActivity(this, SlidingMenu.SLIDING_CONTENT);
    		menu.setMenu(R.layout.left_drawer_fragment);
    		menu.setOnOpenedListener(new SlidingMenu.OnOpenedListener() {
    			
    			@Override
    			public void onOpened() {
    				// TODO Auto-generated method stub
    
    			}
    		});
    		 init();
    	}

    	public void init() {
    	//	LayoutInflater inflater = LayoutInflater.from();
    	//	setVisible(R.layout.left_drawer_fragment);
    		mLinearLayout = (LinearLayout)findViewById(R.id.textLayout);
    		mTextView1 = (TextView) findViewById(R.id.textview1);
    		mTextView2 = (TextView) findViewById(R.id.textview2);
    		mTextView3 = (TextView) findViewById(R.id.textview3);
    		mTextView4 = (TextView) findViewById(R.id.textview4);
    		mTextView5 = (TextView) findViewById(R.id.textview5);
    		mTextView6 = (TextView) findViewById(R.id.textview6);
    		mTextView1.setOnClickListener(this);
    		mTextView2.setOnClickListener(this);
    		mTextView3.setOnClickListener(this);
    		mTextView4.setOnClickListener(this);
    		mTextView5.setOnClickListener(this);
    		mTextView6.setOnClickListener(this);
    	}
    
    	@Override
    	public void onClick(View view) {
    		// TODO Auto-generated method stub
    		switch (view.getId()) {
    		case R.id.textview1:
    			mLayout.setBackgroundColor(Color.BLUE);
    			break;
    		case R.id.textview2:
    			mLayout.setBackgroundColor(Color.GREEN);
    			break;
    		case R.id.textview3:
    		case R.id.textview4:
    		case R.id.textview5:
    		case R.id.textview6:
    			mLayout.setBackgroundColor(Color.WHITE);
    			break;
    
    		}
    	}
    

    唯一用到的图片随便找一个取代就可以

  • 相关阅读:
    给西安市网民的一封信
    西客集推出西安我家的功能了
    西客集又增加新功能了
    为者常成,行者常至
    kvm虚拟机磁盘&文件系统扩容流程
    Git常用命令大全
    Linux下Nexus的部署教程
    sonatype nexus简介(转)
    curl时加参数o或重定向符号>>将结果输出不到文件里怎么办?
    吞吐量(TPS)、QPS、并发数、响应时间(RT)概念
  • 原文地址:https://www.cnblogs.com/lcchuguo/p/5078351.html
Copyright © 2011-2022 走看看