美文网首页
Android之智慧北京一

Android之智慧北京一

作者: 破荒之恋 | 来源:发表于2016-12-24 13:42 被阅读48次

    Android之智慧北京一

    公司的角色
    1. 产品:搜集用户的需求,将需求转化为功能,将功能转化为用户体验(产品汪)
    2. 技术:实现产品提出的需求
    3. 测试:检测技术实现的功能
    4. 运营:对产品进行运营维护
    5. 销售:卖产品
    研发流程
    1. 需求分析: 写需求文档
    2. 原型设计:
    3. 时间估算:
    4. 迭代开发:
    5. 阶段测试:
    6. 准备渠道:

    代码规范

    1. 如何去导入和新建代码格式化(code formator)
    2. 如何去写注释模板(comments template)
    欢迎界面
    1. 动画的实现:旋转
    2. 缩放
    3. 透明渐变动画

    动画的监听

    • 引导页面
      ViewPager数据的添加PagerAdapter的使用
      监听的几个方法(onPagerScrolled,onPagerSelected,onPagerStateChange)

    静态点的添加LayoutParams的使用

    动态点的移动距离的计算

    LayoutParams的使用

    xml样式drawable的selector样式
    color的selector的样式
    shape的写法

    主页的实现

    github网站的使用
    网站:https://github.com/
    语言的过滤Java,点赞的过滤
    英文搜索关键字

    slidingMenu的介绍
    1. 导入开源库

    2. 让activity 继承 SlidingxxxxActivity,将onCreate 改为public

    3. slidngMenu常用的api

    /**
     * 点击菜单栏图标关闭菜单,若关闭着点击就打开
     */
    private void toggleSetMenu()
    {
        //获取上下文取得菜单实例:点击菜单,若菜单打开就关闭,关闭就打开
        MainUIActivity ui=(MainUIActivity) mContext;
        SlidingMenu menu=ui.getSlidingMenu();
        menu.toggle();
    
    }
     * 设置menu是否可见即是否能否侧滑
     * @param enable
    
    public void setSlindingMenu(boolean enable){
        MainUIActivity mainui=(MainUIActivity) mActivity;
        SlidingMenu menu=mainui.getSlidingMenu();
        menu.setTouchModeAbove(enable ? SlidingMenu.TOUCHMODE_FULLSCREEN:SlidingMenu.TOUCHMODE_NONE);
    }
    

    mvc的思想

    1. Mode : 数据
    2. View : 显示的视图
    3. controller : 控制器
      关系:
      controller 负责和mode以及View进行通讯,用来管理调用mode和view

    主页MainUIActivity的实现

        /*
         *@描述:主界面添加--------------主页和左侧菜单--------------
         */
    public class MainUIActivity extends SlidingFragmentActivity {
    
        private final static String TAG_CONTENT="content"; //主页
        private final static String TAG_LEFT_MENU="left_menu"; //左侧
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            //取消标题
            requestWindowFeature(Window.FEATURE_NO_TITLE);
    
            //设置内容区域
            setContentView(R.layout.activity_mainui);
    
            //设置behind部分
            setBehindContentView(R.layout.main_left);
            //获得SlidingMenu的实例
            SlidingMenu menu=getSlidingMenu();
            //设置模式
            menu.setMode(SlidingMenu.LEFT);
            //指定的是菜单的边缘到屏幕边缘的距离
            menu.setBehindOffset(180);
            //菜单的区域宽度
            //menu.setBehindWidth(100);
            menu.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN);
    
            //加载fragment的方式加载页面
            initFragment();
    
        }
    
        private void initFragment() {
            FragmentManager  fm=getSupportFragmentManager();
    
            //开启事务
            FragmentTransaction transaction=fm.beginTransaction();
    
            //添加主页fragmeng
            transaction.replace(R.id.main_container, new ContentFragment(), TAG_CONTENT);
    
            //添加左侧fragmeng
            transaction.replace(R.id.main_left, new LeftFragment(), TAG_LEFT_MENU);
    
            transaction.commit();
    
        }
    
        /**
         * 获取左侧菜单
         */
        public LeftFragment getLeftFragment()
        {
            FragmentManager fm=getSupportFragmentManager();
            return (LeftFragment) fm.findFragmentByTag(TAG_LEFT_MENU);
    
        }
    
        /**
         * 获得当前的实例Fragment
         * @return
         */
        public ContentFragment getContentFragment()
    
        {
            FragmentManager fm=getSupportFragmentManager();
            return (ContentFragment) fm.findFragmentByTag(TAG_CONTENT);
    
        }
    }
    

    左滑菜单的实现

    *@描述:左侧菜单
         */
        public class LeftFragment extends BaseFragment implements OnItemClickListener {
    
            public static final String  TAG = "LeftFragment";
            private List<NewCenterMenuListBean> mMenuData;  //菜单对应的数据
            private ListView    listview;
            private int mCurrent;
            private NewsMenuAdapter menuAdapter;
            @Override
            protected View initView() {
            /*  TextView tv=new TextView(mActivity);
                tv.setText("菜单内容");
                return tv;*/
    
                /**
                 * 设置侧滑菜单的样式
                 */
                listview = new ListView(mActivity);
                listview.setBackgroundColor(Color.BLACK);//设置背景色为黑色
                listview.setDividerHeight(0); //去掉分割线
                listview.setPadding(0, 50, 0,0);
                listview.setCacheColorHint(Color.TRANSPARENT);
                listview.setSelector(android.R.color.transparent);
                return listview;
    
            }
    
            /**
             * 设置菜单数据
             * @param mMenuData
             */
            public void setMenuData(List<NewCenterMenuListBean> datas)
            {
                //设置默认选中的第一个item
                this.mCurrent=0;
    
                //数据的接收
                this.mMenuData=datas;
    
                menuAdapter = new NewsMenuAdapter();
                //数据展示---adapter---list
                listview.setAdapter(menuAdapter);
    
                //设置listview条目的点击事件
                listview.setOnItemClickListener(this);
            }
            //listview适配器
            class NewsMenuAdapter extends BaseAdapter{
                @Override
                public int getCount()
                {
                    if(mMenuData!=null){
                        return mMenuData.size();
                    }
                    return 0;
                }
    
                @Override
                public Object getItem(int position)
                {
                    return null;
                }
    
                @Override
                public long getItemId(int position)
                {
                    return 0;
                }
    
                @Override
                public View getView(int position, View convertView, ViewGroup parent)
                {
                    if(convertView==null){
                        //没有复用时
                        convertView=View.inflate(mActivity, R.layout.newsmenu, null);
                    }
    
                    TextView tv=(TextView) convertView.findViewById(R.id.news_menu);
                    String title=mMenuData.get(position).title;
                    tv.setText(title);
    
                    //判断么默认中下的
                    /*if(mCurrent==position){
                        tv.setEnabled(true);
                    }
                    else{
                        tv.setEnabled(false);
                    }*/
    
                    tv.setEnabled(mCurrent==position?true:false);
    
                    return tv;
                }
    
            }
            /**
             * listview的条目的点击事件
             */
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id)
            {
                //不做处理
                if(mCurrent==position){
                    return;
                }
                //1、选中对应的项
                this.mCurrent=position;
                //UI更新
                menuAdapter.notifyDataSetChanged();
    
                //2、收起菜单
                MainUIActivity mainui=(MainUIActivity) mActivity;
                mainui.getSlidingMenu().toggle();
    
                //3、右侧内容区域的改变
                ContentFragment contentFra=mainui.getContentFragment();
                contentFra.switchMenuPager(mCurrent);
            }
    
        }
    

    抽取相同的内容成为基类:

    *@描述:父类容器BaseFragment,集成了相似的内容
     */
    public abstract class BaseFragment extends Fragment {
    
        public Activity mActivity;
        @Override
        public void onCreate( Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            this.mActivity=getActivity();
    
        }
        @Override
        public View onCreateView(LayoutInflater inflater,
                 ViewGroup container,  Bundle savedInstanceState) {
            return initView();
        }
    
        @Override
        public void onActivityCreated( Bundle savedInstanceState) {
            super.onActivityCreated(savedInstanceState);
            //加载数据
            initData();
    
        }
    
        protected void initData() {
    
        }
        //留给子类去具体实现
        protected abstract View initView();
    
    }
    

    主页内容区域的实现:

     *@描述:这是加载页面内容的容器,用来管理tab的切换内容
     */
    public class ContentFragment extends BaseFragment implements OnCheckedChangeListener {
        public static final String  tag = "ContentFragment";
    
        @ViewInject(R.id.content_pager)     //viewPager
        private NoTouchViewPager mPager;    
        @ViewInject(R.id.content_tab_rad)     //底部容器
    
        private RadioGroup mRadioGroup;    
        private List<TabBasePager> mList;  //显示内容 显示页面
    
        private int checkCurrentId;
        @Override
        protected View initView() {
        View view1= View.inflate(mActivity, R.layout.content, null);
            //ViewUtils工具的注入
        ViewUtils.inject(this, view1);
            return view1;
        }
        @Override
        protected void initData() {
            //初始化数据
            mList=new ArrayList<TabBasePager>();
            //加载数据TODO 添加主页面viewpager
            mList.add(new TabHomePager(mActivity));
            mList.add(new TabNewCenterPager(mActivity));
            mList.add(new TabSmasterservicePager(mActivity));
            mList.add(new TabGovPager(mActivity));
            mList.add(new TabSettingPager(mActivity));
            //加载数据
            mPager.setAdapter(new ViewPagerAdapter());
    
            //设置RadioGroup的点击事件
            mRadioGroup.setOnCheckedChangeListener(this);
    
            //给RadioGroup设置默认值
            mRadioGroup.check(R.id.tab_home);
    
            checkCurrentId = 0;
        }
        //viewpager的的适配器
         class ViewPagerAdapter extends PagerAdapter{
             //返回集合大小
            @Override
            public int getCount()
            {
                if(mList!=null){
                    return mList.size();
                }
                return 0;
            }
            @Override
            public boolean isViewFromObject(View arg0, Object arg1)
            {
                return arg0==arg1;
            }
            //销毁一个页卡
            @Override
            public void destroyItem(ViewGroup container, int position, Object object)
            {
                Log.i(tag, "销毁的是第"+position+"个页面");
                container.removeView((View) object);
            }
            //实例化一个页卡
            @Override
            public Object instantiateItem(ViewGroup container, int position)
            {
                Log.i(tag, "加载的是第"+position+"个页面");
                TabBasePager pager=mList.get(position);
                View view=pager.getRootView();
                //viewpager需要存放视图
                container.addView(view);
                //给页面控制器加载数据
                pager.initData();
                return view;
            }
        }
         /**
          * 将五个页面分别和下面五个tab关联起来
          */
        @Override
        public void onCheckedChanged(RadioGroup group, int checkedId)
        {
    
            switch(checkedId){
                case R.id.tab_home:
                    checkCurrentId=0;
                    setSlindingMenu(false);
                    break;
                case R.id.tab_news:
                    checkCurrentId=1;
                    setSlindingMenu(true);
                    break;
                case R.id.tab_smaster:
                    checkCurrentId=2;
                    setSlindingMenu(true);
                    break;
                case R.id.tab_gov:
                    checkCurrentId=3;
                    setSlindingMenu(true);
                    break;
                case R.id.tab_setting:
                    checkCurrentId=4;
                    setSlindingMenu(false);
                    break;
    
            }
            //给viewpager设置选中的页面
            mPager.setCurrentItem(checkCurrentId);
        }
        /**
         * 设置menu是否可见即是否能否侧滑
         * @param enable
         */
        public void setSlindingMenu(boolean enable){
            MainUIActivity mainui=(MainUIActivity) mActivity;
            SlidingMenu menu=mainui.getSlidingMenu();
            menu.setTouchModeAbove(enable ? SlidingMenu.TOUCHMODE_FULLSCREEN:SlidingMenu.TOUCHMODE_NONE);
    
        }
        /**
         * 改变菜单对应的显示页面
         * @param mCurrent
         */
        public void switchMenuPager(int position)
        {
            //获得显示切换的实例
              TabBasePager tabPager=mList.get(checkCurrentId);
              //调用切换菜单显示主页的内容区域
              tabPager.switchMenuPager(position);
    
        }
    }
    

    相关文章

      网友评论

          本文标题:Android之智慧北京一

          本文链接:https://www.haomeiwen.com/subject/bqwlvttx.html