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
}
[/code]如果布局文件太过复杂,那就弄俩个Fragment ,一个处理侧边栏逻辑,一个处理主页面Fragment 和SlidingMenu结合使用实:1.fragment基类
[/code]2.左边侧边栏
[/code]
[/code]3.主页面
[/code]
[/code]4.俩个结合起来Fragment ,这个activity的主布局和侧边布局都是个的framelayout,因为他们是用来放frame的,而侧边栏也需要写个fargment用来放继承fargment的那个对象
[/code]
[/code]
[/code]
[/code]
来自为知笔记(Wiz)
库:别的程序可以用它的方法、图片。下载的其中一个框架的例子是没有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)
相关文章推荐
- 《编写有效用例》阅读笔记三
- import 如何工作
- leecode | Nim game
- MD5算法步骤详解
- DBN爬坑记之RBM
- char *a 与char a[] 的区别
- UFT录制与脚本编辑
- POJ2932 扫描线
- 【UIKit-54-1】UIInterface-系统的颜色与字体
- CheungSSH运维自动化软件 批量管理上千台服务器
- Unity3d 游戏场景优化 第二章
- 微信支付的坑
- 一个前端博客(5)——遮罩效果及tool.js实现
- Flask 框架构建
- java Vamei快速教程08 继承
- 生成模型与判别式模型的区别
- 动态生成矩阵选择器,选择面板
- 关于自定义UITableViewCell报错问题
- Unity3d 游戏场景优化 第三章
- H5表单元素详解