您的位置:首页 > 其它

2.SlidingMenu(侧边栏效果)

2015-10-27 20:53 239 查看
> 使用步骤
库:别的程序可以用它的方法、图片。下载的其中一个框架的例子是没有actionBar的,example_update引入出错可能是俩个v4包冲突了,删掉工程里的一个,不要删了库里的,如果还有错误看probles里说什么或者重启,或者选中工程右键-build path-最后一项,把有x的移除,这是运行环境的问题。而我的问题是软件里自带的v7程序里的v4包和库里的v4包冲突了,我将这个替换掉,发现以前所有的工程都报错了,发现里这些工程里的包重新导一下就可以了,可是有xutils的工程不行,可能xutils的v4冲突把
- 1. 引入SlidingMenu的库文件
- 2. Activity继承SlidingFragmentActivity
- 3. 将onCreate方法改为public
- 调用api
public class MainActivity extends SlidingFragmentActivity {


@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

setBehindContentView(R.layout.left_menu);// 设置侧边栏布局


SlidingMenu slidingMenu = getSlidingMenu();// 获取侧边栏对象

slidingMenu.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN);// 设置全屏触摸


slidingMenu.setSecondaryMenu(R.layout.right_menu);// 设置右侧边栏

slidingMenu.setMode(SlidingMenu.LEFT_RIGHT);// 设置展现模式


slidingMenu.setBehindOffset(100);// 设置预留屏幕的宽度

}


}
[/code]如果布局文件太过复杂,那就弄俩个Fragment ,一个处理侧边栏逻辑,一个处理主页面Fragment 和SlidingMenu结合使用实:1.fragment基类
public abstract class BaseFragment extends Fragment {


public Activity mActivity;


// fragment创建

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

mActivity = getActivity();

}


// 处理fragment的布局

@Override

public View onCreateView(LayoutInflater inflater, ViewGroup container,

Bundle savedInstanceState) {

return initViews();

}


// 依附的activity创建完成

@Override

public void onActivityCreated(Bundle savedInstanceState) {

super.onActivityCreated(savedInstanceState);


initData();

}


// 子类必须实现初始化布局的方法

public abstract View initViews();


// 初始化数据, 可以不实现

public void initData() {


}


}

[/code]2.左边侧边栏
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"

xmlns:tools="http://schemas.android.com/tools"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:background="#f00" >


<TextView

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="我是侧边栏!" />


</RelativeLayout>

[/code]
public class LeftMenuFragment extends BaseFragment {


@Override

public View initViews() {

View view = View.inflate(mActivity, R.layout.fragment_left_menu, null);

return view;

}


}

[/code]3.主页面
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"

xmlns:tools="http://schemas.android.com/tools"

android:layout_width="match_parent"

android:layout_height="match_parent" >


<TextView

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="我是主页面哦!" />


</RelativeLayout>

[/code]
public class ContentFragment extends BaseFragment {


@Override

public View initViews() {

View view = View.inflate(mActivity, R.layout.fragment_content, null);

//这里用了三个参数的
inflate,跟下面的一样
//LayoutInflater inflater = LayoutInflater.from(MainActivity.this);
//			使用布局填充器填充布局文件
//			View v2 = inflater.inflate(R.layout.item_listview, null);

return view;

}


}

[/code]4.俩个结合起来Fragment ,这个activity的主布局和侧边布局都是个的framelayout,因为他们是用来放frame的,而侧边栏也需要写个fargment用来放继承fargment的那个对象
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"

android:id="@+id/fl_content"

android:layout_width="match_parent"

android:layout_height="match_parent" >


</FrameLayout>

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"

android:id="@+id/fl_left_menu"

android:descendantFocusability="blocksDescendants"

android:layout_width="match_parent"

android:layout_height="match_parent" >


</FrameLayout>

[/code]
[/code]
[/code]
public class MainActivity extends SlidingFragmentActivity {

//设置了标签就能找到碎片,然后调用它里面的方法,和找id是一样的


private static final String FRAGMENT_LEFT_MENU = "fragment_left_menu";

private static final String FRAGMENT_CONTENT = "fragment_content";


@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);


setContentView(R.layout.activity_main);


setBehindContentView(R.layout.left_menu);// 设置侧边栏

SlidingMenu slidingMenu = getSlidingMenu();// 获取侧边栏对象

slidingMenu.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN);// 设置全屏触摸

slidingMenu.setBehindOffset(200);// 设置预留屏幕的宽度


initFragment();

}


/**

* 初始化fragment, 将fragment数据分别填充给主页面和侧边栏

*/

private void initFragment() {

FragmentManager fm = getSupportFragmentManager();

FragmentTransaction transaction = fm.beginTransaction();// 开启事务


transaction.replace(R.id.fl_left_menu, new LeftMenuFragment(),

FRAGMENT_LEFT_MENU);// 用fragment替换framelayout

transaction.replace(R.id.fl_content, new ContentFragment(),

FRAGMENT_CONTENT);


transaction.commit();// 提交事务

// Fragment leftMenuFragment = fm.findFragmentByTag(FRAGMENT_LEFT_MENU);

}


}

[/code]

来自为知笔记(Wiz)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: