【IMOOC学习笔记】多种多样的App主界面Tab实现方法(三)

Fragment+ViewPager

与之前直接用ViewPager不同的是,数组里面放的不再是View,而是Fraagment;

使用FragmentPagerAdapter

xml文件没有变化,只有代码发生变化

  1 package com.imooc.tab03;
  2
  3 import java.util.ArrayList;
  4 import java.util.List;
  5
  6 import android.os.Bundle;
  7 import android.support.v4.app.Fragment;
  8 import android.support.v4.app.FragmentActivity;
  9 import android.support.v4.app.FragmentPagerAdapter;
 10 import android.support.v4.view.ViewPager;
 11 import android.support.v4.view.ViewPager.OnPageChangeListener;
 12 import android.view.View;
 13 import android.view.View.OnClickListener;
 14 import android.view.Window;
 15 import android.widget.ImageButton;
 16 import android.widget.LinearLayout;
 17
 18 public class MainActivity extends FragmentActivity implements OnClickListener {
 19     private ViewPager mViewPager;
 20     private FragmentPagerAdapter mAdapter;
 21     private List<Fragment> mFragments;
 22
 23     private LinearLayout mTabWeixin;
 24     private LinearLayout mTabFrd;
 25     private LinearLayout mTabAddress;
 26     private LinearLayout mTabSettings;
 27
 28     private ImageButton mImgWeixin;
 29     private ImageButton mImgFrd;
 30     private ImageButton mImgAddress;
 31     private ImageButton mImgSettings;
 32
 33     @Override
 34     protected void onCreate(Bundle savedInstanceState) {
 35         super.onCreate(savedInstanceState);
 36         requestWindowFeature(Window.FEATURE_NO_TITLE);
 37         setContentView(R.layout.activity_main);
 38
 39         initView();
 40         initEvent();
 41
 42         setSelect(1);
 43     }
 44
 45     private void initEvent() {
 46         mTabWeixin.setOnClickListener(this);
 47         mTabFrd.setOnClickListener(this);
 48         mTabAddress.setOnClickListener(this);
 49         mTabSettings.setOnClickListener(this);
 50     }
 51
 52     private void initView() {
 53         mViewPager = (ViewPager) findViewById(R.id.id_viewpager);
 54
 55         mTabWeixin = (LinearLayout) findViewById(R.id.id_tab_weixin);
 56         mTabFrd = (LinearLayout) findViewById(R.id.id_tab_frd);
 57         mTabAddress = (LinearLayout) findViewById(R.id.id_tab_address);
 58         mTabSettings = (LinearLayout) findViewById(R.id.id_tab_settings);
 59
 60         mImgWeixin = (ImageButton) findViewById(R.id.id_tab_weixin_img);
 61         mImgFrd = (ImageButton) findViewById(R.id.id_tab_frd_img);
 62         mImgAddress = (ImageButton) findViewById(R.id.id_tab_address_img);
 63         mImgSettings = (ImageButton) findViewById(R.id.id_tab_settings_img);
 64
 65         mFragments = new ArrayList<Fragment>();
 66         Fragment mTab01 = new WeixinFragment();
 67         Fragment mTab02 = new FrdFragment();
 68         Fragment mTab03 = new AddressFragment();
 69         Fragment mTab04 = new SettingFragment();
 70         mFragments.add(mTab01);
 71         mFragments.add(mTab02);
 72         mFragments.add(mTab03);
 73         mFragments.add(mTab04);
 74
 75         mAdapter = new FragmentPagerAdapter(getSupportFragmentManager()) {
 76
 77             @Override
 78             public int getCount() {
 79                 return mFragments.size();
 80             }
 81
 82             @Override
 83             public Fragment getItem(int arg0) {
 84                 return mFragments.get(arg0);
 85             }
 86         };
 87         mViewPager.setAdapter(mAdapter);
 88
 89         mViewPager.setOnPageChangeListener(new OnPageChangeListener() {
 90
 91             @Override
 92             public void onPageSelected(int arg0) {
 93                 int currentItem = mViewPager.getCurrentItem();
 94                 setTab(currentItem);
 95             }
 96
 97             @Override
 98             public void onPageScrolled(int arg0, float arg1, int arg2) {
 99                 // TODO Auto-generated method stub
100
101             }
102
103             @Override
104             public void onPageScrollStateChanged(int arg0) {
105                 // TODO Auto-generated method stub
106
107             }
108         });
109     }
110
111     @Override
112     public void onClick(View v) {
113         switch (v.getId()) {
114         case R.id.id_tab_weixin:
115             setSelect(0);
116             break;
117         case R.id.id_tab_frd:
118             setSelect(1);
119             break;
120         case R.id.id_tab_address:
121             setSelect(2);
122             break;
123         case R.id.id_tab_settings:
124             setSelect(3);
125             break;
126
127         default:
128             break;
129         }
130     }
131
132     private void setSelect(int i) {
133         setTab(i);
134         mViewPager.setCurrentItem(i);
135     }
136
137     private void setTab(int i) {
138         resetImgs();
139         switch (i) {
140         case 0:
141             mImgWeixin.setImageResource(R.drawable.tab_weixin_pressed);
142             break;
143         case 1:
144             mImgFrd.setImageResource(R.drawable.tab_find_frd_pressed);
145             break;
146         case 2:
147             mImgAddress.setImageResource(R.drawable.tab_address_pressed);
148             break;
149         case 3:
150             mImgSettings.setImageResource(R.drawable.tab_settings_pressed);
151             break;
152         }
153     }
154
155     private void resetImgs() {
156         mImgWeixin.setImageResource(R.drawable.tab_weixin_normal);
157         mImgFrd.setImageResource(R.drawable.tab_find_frd_normal);
158         mImgAddress.setImageResource(R.drawable.tab_address_normal);
159         mImgSettings.setImageResource(R.drawable.tab_settings_normal);
160     }
161
162 }
时间: 2024-10-23 06:16:13

【IMOOC学习笔记】多种多样的App主界面Tab实现方法(三)的相关文章

多种多样的App主界面Tab实现方法

看了一下App主界面Tab实现方法,总结一下: 再看看实现的效果图:                            第一种:ViewPager实现Tab: 思路:1.布局方面实现顶层和底层布局,中间是ViewPager实现的.中间是四个布局实现的,List<View>                 2.实现:setOnPageChangeListener内部类                3.需要一个适配器:PagerAdapter 源代码如下: <span style=&q

【IMOOC学习笔记】多种多样的App主界面Tab实现方法(二)

Fragment实现Tab 首先把activity_main.xml 文件中的ViewPager标签改成Fragment标签 1 <FrameLayout 2 android:id="@+id/id_content" 3 android:layout_width="fill_parent" 4 android:layout_height="0dp" 5 android:layout_weight="1" > 6 &

【IMOOC学习笔记】多种多样的App主界面Tab实现方法(一)

1.ViewPager实现Tab 首先实现底部和底部布局 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="4

66、多种多样的App主界面Tab(1)------ ViewPager实现Tab

1 <?xml version="1.0" encoding="utf-8"?> 2 <!-- bottom.xml --> 3 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 4 android:layout_width="match_parent" 5 android:layout_height=

App主界面Tab实现方法

ViewPager + FragmentPagerAdapter 这里模仿下微信APP界面的实现 国际惯例,先看下效果图:   activity_main.xml 布局文件: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools=&quo

Android学习系列(23)--App主界面实现

在上篇文章<Android学习系列(22)--App主界面比较>中我们浅略的分析了几个主界面布局,选了一个最大众化的经典布局.今天我们就这个经典布局,用代码具体的实现它. 1.预览图先看下最终的界面设计图:    上面顶部是一个9patch背景图片+标题文字:下面底部是5个tab标签,表示应用的5大模块.中间内容部分则是各个模块的具体内容,可以再分类,或者直接显示内容. 2.准备素材按照上篇文章的界面,我们需要事先提供两大方面的素材:顶部+底部.顶部的素材非常简单,最重要的是背景(9patch

安卓开发_慕课网_Fragment实现Tab(App主界面)

学习内容来自“慕课网” 这里用Fragment来实现APP主界面 思路: 底部横向排列4个LinearLayout,每个LinearLayout包含一个图片按钮和一个文字 1.默认显示第一个功能(微信)的图标为亮,其他三个为暗 2.点击相应的按钮,首先将所有的图标变暗,接着隐藏所有Fragment,再把点击的对应的Fragment显示出来,并把相应的图标显示亮 首先布局文件 activity_main.xml与ViewPager实现Tab的是不一样的 1 <LinearLayout xmlns:

学习tabhost 实现微博的主界面

2014-05-27 吴文付 微博的主界面还是很漂亮的,我们这里来熟悉下tabhost的使用, 网上资料很多,主要参考了:http://blog.csdn.net/shulianghan/article/details/18233209 写的很好. 我的主要工作就是看了该文章,写了一个演示.演示参考了 小巫微博的代码. 代码如下: package cn.wuwenfu.layoutdemo; /* * 2014-05-27 * 主界面的布局Ok * * */ import com.example

ScrollView + viewpager实现android的app主界面效果

ScrollView + viewpager实现android的app主界面效果 Android的主界面一般由两部分组成:导航栏,滑动的分屏(我自己这么叫的).其中滑动的分屏肯定是用的fragment,具体的承载的控件是viewpager.而导航分页栏用的控件就有很多了,tabhost,Scrollview或者自定义的都行. 个人认为tabhost和Scrollview都是比较好的,因为后期的可拓展性比较好,除非导航栏界面确实属于"自定义"范畴,基本上我们可以选择这两样就可以了. 其实