安卓实习期间整理知识点(二)

来源:互联网 发布:电脑锣编程视频 编辑:程序博客网 时间:2024/09/21 08:55

安卓实习期间整理知识点(二)

View的setTag()妙用

  • 找到View的对象后,使用setTag后,在监听器中不必再与id比对,只需使用getTag()

实例代码

    btnHome.setTag(Constant.TAG_NEWS);    btnLike.setTag(Constant.TAG_DATE);    btnPerson.setTag(Constant.TAG_PERSON);    ...    btnHome.setOnClickListener(this);    btnLike.setOnClickListener(this);    btnPerson.setOnClickListener(this);    ...    @Override    public void onClick(View v) {        int tag = (Integer) v.getTag();        switch (tag) {        case Constant.TAG_NEWS:            break;        case Constant.TAG_DATE:            break;        case Constant.TAG_PERSON:            break;        }    }

实现ViewPager与Button相结合的总结

中间层类用到的类

  • FragmentActivity:Activity的子类
  • ViewPager:用于加载Fragment,相当于swing中的Frame
  • FragmentPagerAdapter:用于处理页面变化显示转换
  • Fragment:用于显示数据,相当于swing中的Panel
  • OnPageChangeListener:用于处理页面变化时带动的额外变化

封装HeadView与BottomBar

  • 上层HeadView:用于封装菜单栏,提供外部的改变外观方法,内部自己进行初始化
  • 中间ViewPager:用于切换多个Fragment,在切换的时候相应得变换HeadView与BottomBar
  • 下层BottomBar:用于封装底部菜单,底部的按钮实现监听器,同时能触摸变换中间ViewPager的显示

实例代码

// BottomBar中修改Button状态的方法public void setSelectedState(int index) {        if (index != -1 && onItemChangedListener != null) {            int size = mItemList.size();            if (size > index) {                ImageView view = mItemList.get(index);                Integer tag = index;                recoverBottomBar();                view.setEnabled(false);                if (Constant.TAG_NEWS == (Integer) view.getTag()) {                    view.setImageResource(R.drawable.ic_tab_find_pressed);                } else if (Constant.TAG_DATE == (Integer) view.getTag()) {                    view.setImageResource(R.drawable.ic_tab_date_pressed);                } else if (Constant.TAG_PERSON == (Integer) view.getTag()) {                    view.setImageResource(R.drawable.ic_tab_me_pressed);                }                lastButton = index;                mSelectedState = index;            }            onItemChangedListener.onItemChanged(index);        }    }
// FragmentPagerAdapter中的方法@Override        public Fragment getItem(int position) {            switch (position) {            case INDEX_NEWS:                mFragment = new NewsFragment();                break;            case INDEX_DATE:                mFragment = new DateFragment();                break;            case INDEX_MY:                mFragment = new PersonCenterFragment();                break;            }            return mFragment;        }
// onChangeListener中的方法@Override        public void onPageSelected(int position) {            // mSimpleIndicatorView.onPageSelected(position);            mCurrentIndex = position;            mBottomBar.setSelectedState(position);            switch (position) {            case INDEX_NEWS:                mHeaderView.setHeaderTitle(R.string.title_feed);                break;            case INDEX_DATE:                mHeaderView.setHeaderTitle(R.string.title_social);                break;            case INDEX_MY:                mHeaderView.setHeaderTitle(R.string.title_person_center);                break;            default:                break;            }        }
0 0