• 2.SlidingMenu(侧边栏效果)


     > 使用步骤
    库:别的程序可以用它的方法、图片。
    下载的其中一个框架的例子是没有actionBar的,example_update
    引入出错可能是俩个v4包冲突了,删掉工程里的一个,不要删了库里的,如果还有错误看probles里说什么或者重启,或者选中工程右键-build path-最后一项,把有x的移除,这是运行环境的问题。而我的问题是软件里自带的v7程序里的v4包和库里的v4包冲突了,我将这个替换掉,发现以前所有的工程都报错了,发现里这些工程里的包重新导一下就可以了,可是有xutils的工程不行,可能xutils的v4冲突把
    1. 引入SlidingMenu的库文件
    2. Activity继承SlidingFragmentActivity
    3. 将onCreate方法改为public
    调用api
    1. public class MainActivity extends SlidingFragmentActivity {
    2. @Override
    3. public void onCreate(Bundle savedInstanceState) {
    4. super.onCreate(savedInstanceState);
    5. setContentView(R.layout.activity_main);
    6. setBehindContentView(R.layout.left_menu);// 设置侧边栏布局
    7. SlidingMenu slidingMenu = getSlidingMenu();// 获取侧边栏对象
    8. slidingMenu.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN);// 设置全屏触摸
    9. slidingMenu.setSecondaryMenu(R.layout.right_menu);// 设置右侧边栏
    10. slidingMenu.setMode(SlidingMenu.LEFT_RIGHT);// 设置展现模式
    11. slidingMenu.setBehindOffset(100);// 设置预留屏幕的宽度
    12. }
    13. }
    如果布局文件太过复杂,那就弄俩个Fragment ,一个处理侧边栏逻辑,一个处理主页面
    FragmentSlidingMenu结合使用实:
    1.fragment基类
    1. public abstract class BaseFragment extends Fragment {
    2. public Activity mActivity;
    3. // fragment创建
    4. @Override
    5. public void onCreate(Bundle savedInstanceState) {
    6. super.onCreate(savedInstanceState);
    7. mActivity = getActivity();
    8. }
    9. // 处理fragment的布局
    10. @Override
    11. public View onCreateView(LayoutInflater inflater, ViewGroup container,
    12. Bundle savedInstanceState) {
    13. return initViews();
    14. }
    15. // 依附的activity创建完成
    16. @Override
    17. public void onActivityCreated(Bundle savedInstanceState) {
    18. super.onActivityCreated(savedInstanceState);
    19. initData();
    20. }
    21. // 子类必须实现初始化布局的方法
    22. public abstract View initViews();
    23. // 初始化数据, 可以不实现
    24. public void initData() {
    25. }
    26. }
    2.左边侧边栏
    1. <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    2. xmlns:tools="http://schemas.android.com/tools"
    3. android:layout_width="match_parent"
    4. android:layout_height="match_parent"
    5. android:background="#f00" >
    6. <TextView
    7. android:layout_width="wrap_content"
    8. android:layout_height="wrap_content"
    9. android:text="我是侧边栏!" />
    10. </RelativeLayout>
    1. public class LeftMenuFragment extends BaseFragment {
    2. @Override
    3. public View initViews() {
    4. View view = View.inflate(mActivity, R.layout.fragment_left_menu, null);
    5. return view;
    6. }
    7. }
    3.主页面
    1. <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    2. xmlns:tools="http://schemas.android.com/tools"
    3. android:layout_width="match_parent"
    4. android:layout_height="match_parent" >
    5. <TextView
    6. android:layout_width="wrap_content"
    7. android:layout_height="wrap_content"
    8. android:text="我是主页面哦!" />
    9. </RelativeLayout>
    1. public class ContentFragment extends BaseFragment {
    2. @Override
    3. public View initViews() {
    4. View view = View.inflate(mActivity, R.layout.fragment_content, null);
    5. //这里用了三个参数的inflate,跟下面的一样
    6. //LayoutInflater inflater = LayoutInflater.from(MainActivity.this);
      // 使用布局填充器填充布局文件
      // View v2 = inflater.inflate(R.layout.item_listview, null);
    7. return view;
    8. }
    9. }
    4.俩个结合起来Fragment ,这个activity的主布局和侧边布局都是个的framelayout,因为他们是用来放frame的,而侧边栏也需要写个fargment用来放继承fargment的那个对象
    1. <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    2. android:id="@+id/fl_content"
    3. android:layout_width="match_parent"
    4. android:layout_height="match_parent" >
    5. </FrameLayout>
      1. <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
      2. android:id="@+id/fl_left_menu"
      3. android:descendantFocusability="blocksDescendants"
      4. android:layout_width="match_parent"
      5. android:layout_height="match_parent" >
      6. </FrameLayout>

    1. public class MainActivity extends SlidingFragmentActivity {
    2. //设置了标签就能找到碎片,然后调用它里面的方法,和找id是一样的
    3. private static final String FRAGMENT_LEFT_MENU = "fragment_left_menu";
    4. private static final String FRAGMENT_CONTENT = "fragment_content";
    5. @Override
    6. public void onCreate(Bundle savedInstanceState) {
    7. super.onCreate(savedInstanceState);
    8. setContentView(R.layout.activity_main);
    9. setBehindContentView(R.layout.left_menu);// 设置侧边栏
    10. SlidingMenu slidingMenu = getSlidingMenu();// 获取侧边栏对象
    11. slidingMenu.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN);// 设置全屏触摸
    12. slidingMenu.setBehindOffset(200);// 设置预留屏幕的宽度
    13. initFragment();
    14. }
    15. /**
    16. * 初始化fragment, 将fragment数据分别填充给主页面和侧边栏
    17. */
    18. private void initFragment() {
    19. FragmentManager fm = getSupportFragmentManager();
    20. FragmentTransaction transaction = fm.beginTransaction();// 开启事务
    21. transaction.replace(R.id.fl_left_menu, new LeftMenuFragment(),
    22. FRAGMENT_LEFT_MENU);// 用fragment替换framelayout
    23. transaction.replace(R.id.fl_content, new ContentFragment(),
    24. FRAGMENT_CONTENT);
    25. transaction.commit();// 提交事务
    26. // Fragment leftMenuFragment = fm.findFragmentByTag(FRAGMENT_LEFT_MENU);
    27. }
    28. }













  • 相关阅读:
    botzone Tetris2
    NOIP2017游记
    城乡联谊胡策会糊厕R3
    SRM 20
    AtCoder Regular Contest 082
    AtCoder Grand Contest 019
    复数模版
    SRM13
    NOI2017&&codeM2017游记
    java多线程编程
  • 原文地址:https://www.cnblogs.com/sixrain/p/4915503.html
Copyright © 2020-2023  润新知