zoukankan      html  css  js  c++  java
  • [android] 新闻客户端引入SlidingMenu

    下载SlidingMenuhttps://github.com/jfeinstein10/SlidingMenu

    导入library

    我们项目右键==>Properties==>Android==>Library add 添加第三方项目为依赖

    出现这个错误:Found 2 versions of android-support-v4.jar in the dependency list

    因为第三方项目中的android-support-v4.jar包和我们项目中的冲突了,使用我们的jar包覆盖第三方项目的就可以了

    当前activity继承SlidingFragmentActivity,重写onCreate()方法,

    调用setBehidContentView(),设置滑动菜单的布局文件,参数:资源id

    获取SlidingMenu对象,通过getSlidingMenu()方法

    调用SlidingMenu对象的setMode()方法,设置左边划出,参数:SlidingMenu.LEFT

    调用SlidingMenu对象的setBehindWidthRes(),设置菜单的宽度,参数:宽度dimen资源

    调用SlidingMenu对象的setShadowDrawable()方法,设置菜单阴影,参数:shape资源文件

    shape资源文件,添加根节点<shape>

    添加渐变节点,<gradient>,设置开始颜色android:startColor=”#000000”

    设置中间颜色,android:centerColor=”2D000000”

    设置结束颜色,android:endColor=”5A000000”

    调用SlidingMenu对象的setShadowWidth(),设置阴影的宽度,参数:宽度

    调用SlidingMenu对象的setTouchModeAbove()方法,设置滑动的范围,

    参数:SlidingMenu.TOUCHMODE_FULLSCREEN 全屏

    SlidingMenu.TOUCHMODE_NONE 不允许滑动

    调用requestWindowFeature(),参数:Window.FEATURE_NO_TITLE,去掉title

    创建Fragment

    新建一个包xxx.fragment,新建一个MenuFragment,继承v4包里的Fragment

    重写onCreate()

    重写onCreateView(),传递进来LayoutInflater对象

    新建一个布局文件,list_view.xml,里面放一个ListView控件,调用LayoutInflater对象inflate()方法,转成View对象

    重写onActivityCreated(),当activity创建的时候

    调用View对象的findViewById(),获取ListView对象

    调用ListView对象的setAdapter()方法,设置适配器,参数:Adapter对象

    获取ArrayAdapter对象,构造方法,参数:上下文,布局资源,文本控件id,数据List

    上下文(getActivity()),布局资源使用系统的android.R.layout.simple_list_item1

    文本id android.R.id.text1,数据

    替换布局

    activity中,获取Fragment对象,把menu布局替换成这个Fragmenu

    获取Fragment对象,new MenuFragment()

    调用getSuportFragment().beginTransaction().replace().commit()来替换

    replace()方法,参数:布局idfragment对象

    MainActivity.java

    package com.qingguow.news;
    
    import com.jeremyfeinstein.slidingmenu.lib.SlidingMenu;
    import com.jeremyfeinstein.slidingmenu.lib.app.SlidingFragmentActivity;
    import com.qingguow.news.fragment.MenuFragment;
    
    import android.app.Activity;
    import android.os.Bundle;
    import android.view.Menu;
    import android.view.MenuItem;
    import android.view.Window;
    
    public class MainActivity extends SlidingFragmentActivity {
    
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            requestWindowFeature(Window.FEATURE_NO_TITLE);
            //设置滑动菜单
            setBehindContentView(R.layout.menu);
            setContentView(R.layout.activity_main);
            SlidingMenu sm=getSlidingMenu();
            sm.setMode(SlidingMenu.LEFT);
            sm.setBehindWidth(200);
            sm.setShadowDrawable(R.drawable.shape);
            sm.setShadowWidth(5);
            sm.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN);
            
            //替换fragemnt
            MenuFragment menuFragment=new MenuFragment();
            getSupportFragmentManager().beginTransaction().replace(R.id.ll_left_menu, menuFragment).commit();
        }
    }

    MenuFragment.java

    package com.qingguow.news.fragment;
    
    import java.util.ArrayList;
    import java.util.List;
    
    import android.os.Bundle;
    import android.support.annotation.Nullable;
    import android.support.v4.app.Fragment;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.ViewGroup;
    import android.widget.ArrayAdapter;
    import android.widget.ListAdapter;
    import android.widget.ListView;
    
    import com.qingguow.news.R;
    
    public class MenuFragment extends Fragment {
        private View view;
        //加载布局文件
        @Override
        public View onCreateView(LayoutInflater inflater,
                @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
            view = inflater.inflate(R.layout.list_view, null);
            return view;
        }
        //设置listview数据
        @Override
        public void onActivityCreated(@Nullable Bundle savedInstanceState) {
            super.onActivityCreated(savedInstanceState);
            ListView listview = (ListView) view.findViewById(R.id.lv_menu);
            
            List<String> data=new ArrayList<String>();
            data.add("新闻");
            data.add("发现");
            data.add("关注");
            ListAdapter adapter = new ArrayAdapter<>(getActivity(),
                    android.R.layout.simple_list_item_1, android.R.id.text1,
                    data);
            listview.setAdapter(adapter);
            
        }
    }
  • 相关阅读:
    cefsharp wpf 中文输入问题解决方法
    [Node.js]操作mysql
    [Node.js]操作redis
    关系型数据库同步
    微服务和事件驱动
    如何使用REDIS进行微服务间通讯
    CENTOS7开启SSH服务
    WINDOWS和LINUX相互传文件WINSCP
    WINDOWS远程控制LINUX终端XSHELL
    腾讯云CENTOS7安装MSSQL2017
  • 原文地址:https://www.cnblogs.com/taoshihan/p/5426817.html
Copyright © 2011-2022 走看看