安卓开发_慕课网_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_width="match_parent"
 4     android:layout_height="match_parent"
 5     android:orientation="vertical"
 6      >
 7     <include layout="@layout/top"/>
 8
 9      <android.support.v4.view.ViewPager
10          android:id="@+id/id_viewpager"
11         android:layout_width="fill_parent"
12         android:layout_height="0dp"
13         android:layout_weight="1">
14
15     </android.support.v4.view.ViewPager>
16
17     <include layout="@layout/bottom"/>
18 </LinearLayout>
19     

activity_main.xml

头部部分top.xml

 1 <?xml version="1.0" encoding="utf-8"?>
 2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 3     android:layout_width="match_parent"
 4     android:background="@drawable/title_bar"
 5     android:layout_height="45dp"
 6     android:gravity="center"
 7     android:orientation="vertical" >
 8     <TextView
 9         android:layout_height="wrap_content"
10         android:layout_width="wrap_content"
11         android:layout_gravity="center"
12         android:text="微信"
13         android:textColor="#ffffff"
14         android:textSize="20sp"
15         android:textStyle="bold"
16
17         />
18
19 </LinearLayout>

top.xml

底部部分bottom.xml

 1 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 2     xmlns:tools="http://schemas.android.com/tools"
 3     android:layout_width="match_parent"
 4     android:layout_height="match_parent"
 5     android:orientation="vertical"
 6      >
 7     <include layout="@layout/top"/>
 8
 9      <android.support.v4.view.ViewPager
10          android:id="@+id/id_viewpager"
11         android:layout_width="fill_parent"
12         android:layout_height="0dp"
13         android:layout_weight="1">
14
15     </android.support.v4.view.ViewPager>
16
17     <include layout="@layout/bottom"/>
18 </LinearLayout>
19     

bottom.xml

还有4个对应功能的layout

 1 <?xml version="1.0" encoding="utf-8"?>
 2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 3     android:layout_width="match_parent"
 4     android:layout_height="match_parent"
 5     android:orientation="vertical" >
 6
 7     <TextView
 8         android:id="@+id/textView1"
 9         android:layout_width="wrap_content"
10         android:layout_height="wrap_content"
11         android:layout_gravity="center_horizontal"
12         android:text="微信"
13         android:textAppearance="?android:attr/textAppearanceMedium" />
14
15 </LinearLayout>

tab(相同的四个)

Mainactivity.java文件

  1 package com.example.viewpager_tab;
  2
  3 import java.util.ArrayList;
  4 import java.util.List;
  5
  6 import android.os.Bundle;
  7 import android.app.Activity;
  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.Menu;
 13 import android.view.View;
 14 import android.view.View.OnClickListener;
 15 import android.view.ViewGroup;
 16 import android.view.Window;
 17 import android.widget.Gallery.LayoutParams;
 18 import android.widget.ImageButton;
 19 import android.widget.LinearLayout;
 20
 21 public class MainActivity extends Activity implements OnClickListener{
 22
 23     private ViewPager mViewPager;
 24     private PagerAdapter mAdapter;
 25     private List<View> mviews = new ArrayList<View>();
 26
 27     //Tab
 28     private LinearLayout mTabweixin;
 29     private LinearLayout mTabset;
 30     private LinearLayout mTabfrd;
 31     private LinearLayout mTabadd;
 32
 33     private ImageButton mweixin_image;
 34     private ImageButton mfrd_image;
 35     private ImageButton madd_image;
 36     private ImageButton mset_image;
 37     @Override
 38     protected void onCreate(Bundle savedInstanceState) {
 39         super.onCreate(savedInstanceState);
 40         requestWindowFeature(Window.FEATURE_NO_TITLE);
 41         setContentView(R.layout.activity_main);
 42
 43
 44         initView(); //初始化
 45
 46         initEvent();//初始化事件
 47
 48     }
 49
 50         private void initEvent(){
 51             mTabweixin.setOnClickListener(this);
 52             mTabadd.setOnClickListener(this);
 53             mTabset.setOnClickListener(this);
 54             mTabfrd.setOnClickListener(this);
 55
 56             //设置view左右滑动的响应事件
 57             mViewPager.setOnPageChangeListener(new OnPageChangeListener() {
 58
 59                 @Override
 60                 public void onPageSelected(int arg0) {
 61                     // TODO Auto-generated method stub
 62                     int currentItem = mViewPager.getCurrentItem();
 63                     resgmit();
 64                     switch (currentItem) {
 65                     case 0:
 66                         mweixin_image.setImageResource(R.drawable.tab_weixin_pressed);
 67                         break;
 68                     case 1:
 69                         madd_image.setImageResource(R.drawable.tab_address_pressed);
 70                         break;
 71                     case 2:
 72                         mfrd_image.setImageResource(R.drawable.tab_find_frd_pressed);
 73                         break;
 74                     case 3:
 75                         mset_image.setImageResource(R.drawable.tab_settings_pressed);
 76                         break;
 77                     default:
 78                         break;
 79                     }
 80
 81                 }
 82
 83                 @Override
 84                 public void onPageScrolled(int arg0, float arg1, int arg2) {
 85                     // TODO Auto-generated method stub
 86
 87                 }
 88
 89                 @Override
 90                 public void onPageScrollStateChanged(int arg0) {
 91                     // TODO Auto-generated method stub
 92
 93                 }
 94             });
 95         }
 96
 97
 98         private void initView(){
 99             mViewPager = (ViewPager) findViewById(R.id.id_viewpager);
100             //layout
101             mTabadd = (LinearLayout) findViewById(R.id.id_tab_add);
102             mTabfrd = (LinearLayout) findViewById(R.id.id_tab_frd);
103             mTabset = (LinearLayout) findViewById(R.id.id_tab_set);
104             mTabweixin = (LinearLayout) findViewById(R.id.id_tab_weixin);
105
106             //imagebutton
107             mweixin_image = (ImageButton) findViewById(R.id.id_tab_weixin_image);
108             madd_image = (ImageButton) findViewById(R.id.id_tab_add_image);
109             mfrd_image = (ImageButton) findViewById(R.id.id_tab_frd_image);
110             mset_image = (ImageButton) findViewById(R.id.id_tab_set_image);
111
112             LayoutInflater mInflater = LayoutInflater.from(this);
113             View tab_1 = mInflater.inflate(R.layout.tab_1, null);
114             View tab_2 = mInflater.inflate(R.layout.tab_2, null);
115             View tab_3 = mInflater.inflate(R.layout.tab_3, null);
116             View tab_4 = mInflater.inflate(R.layout.tab_4, null);
117
118             mviews.add(tab_1);
119             mviews.add(tab_2);
120             mviews.add(tab_3);
121             mviews.add(tab_4);
122
123             mAdapter = new PagerAdapter() {
124
125                 @Override
126                 public void destroyItem(View container, int position,
127                         Object object) {
128                     // TODO Auto-generated method stub
129                     ((ViewPager) container).removeView(mviews.get(position));
130
131                 }
132
133                 @Override
134                 public Object instantiateItem(View container, int position) {
135                     // TODO Auto-generated method stub
136                     View view = mviews.get(position);
137                     ((ViewGroup) container).addView(view);
138                     return view;
139                 }
140
141                 @Override
142                 public boolean isViewFromObject(View arg0, Object arg1) {
143                     // TODO Auto-generated method stub
144                     return arg0 == arg1;
145                 }
146
147                 @Override
148                 public int getCount() {
149                     // TODO Auto-generated method stub
150                     return mviews.size();
151                 }
152             };
153
154             mViewPager.setAdapter(mAdapter);
155
156         }
157
158         @Override
159         public void onClick(View v) {
160             // TODO Auto-generated method stub
161
162             resgmit();
163
164             switch (v.getId()) {
165             case R.id.id_tab_weixin:
166                 mViewPager.setCurrentItem(0);
167                 mweixin_image.setImageResource(R.drawable.tab_weixin_pressed);
168                 break;
169             case R.id.id_tab_add:
170                 mViewPager.setCurrentItem(1);
171                 madd_image.setImageResource(R.drawable.tab_address_pressed);
172                 break;
173             case R.id.id_tab_frd:
174                 mViewPager.setCurrentItem(2);
175                 mfrd_image.setImageResource(R.drawable.tab_find_frd_pressed);
176                 break;
177             case R.id.id_tab_set:
178                 mViewPager.setCurrentItem(3);
179                 mset_image.setImageResource(R.drawable.tab_settings_pressed);
180                 break;
181
182             default:
183                 break;
184             }
185
186         }
187
188         //将所有的图片切换为暗色
189         private void resgmit() {
190             // TODO Auto-generated method stub
191             mweixin_image.setImageResource(R.drawable.tab_weixin_normal);
192             madd_image.setImageResource(R.drawable.tab_address_normal);
193             mfrd_image.setImageResource(R.drawable.tab_find_frd_normal);
194             mset_image.setImageResource(R.drawable.tab_settings_normal);
195
196         }
197
198 }

MainActivity.java

效果图:

时间: 2024-08-05 00:49:31

安卓开发_慕课网_ViewPager实现Tab(App主界面)的相关文章

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

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

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

学习内容来自“慕课网” ViewPager与FragmentPagerAdapter实现Tab 将这两种实现Tab的方法结合起来.效果就是可以拖动内容区域来改变相应的功能图标亮暗 思路: Fragment作为内容区域 点击功能按钮,想将所有的图标变为暗色图标,再调用相应的Fragment,并使对应的图标变亮 效果图: 布局文件部分 activity_main.xml 1 <LinearLayout xmlns:android="http://schemas.android.com/apk/

安卓开发_慕课网_ViewPager切换动画(3.0版本以上有效果)

学习内容来自“慕课网” 一般APP进去之后都会有几张图片来导航,这里就学习怎么在这张图片切换的时候添加切换动画效果 先看布局文件 activity_main.layout <?xml version="1.0" encoding="utf-8"?> <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_widt

安卓开发_慕课网_百度地图_添加覆盖物

学习内容来自“慕课网” 本片学习内容接自前四篇基础 安卓开发_慕课网_百度地图 安卓开发_慕课网_百度地图_实现定位 安卓开发_慕课网_百度地图_实现方向传感器 安卓开发_慕课网_百度地图_实现模式转换 请先学习前4篇再学习本篇,因为本篇在前四篇的基础上进行代码的编写 一.新建一个类用来存放数据(距离,点赞数,介绍图等信息) 1 package com.example.map; 2 3 import java.io.Serializable; 4 import java.util.ArrayLi

安卓开发_慕课网_百度地图_实现模式转换

学习内容来自“慕课网” 模式转换,即地图的普通模式,罗盘模式,跟随模式之间的转换 学习内容接自前三篇 安卓开发_慕课网_百度地图 安卓开发_慕课网_百度地图_实现定位 安卓开发_慕课网_百度地图_实现方向传感器 一.模式转换通过菜单按钮来控制 所以添加对应的菜单项(红色字体部分) 1 <menu xmlns:android="http://schemas.android.com/apk/res/android" > 2 3 <item 4 android:id=&qu

安卓开发_慕课网_百度地图_实现方向传感器

学习内容来自“慕课网” 这里学习百度地图方向传感器功能 就是当转动手机的时候,地图上显示个人所在位置的图标的箭头变动 学习接自前两篇 安卓开发_慕课网_百度地图 安卓开发_慕课网_百度地图_实现定位 思路: 传感器随着定位的开始而开启,随着定位的结束而结束 传感器获得位置的移动而更新方向 代码在前两篇的基础上修改 一.讲原本坐标的图标改成箭头图标 二.引入方向传感器 首先增添MainActivity.java中的自定义图标和方向传感器代码 看红色字体的部分 1 package com.examp

安卓开发_慕课网_百度地图_刮刮涂层效果

学习内容来自“慕课网” 很多电商APP中都有刮刮卡活动,刮开涂层,获取刮刮卡内部信息 原理图: 刮刮卡效果:通过画笔画笔来实现,黄色涂层,蓝色涂层,刮动则将两涂层共有的部分去掉,   就是DstOut对应的 效果 MainActivity.java 1 package com.example.gauguaka; 2 3 import android.os.Bundle; 4 import android.app.Activity; 5 import android.view.Menu; 6 7

安卓开发_慕课网_百度地图

学习内容来自“慕课网” 百度地图sdk下载 http://developer.baidu.com/ http://bbs.lbsyun.baidu.com/forum.php?mod=viewthread&tid=9554&extra=page%3D1 1.获取秘钥 应用名称随便写,应用类型:android sdk 这里有一个 安全码  百度给了提示:Android SDK安全码组成:数字签名+;+包名. 数字签名获取方法:点击菜单栏最后面的Window 里面的最后一个 Preferenc

安卓开发_慕课网_百度地图_实现定位

学习内容来自“慕课网” 在上一学习内容的基础上改进代码,需要学习定位功能的同学请先将我的上一篇百度地图基础的学习一下 http://www.cnblogs.com/xqxacm/p/4337054.html 第一次学习百度地图的定位功能,理解不深,相应注释都在代码中写出了 MainActivity.java 1 package com.example.map; 2 3 import com.baidu.location.BDLocation; 4 import com.baidu.locatio