当前位置: 首页 > news >正文

东莞市人才招聘网官网seo培训学院

东莞市人才招聘网官网,seo培训学院,蓟门桥网站建设,网站制作熊猫建站Android现在实现Tab类型的界面方式越来越多#xff0c;今天就把常见的实现方式给大家来个总结。目前写了#xff1a;1、传统的ViewPager实现2、FragmentManagerFragment实现3、ViewPagerFragmentPagerAdapter实现4、TabPageIndicatorViewPagerFragmentPagerAdapter1、传统的V…Android现在实现Tab类型的界面方式越来越多今天就把常见的实现方式给大家来个总结。目前写了1、传统的ViewPager实现2、FragmentManagerFragment实现3、ViewPagerFragmentPagerAdapter实现4、TabPageIndicatorViewPagerFragmentPagerAdapter1、传统的ViewPager实现主要就是ViewPagerViewAdapter这个还是比较常见的就不多说了效果图代码package com.example.mainframework02;import javautilArrayList;import javautilList;import androidappActivity;import androidosBundle;import androidsupportvviewPagerAdapter;import androidsupportvviewViewPager;import androidsupportvviewViewPagerOnPageChangeListener;import androidviewLayoutInflater;import androidviewView;import androidviewViewGroup;import androidwidgetImageButton;import androidwidgetImageView;import androidwidgetLinearLayout;public class TraditionalViewPagerAcvitity extends Activity{/*** ViewPager*/private ViewPager mViewPager;/*** ViewPager的适配器*/private PagerAdapter mAdapter;private List mViews;private LayoutInflater mInflater;private int currentIndex;/*** 底部四个按钮*/private LinearLayout mTabBtnWeixin;private LinearLayout mTabBtnFrd;private LinearLayout mTabBtnAddress;private LinearLayout mTabBtnSettings;Overrideprotected void onCreate(Bundle savedInstanceState){superonCreate(savedInstanceState);setContentView(Rlayoutactivity_main);mInflater LayoutInflaterfrom(this);mViewPager (ViewPager) findViewById(Ridid_viewpager);/*** 初始化View*/initView();mViewPagersetAdapter(mAdapter);mViewPagersetOnPageChangeListener(new OnPageChangeListener(){Overridepublic void onPageSelected(int position){resetTabBtn();switch (position){case 0:((ImageButton) mTabBtnWeixinfindViewById(Ridbtn_tab_bottom_weixin))setImageResource(Rdrawabletab_weixin_pressed);break;case 1:((ImageButton) mTabBtnFrdfindViewById(Ridbtn_tab_bottom_friend))setImageResource(Rdrawabletab_find_frd_pressed);break;case 2:((ImageButton) mTabBtnAddressfindViewById(Ridbtn_tab_bottom_contact))setImageResource(Rdrawabletab_address_pressed);break;case 3:((ImageButton) mTabBtnSettingsfindViewById(Ridbtn_tab_bottom_setting))setImageResource(Rdrawabletab_settings_pressed);break;}currentIndex position;}Overridepublic void onPageScrolled(int arg0, float arg1, int arg2){}Overridepublic void onPageScrollStateChanged(int arg0){}});}protected void resetTabBtn(){((ImageButton) mTabBtnWeixinfindViewById(Ridbtn_tab_bottom_weixin))setImageResource(Rdrawabletab_weixin_normal);((ImageButton) mTabBtnFrdfindViewById(Ridbtn_tab_bottom_friend))setImageResource(Rdrawabletab_find_frd_normal);((ImageButton) mTabBtnAddressfindViewById(Ridbtn_tab_bottom_contact))setImageResource(Rdrawabletab_address_normal);((ImageButton) mTabBtnSettingsfindViewById(Ridbtn_tab_bottom_setting))setImageResource(Rdrawabletab_settings_normal);}private void initView(){mTabBtnWeixin (LinearLayout) findViewById(Ridid_tab_bottom_weixin);mTabBtnFrd (LinearLayout) findViewById(Ridid_tab_bottom_friend);mTabBtnAddress (LinearLayout) findViewById(Ridid_tab_bottom_contact);mTabBtnSettings (LinearLayout) findViewById(Ridid_tab_bottom_setting);mViews new ArrayList();View first mInflaterinflate(Rlayoutmain_tab_01, null);View second mInflaterinflate(Rlayoutmain_tab_02, null);View third mInflaterinflate(Rlayoutmain_tab_03, null);View fourth mInflaterinflate(Rlayoutmain_tab_04, null);mViewsadd(first);mViewsadd(second);mViewsadd(third);mViewsadd(fourth);mAdapter new PagerAdapter(){Overridepublic void destroyItem(ViewGroup container, int position, Object object){containerremoveView(mViewsget(position));}Overridepublic Object instantiateItem(ViewGroup container, int position){View view mViewsget(position);containeraddView(view);return view;}Overridepublic boolean isViewFromObject(View arg0, Object arg1){return arg0 arg1;}Overridepublic int getCount(){return mViewssize();}};}}评价所有的代码都集中在一个Activity中显得代码比较乱。2、FragmentManagerFragment实现主要利用了Fragment在主内容界面对Fragment的add,hide等事务操作。效果图代码主Activitypackage com.example.mainframework02.fragment;import androidannotationSuppressLint;import androidappActivity;import androidappFragmentManager;import androidappFragmentTransaction;import androidosBundle;import androidviewView;import androidviewViewOnClickListener;import androidwidgetImageButton;import androidwidgetLinearLayout;import comexamplemainframeworkR;public class FragmentMainActivity extends Activity implements OnClickListener{private MainTab02 mTab02;private MainTab01 mTab01;private MainTab03 mTab03;private MainTab04 mTab04;/*** 底部四个按钮*/private LinearLayout mTabBtnWeixin;private LinearLayout mTabBtnFrd;private LinearLayout mTabBtnAddress;private LinearLayout mTabBtnSettings;/*** 用于对Fragment进行管理*/private FragmentManager fragmentManager;SuppressLint(NewApi)Overrideprotected void onCreate(Bundle savedInstanceState){superonCreate(savedInstanceState);setContentView(Rlayoutfragment_main);initViews();fragmentManager getFragmentManager();setTabSelection(0);}private void initViews(){mTabBtnWeixin (LinearLayout) findViewById(Ridid_tab_bottom_weixin);mTabBtnFrd (LinearLayout) findViewById(Ridid_tab_bottom_friend);mTabBtnAddress (LinearLayout) findViewById(Ridid_tab_bottom_contact);mTabBtnSettings (LinearLayout) findViewById(Ridid_tab_bottom_setting);mTabBtnWeixinsetOnClickListener(this);mTabBtnFrdsetOnClickListener(this);mTabBtnAddresssetOnClickListener(this);mTabBtnSettingssetOnClickListener(this);}Overridepublic void onClick(View v){switch (vgetId()){case Ridid_tab_bottom_weixin:setTabSelection(0);break;case Ridid_tab_bottom_friend:setTabSelection(1);break;case Ridid_tab_bottom_contact:setTabSelection(2);break;case Ridid_tab_bottom_setting:setTabSelection(3);break;default:break;}}/*** 根据传入的index参数来设置选中的tab页。**/SuppressLint(NewApi)private void setTabSelection(int index){// 重置按钮resetBtn();// 开启一个Fragment事务FragmentTransaction transaction fragmentManagerbeginTransaction();// 先隐藏掉所有的Fragment以防止有多个Fragment显示在界面上的情况hideFragments(transaction);switch (index){case 0:// 当点击了消息tab时改变控件的图片和文字颜色((ImageButton) mTabBtnWeixinfindViewById(Ridbtn_tab_bottom_weixin))setImageResource(Rdrawabletab_weixin_pressed);if (mTab01 null){// 如果MessageFragment为空则创建一个并添加到界面上mTab01 new MainTab01();transactionadd(Ridid_content, mTab01);} else{// 如果MessageFragment不为空则直接将它显示出来transactionshow(mTab01);}break;case 1:// 当点击了消息tab时改变控件的图片和文字颜色((ImageButton) mTabBtnFrdfindViewById(Ridbtn_tab_bottom_friend))setImageResource(Rdrawabletab_find_frd_pressed);if (mTab02 null){// 如果MessageFragment为空则创建一个并添加到界面上mTab02 new MainTab02();transactionadd(Ridid_content, mTab02);} else{// 如果MessageFragment不为空则直接将它显示出来transactionshow(mTab02);}break;case 2:// 当点击了动态tab时改变控件的图片和文字颜色((ImageButton) mTabBtnAddressfindViewById(Ridbtn_tab_bottom_contact))setImageResource(Rdrawabletab_address_pressed);if (mTab03 null){// 如果NewsFragment为空则创建一个并添加到界面上mTab03 new MainTab03();transactionadd(Ridid_content, mTab03);} else{// 如果NewsFragment不为空则直接将它显示出来transactionshow(mTab03);}break;case 3:// 当点击了设置tab时改变控件的图片和文字颜色((ImageButton) mTabBtnSettingsfindViewById(Ridbtn_tab_bottom_setting))setImageResource(Rdrawabletab_settings_pressed);if (mTab04 null){// 如果SettingFragment为空则创建一个并添加到界面上mTab04 new MainTab04();transactionadd(Ridid_content, mTab04);} else{// 如果SettingFragment不为空则直接将它显示出来transactionshow(mTab04);}break;}transactioncommit();}/*** 清除掉所有的选中状态。*/private void resetBtn(){((ImageButton) mTabBtnWeixinfindViewById(Ridbtn_tab_bottom_weixin))setImageResource(Rdrawabletab_weixin_normal);((ImageButton) mTabBtnFrdfindViewById(Ridbtn_tab_bottom_friend))setImageResource(Rdrawabletab_find_frd_normal);((ImageButton) mTabBtnAddressfindViewById(Ridbtn_tab_bottom_contact))setImageResource(Rdrawabletab_address_normal);((ImageButton) mTabBtnSettingsfindViewById(Ridbtn_tab_bottom_setting))setImageResource(Rdrawabletab_settings_normal);}/*** 将所有的Fragment都置为隐藏状态。** param transaction* 用于对Fragment执行操作的事务*/SuppressLint(NewApi)private void hideFragments(FragmentTransaction transaction){if (mTab01 ! null){transactionhide(mTab01);}if (mTab02 ! null){transactionhide(mTab02);}if (mTab03 ! null){transactionhide(mTab03);}if (mTab04 ! null){transactionhide(mTab04);}}}各个TabFragment一共四个TabFragment下面贴出两个基本都一样。package com.example.mainframework02.fragment;import androidannotationSuppressLint;import androidappFragment;import androidosBundle;import androidviewLayoutInflater;import androidviewView;import androidviewViewGroup;SuppressLint(NewApi)public class MainTab01 extends Fragment{Overridepublic View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){return inflaterinflate(comexamplemainframeworkRlayoutmain_tab_01, container, false);}}package com.example.mainframework02.fragment;import androidannotationSuppressLint;import androidappFragment;import androidosBundle;import androidviewLayoutInflater;import androidviewView;import androidviewViewGroup;import comexamplemainframeworkR;SuppressLint(NewApi)public class MainTab02 extends Fragment{public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){return inflaterinflate(Rlayoutmain_tab_02, container, false);}}评价每个Fragment中的控件的处理都是独立到各自的类中相对来说主Activity简化了不少可惜没有左右滑动的效果了。3、ViewPagerFragment实现主要通过ViewPager和FragmentPagerAdapter一起来实现。效果图代码主Activitypackage com.example.mainframework03;import javautilArrayList;import javautilList;import androidosBundle;import androidsupportvappFragment;import androidsupportvappFragmentActivity;import androidsupportvappFragmentPagerAdapter;import androidsupportvviewViewPager;import androidsupportvviewViewPagerOnPageChangeListener;import androidwidgetImageButton;import androidwidgetLinearLayout;public class MainActivity extends FragmentActivity{private ViewPager mViewPager;private FragmentPagerAdapter mAdapter;private List mFragments new ArrayList();/*** 底部四个按钮*/private LinearLayout mTabBtnWeixin;private LinearLayout mTabBtnFrd;private LinearLayout mTabBtnAddress;private LinearLayout mTabBtnSettings;Overrideprotected void onCreate(Bundle savedInstanceState){superonCreate(savedInstanceState);setContentView(Rlayoutactivity_main);mViewPager (ViewPager) findViewById(Ridid_viewpager);initView();mAdapter new FragmentPagerAdapter(getSupportFragmentManager()){Overridepublic int getCount(){return mFragmentssize();}Overridepublic Fragment getItem(int arg0){return mFragmentsget(arg0);}};mViewPagersetAdapter(mAdapter);mViewPagersetOnPageChangeListener(new OnPageChangeListener(){private int currentIndex;Overridepublic void onPageSelected(int position){resetTabBtn();switch (position){case 0:((ImageButton) mTabBtnWeixinfindViewById(Ridbtn_tab_bottom_weixin))setImageResource(Rdrawabletab_weixin_pressed);break;case 1:((ImageButton) mTabBtnFrdfindViewById(Ridbtn_tab_bottom_friend))setImageResource(Rdrawabletab_find_frd_pressed);break;case 2:((ImageButton) mTabBtnAddressfindViewById(Ridbtn_tab_bottom_contact))setImageResource(Rdrawabletab_address_pressed);break;case 3:((ImageButton) mTabBtnSettingsfindViewById(Ridbtn_tab_bottom_setting))setImageResource(Rdrawabletab_settings_pressed);break;}currentIndex position;}Overridepublic void onPageScrolled(int arg0, float arg1, int arg2){}Overridepublic void onPageScrollStateChanged(int arg0){}});}protected void resetTabBtn(){((ImageButton) mTabBtnWeixinfindViewById(Ridbtn_tab_bottom_weixin))setImageResource(Rdrawabletab_weixin_normal);((ImageButton) mTabBtnFrdfindViewById(Ridbtn_tab_bottom_friend))setImageResource(Rdrawabletab_find_frd_normal);((ImageButton) mTabBtnAddressfindViewById(Ridbtn_tab_bottom_contact))setImageResource(Rdrawabletab_address_normal);((ImageButton) mTabBtnSettingsfindViewById(Ridbtn_tab_bottom_setting))setImageResource(Rdrawabletab_settings_normal);}private void initView(){mTabBtnWeixin (LinearLayout) findViewById(Ridid_tab_bottom_weixin);mTabBtnFrd (LinearLayout) findViewById(Ridid_tab_bottom_friend);mTabBtnAddress (LinearLayout) findViewById(Ridid_tab_bottom_contact);mTabBtnSettings (LinearLayout) findViewById(Ridid_tab_bottom_setting);MainTab01 tab01 new MainTab01();MainTab02 tab02 new MainTab02();MainTab03 tab03 new MainTab03();MainTab04 tab04 new MainTab04();mFragmentsadd(tab01);mFragmentsadd(tab02);mFragmentsadd(tab03);mFragmentsadd(tab04);}}还有4个TabFragment下面贴一个四个基本一样package com.example.mainframework03;import androidosBundle;import androidsupportvappFragment;import androidviewLayoutInflater;import androidviewView;import androidviewViewGroup;public class MainTab01 extends Fragment{Overridepublic View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){return inflaterinflate(Rlayoutmain_tab_01, container, false);}}评价实现效果和第一种效果一模一样每个Fragment独自处理自己内部的逻辑代码整洁很多并且支持左右滑动。感觉是第一种和第二种的结合版本。4、TabPageIndicatorViewPagerFragmentPagerAdapter实现方式和3是一致的但是使用了TabPageIndicator作为tab的指示器效果还是不错的这个之前写过就不再贴代码了。效果图好了就总结了这么多肯定还有很多别的实现方式大家可以留言有时间会继续完善这篇总结的。第一种和第二种的源码demo下载第三种方式的源码demo下载以上就是本文的全部内容希望对大家的学习有所帮助也希望大家多多支持脚本之家。
http://www.zqtcl.cn/news/701041/

相关文章:

  • 建立音乐网站wordpress 安装文件名
  • 龙华营销型网站制作企业网站模板源代码下载
  • 山东城乡建设厅网站哪有做网站公司
  • 建设网站是否等于开展网络营销用wordPress搭建图片库
  • 泗阳做网站的外贸公司网站搭建
  • 做汽车保养的网站上商业招商网站
  • 如何进网站帝国cms调用网站名称
  • 瑞金网站建设推广合肥瑶海区地图
  • 静态网站建设国内免费域名
  • 网站建设设计公司电子商务网站开发与管理
  • 手机网站制作设计做国际网站有什么需要注意的
  • 机构网站源码如何分析一个网站
  • 免费营销软件网站网站建设与规划实训总结
  • 网站深度功能建筑人才网市场
  • 学校网站建设的意义和应用服务平台管理系统
  • 网站内容规划要包括什么内容wordpress5.2 php版本
  • 山西建设部网站超值的镇江网站建设
  • 做淘宝要网站网站推广外链怎么做
  • 深圳做网站推广哪家好自建网站优缺点
  • 网站建设询价函什么网站可以做会计题目
  • 电脑网站视频怎么下载珠海免费网站制作
  • wordpress menu icon咸阳seo
  • php制作网站网站开发与客户沟通
  • 百度网站建设平台微盟微商城官网
  • 三明网站seo上海中学分数线
  • 青岛谷歌网站建设网站建站公司排名
  • 成都旅游网站建设规划windows优化大师官方
  • 福永网站建设公司哪家好财务公司承兑汇票
  • 青岛快速建站模板制作公司网页什么价位
  • 网站建设公司的经营范围wordpress设置文本编辑器