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="55dp"
  6     android:background="@drawable/bottom_bar"
  7     android:orientation="horizontal" >
  9     <LinearLayout
 10         android:id="@+id/id_tab_weixin"
 11         android:layout_width="0dp"
 12         android:layout_height="fill_parent"
 13         android:layout_weight="1"
 14         android:gravity="center"
 15         android:orientation="vertical" >
 17         <ImageButton
 18             android:id="@+id/id_tab_weixin_img"
 19             android:layout_width="wrap_content"
 20             android:layout_height="wrap_content"
 21             android:background="#00000000"
 22             android:clickable="false"
 23             android:src="@drawable/tab_weixin_pressed" />
 25         <TextView
 26             android:layout_width="wrap_content"
 27             android:layout_height="wrap_content"
 28             android:text="微信"
 29             android:textColor="#ffffff" />
 30     </LinearLayout>
 31
 32     <LinearLayout
 33         android:id="@+id/id_tab_frd"
 34         android:layout_width="0dp"
 35         android:layout_height="fill_parent"
 36         android:layout_weight="1"
 37         android:gravity="center"
 38         android:orientation="vertical" >
 40         <ImageButton
 41             android:id="@+id/id_tab_frd_img"
 42             android:layout_width="wrap_content"
 43             android:layout_height="wrap_content"
 44             android:background="#00000000"
 45             android:clickable="false"
 46             android:src="@drawable/tab_find_frd_normal" />
 48         <TextView
 49             android:layout_width="wrap_content"
 50             android:layout_height="wrap_content"
 51             android:text="朋友"
 52             android:textColor="#ffffff" />
 53     </LinearLayout>
 54
 55     <LinearLayout
 56         android:id="@+id/id_tab_address"
 57         android:layout_width="0dp"
 58         android:layout_height="fill_parent"
 59         android:layout_weight="1"
 60         android:gravity="center"
 61         android:orientation="vertical" >
 63         <ImageButton
 64             android:id="@+id/id_tab_address_img"
 65             android:layout_width="wrap_content"
 66             android:layout_height="wrap_content"
 67             android:background="#00000000"
 68             android:clickable="false"
 69             android:src="@drawable/tab_address_normal" />
 71         <TextView
 72             android:layout_width="wrap_content"
 73             android:layout_height="wrap_content"
 74             android:text="通讯录"
 75             android:textColor="#ffffff" />
 76     </LinearLayout>
 77
 78     <LinearLayout
 79         android:id="@+id/id_tab_settings"
 80         android:layout_width="0dp"
 81         android:layout_height="fill_parent"
 82         android:layout_weight="1"
 83         android:gravity="center"
 84         android:orientation="vertical" >
 86         <ImageButton
 87             android:id="@+id/id_tab_settings_img"
 88             android:layout_width="wrap_content"
 89             android:layout_height="wrap_content"
 90             android:background="#00000000"
 91             android:clickable="false"
 92             android:src="@drawable/tab_settings_normal" />
 94         <TextView
 95             android:layout_width="wrap_content"
 96             android:layout_height="wrap_content"
 97             android:text="设置"
 98             android:textColor="#ffffff" />
 99     </LinearLayout>
100
101 </LinearLayout>
 1 <LinearLayout
 2     xmlns:android="http://schemas.android.com/apk/res/android"
 3     xmlns:tools="http://schemas.android.com/tools"
 4     android:layout_width="match_parent"
 5     android:layout_height="match_parent"
 6     android:orientation="vertical" >
10     <android.support.v4.view.ViewPager
11         android:id="@+id/id_viewpager"
12         android:layout_width="fill_parent"
13         android:layout_height="0dp"
14         android:layout_weight="1" />
16     <include layout="@layout/bottom" />
18 </LinearLayout>
  1 package com.imooc.tab01;
  2
  3 import java.util.ArrayList;
  4 import java.util.List;
  5
  6 import android.app.Activity;
  7 import android.os.Bundle;
  8 import android.support.v4.view.PagerAdapter;
  9 import android.support.v4.view.ViewPager;
 10 import android.support.v4.view.ViewPager.OnPageChangeListener;
 11 import android.view.LayoutInflater;
 12 import android.view.View;
 13 import android.view.View.OnClickListener;
 14 import android.view.ViewGroup;
 15 import android.view.Window;
 16 import android.widget.ImageButton;
 17 import android.widget.LinearLayout;
 18
 19 public class MainActivity extends Activity implements OnClickListener {
 20
 21     private ViewPager mViewPager;
 22     private PagerAdapter mAdapter;
 23     private List<View> mViews = new ArrayList<View>();
 24     // TAB
 25     private LinearLayout mTabWeixin;
 26     private LinearLayout mTabFrd;
 27     private LinearLayout mTabAddress;
 28     private LinearLayout mTabSetting;
 29
 30     private ImageButton mWeixinImg;
 31     private ImageButton mFrdImg;
 32     private ImageButton mAddressImg;
 33     private ImageButton mSettingImg;
 34
 35     @Override
 36     protected void onCreate(Bundle savedInstanceState) {
 37         super.onCreate(savedInstanceState);
 38         requestWindowFeature(Window.FEATURE_NO_TITLE);
 39         setContentView(R.layout.activity_main);
 40
 41         initView();
 42
 43         initEvents();
 44     }
 45
 46     private void initView() {
 47         mViewPager = (ViewPager) findViewById(R.id.id_viewpager);
 48         // tabs
 49         mTabWeixin = (LinearLayout) findViewById(R.id.id_tab_weixin);
 50         mTabFrd = (LinearLayout) findViewById(R.id.id_tab_frd);
 51         mTabAddress = (LinearLayout) findViewById(R.id.id_tab_address);
 52         mTabSetting = (LinearLayout) findViewById(R.id.id_tab_settings);
 53         // ImageButton
 54         mWeixinImg = (ImageButton) findViewById(R.id.id_tab_weixin_img);
 55         mFrdImg = (ImageButton) findViewById(R.id.id_tab_frd_img);
 56         mAddressImg = (ImageButton) findViewById(R.id.id_tab_address_img);
 57         mSettingImg = (ImageButton) findViewById(R.id.id_tab_settings_img);
 58
 59         LayoutInflater mInflater = LayoutInflater.from(this);
 60         View tab01 = mInflater.inflate(R.layout.tab01, null);
 61         View tab02 = mInflater.inflate(R.layout.tab02, null);
 62         View tab03 = mInflater.inflate(R.layout.tab03, null);
 63         View tab04 = mInflater.inflate(R.layout.tab04, null);
 64         mViews.add(tab01);
 65         mViews.add(tab02);
 66         mViews.add(tab03);
 67         mViews.add(tab04);
 68
 69         mAdapter = new PagerAdapter() {
 70
 71             @Override
 72             public void destroyItem(ViewGroup container, int position,
 73                     Object object) {
 74                 container.removeView(mViews.get(position));
 75             }
 76
 77             @Override
 78             public Object instantiateItem(ViewGroup container, int position) {
 79                 View view = mViews.get(position);
 80                 container.addView(view);
 81                 return view;
 82             }
 83
 84             @Override
 85             public boolean isViewFromObject(View arg0, Object arg1) {
 86                 return arg0 == arg1;
 87             }
 88
 89             @Override
 90             public int getCount() {
 91                 return mViews.size();
 92             }
 93         };
 94
 95         mViewPager.setAdapter(mAdapter);
 96     }
 97
 98     private void initEvents() {
 99         mTabWeixin.setOnClickListener(this);
100         mTabFrd.setOnClickListener(this);
101         mTabAddress.setOnClickListener(this);
102         mTabSetting.setOnClickListener(this);
103
104         mViewPager.setOnPageChangeListener(new OnPageChangeListener() {
105
106             @Override
107             public void onPageSelected(int arg0) {
108                 int currentItem = mViewPager.getCurrentItem();
109                 resetImg();   // 将所有的图片切换为暗色的
110
111                 switch (currentItem) {
112                 case 0:
113                     mWeixinImg.setImageResource(R.drawable.tab_weixin_pressed);
114                     break;
115                 case 1:
116                     mFrdImg.setImageResource(R.drawable.tab_find_frd_pressed);
117                     break;
118                 case 2:
119                     mAddressImg
120                             .setImageResource(R.drawable.tab_address_pressed);
121                     break;
122                 case 3:
123                     mSettingImg
124                             .setImageResource(R.drawable.tab_settings_pressed);
125                     break;
126                 }
127             }
128
129             @Override
130             public void onPageScrolled(int arg0, float arg1, int arg2) { }
131
132             @Override
133             public void onPageScrollStateChanged(int arg0) { }
134         });
135     }
136
137     @Override
138     public void onClick(View v) {
139         resetImg();  // 将所有的图片切换为暗色的
140
141         switch (v.getId()) {
142         case R.id.id_tab_weixin:
143             mViewPager.setCurrentItem(0);
144             mWeixinImg.setImageResource(R.drawable.tab_weixin_pressed);
145             break;
146         case R.id.id_tab_frd:
147             mViewPager.setCurrentItem(1);
148             mFrdImg.setImageResource(R.drawable.tab_find_frd_pressed);
149             break;
150         case R.id.id_tab_address:
151             mViewPager.setCurrentItem(2);
152             mAddressImg.setImageResource(R.drawable.tab_address_pressed);
153             break;
154         case R.id.id_tab_settings:
155             mViewPager.setCurrentItem(3);
156             mSettingImg.setImageResource(R.drawable.tab_settings_pressed);
157             break;
158
159         default:
160             break;
161         }
162     }
163
164     /**
165      * 将所有的图片切换为暗色的
166      */
167     private void resetImg() {
168         mWeixinImg.setImageResource(R.drawable.tab_weixin_normal);
169         mFrdImg.setImageResource(R.drawable.tab_find_frd_normal);
170         mAddressImg.setImageResource(R.drawable.tab_address_normal);
171         mSettingImg.setImageResource(R.drawable.tab_settings_normal);
172     }
173
174 }

完整DEMO下载地址:http://download.csdn.net/detail/androidsj/9354277

时间: 2024-08-03 05:27:55

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

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

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

【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

【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实现方法(三)

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.

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

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

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

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

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

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

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

学习内容来自“慕课网” 网站上一共有4种方法来实现APP主界面的TAB方法 这里学习第一种 ViewPager实现Tab 布局文件有7个, 主界面acitivity.layout 1 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 2 xmlns:tools="http://schemas.android.com/tools" 3 android:layout_w

Android Tab类型主界面 Fragment+TabPageIndicator+ViewPager

文章地址: Android项目Tab类型主界面大总结 Fragment+TabPageIndicator+ViewPager 1.使用ViewPager + PagerAdapter 每个页面的内容都在一个Activity中,维护起来会比较麻烦 2.FragmentManager + Fragment 每个页面的内容分开,但是只能点击按钮换页 3.ViewPager + FragmentPagerAdapter 综合前两种方式,比较好 4.TabPageIndicator + ViewPager