Android之智慧北京一

来源:互联网 发布:linux 查看mysql服务 编辑:程序博客网 时间:2024/06/02 19:47

Android之智慧北京一

公司的角色

  1. 产品:搜集用户的需求,将需求转化为功能,将功能转化为用户体验(产品汪)
  2. 技术:实现产品提出的需求
  3. 测试:检测技术实现的功能
  4. 运营:对产品进行运营维护
  5. 销售:卖产品

研发流程

  1. 需求分析: 写需求文档
  2. 原型设计:
  3. 时间估算:
  4. 迭代开发:
  5. 阶段测试:
  6. 准备渠道:

代码规范

  1. 如何去导入和新建代码格式化(code formator)
  2. 如何去写注释模板(comments template)

欢迎界面

  1. 动画的实现:
    1. 旋转
    2. 缩放
    3. 透明渐变动画
  2. 动画的监听

引导页面

  1. ViewPager数据的添加
    1. PagerAdapter的使用
    2. 监听的几个方法(onPagerScrolled,onPagerSelected,onPagerStateChange)
  2. 静态点的添加
    1. LayoutParams的使用
  3. 动态点的移动
    1. 距离的计算
    2. LayoutParams的使用
  4. xml样式
    1. drawable的selector样式
    2. color的selector的样式
    3. shape的写法

主页的实现

github网站的使用

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

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);    }}
0 0
原创粉丝点击