多种多样的App主界面Tab实现方法(一):Viewpager
来源:互联网 发布:java 接口过滤器 编辑:程序博客网 时间:2024/05/16 13:05
最近看了慕课网hyman老师的课程,感觉收获很多,所以打算给大家“传销”一下。大家也可以看一下视频,讲得很好。视频连接http://www.imooc.com/learn/264
现在实现tab页面的方式有很多,我会整理一下常用的,把代码贴出来,大家参考一下。
使用ViewPager可以实现图片的滑动,那么肯定也能实现tab的效果。
top.xml
<?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="50dp" android:orientation="vertical" > <TextView android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center" android:background="@drawable/title_bar" android:text="@string/title" android:textColor="#ffffff" android:textSize="22sp"/>"</LinearLayout>
bottom.xml
<?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="55dp" android:background="@drawable/bottom_bar" android:orientation="horizontal"> <LinearLayout android:id="@+id/weixin_tab" android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="1" android:gravity="center" android:orientation="vertical"> <ImageButton android:id="@+id/weixin_img" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="#00000000" android:clickable="false" android:src="@drawable/tab_weixin_pressed"/> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/weixin" android:textColor="#ffffff"/> </LinearLayout> <LinearLayout android:id="@+id/frd_tab" android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="1" android:gravity="center" android:orientation="vertical"> <ImageButton android:id="@+id/frd_img" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="#00000000" android:clickable="false" android:src="@drawable/tab_find_frd_normal"/> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/frd" android:textColor="#ffffff"/> </LinearLayout> <LinearLayout android:id="@+id/add_tab" android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="1" android:gravity="center" android:orientation="vertical"> <ImageButton android:id="@+id/add_img" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="#00000000" android:clickable="false" android:src="@drawable/tab_address_normal"/> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/add" android:textColor="#ffffff"/> </LinearLayout> <LinearLayout android:id="@+id/setting_tab" android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="1" android:gravity="center" android:orientation="vertical"> <ImageButton android:id="@+id/setting_img" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="#00000000" android:clickable="false" android:src="@drawable/tab_settings_normal"/> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/setting" android:textColor="#ffffff"/> </LinearLayout></LinearLayout>
用四个LinearLayout作底部切换块,里面包含一个ImageButton和TextView。要把imagebutton的点击事件取消,否则会与linearlayout的点击事件冲突。
weixin_tab.xml 四个页面基本上是一样的,就以微信页面为例,其余页面可以下载源码查看。
<?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="match_parent" android:orientation="vertical" > <TextView android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center" android:text="@string/weixin"/></LinearLayout>
MainActivity.java
package com.example.tab;import java.util.ArrayList;import java.util.List;import android.app.Activity;import android.os.Bundle;import android.support.v4.view.PagerAdapter;import android.support.v4.view.ViewPager;import android.support.v4.view.ViewPager.OnPageChangeListener;import android.view.LayoutInflater;import android.view.Menu;import android.view.MenuItem;import android.view.View;import android.view.ViewGroup;import android.view.Window;import android.view.View.OnClickListener;import android.widget.ImageButton;import android.widget.LinearLayout;public class MainActivity extends Activity implements OnClickListener{ViewPager mViewPager;PagerAdapter mAdapter;List<View> mViews;LinearLayout weixin_tab;LinearLayout frd_tab;LinearLayout add_tab;LinearLayout setting_tab;ImageButton weixin_img;ImageButton frd_img;ImageButton add_img;ImageButton setting_img;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);requestWindowFeature(Window.FEATURE_NO_TITLE);setContentView(R.layout.activity_main);intViews();intEvents();}@SuppressWarnings("deprecation")private void intEvents() {weixin_tab.setOnClickListener(this);frd_tab.setOnClickListener(this);add_tab.setOnClickListener(this);setting_tab.setOnClickListener(this);mViewPager.setOnPageChangeListener(new OnPageChangeListener(){@Overridepublic void onPageScrollStateChanged(int arg0) {}@Overridepublic void onPageScrolled(int arg0, float arg1, int arg2) {}@Overridepublic void onPageSelected(int arg0) {resetImg();int currentItem = mViewPager.getCurrentItem();switch(currentItem){case 0:weixin_img.setImageResource(R.drawable.tab_weixin_pressed);break;case 1:frd_img.setImageResource(R.drawable.tab_find_frd_pressed);break;case 2:add_img.setImageResource(R.drawable.tab_address_pressed);break;case 3:setting_img.setImageResource(R.drawable.tab_settings_pressed);break;default: break;}}});}private void intViews() {mViewPager=(ViewPager) findViewById(R.id.id_viewpager);weixin_tab=(LinearLayout)findViewById(R.id.weixin_tab);frd_tab=(LinearLayout)findViewById(R.id.frd_tab);add_tab=(LinearLayout)findViewById(R.id.add_tab);setting_tab=(LinearLayout)findViewById(R.id.setting_tab);weixin_img=(ImageButton)findViewById(R.id.weixin_img);frd_img=(ImageButton)findViewById(R.id.frd_img);add_img=(ImageButton)findViewById(R.id.add_img);setting_img=(ImageButton)findViewById(R.id.setting_img);LayoutInflater inflater=LayoutInflater.from(this);View tab01=inflater.inflate(R.layout.weixin_tab,null);View tab02=inflater.inflate(R.layout.frd_tab,null);View tab03=inflater.inflate(R.layout.add_tab,null);View tab04=inflater.inflate(R.layout.setting_tab,null);mViews=new ArrayList<View>();mViews.add(tab01);mViews.add(tab02);mViews.add(tab03);mViews.add(tab04);mAdapter=new PagerAdapter(){@Overridepublic int getCount() {return mViews.size();}@Overridepublic boolean isViewFromObject(View arg0, Object arg1) {return arg0==arg1;}@Overridepublic Object instantiateItem(ViewGroup container, int position){View view = mViews.get(position); container.addView(view); return view;}@Override public void destroyItem(ViewGroup container, int position, Object object) { container.removeView(mViews.get(position)); }};mViewPager.setAdapter(mAdapter);}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {getMenuInflater().inflate(R.menu.main, menu);return true;}@Overridepublic boolean onOptionsItemSelected(MenuItem item) {int id = item.getItemId();if (id == R.id.action_settings) {return true;}return super.onOptionsItemSelected(item);}@Overridepublic void onClick(View v) {resetImg();switch(v.getId()){case R.id.weixin_tab:mViewPager.setCurrentItem(0);weixin_img.setImageResource(R.drawable.tab_weixin_pressed);break;case R.id.frd_tab:mViewPager.setCurrentItem(1);frd_img.setImageResource(R.drawable.tab_find_frd_pressed);break;case R.id.add_tab:mViewPager.setCurrentItem(2);add_img.setImageResource(R.drawable.tab_address_pressed);break;case R.id.setting_tab:mViewPager.setCurrentItem(3);setting_img.setImageResource(R.drawable.tab_settings_pressed);break;default: break;}}private void resetImg() {weixin_img.setImageResource(R.drawable.tab_weixin_normal);frd_img.setImageResource(R.drawable.tab_find_frd_normal);add_img.setImageResource(R.drawable.tab_address_normal);setting_img.setImageResource(R.drawable.tab_settings_normal);}}用LayoutInflater将weixin_tab等四个页面转化为view,再将各个view装进List<View>中,用list数据将适配器PagerAdapter初始化,适配器再将控件ViewPager初始化,然后就成像了。
源码下载:http://pan.baidu.com/s/1jGQySGe
提取码:xz3j
0 0
- 多种多样的App主界面Tab实现方法(一):Viewpager
- 多种多样的App主界面Tab实现方法(三):Fragment+ViewPager
- 多种多样的App主界面Tab实现方法——单独利用ViewPager实现Tab
- 多种多样的App主界面Tab实现方法——利用ViewPager+FragmentPagerAdapter实现Tab
- 多种多样的App主界面Tab实现方法——利用ViewPagerIndicator+ViewPager实现Tab
- 多种多样的App主界面Tab实现方法
- 多种多样的App主界面TAB实现方法
- 多种多样的App主界面Tab实现方法(四):ViewPagerIndicator实现tab功能
- 多种多样的App主界面Tab实现方法(导航贴)
- 多种多样的App主界面Tab实现方法(二):Fragment
- 多种多样的App主界面Tab实现方法——单独利用Fragment实现Tab
- 多种多样APP主界面Tab实现
- viewpager+FragmentAdapter实现App主界面Tab
- viewpager+tab 主界面的实现
- App主界面Tab实现方法
- App主界面Tab实现方法
- App主界面Tab四个实现方法
- 4种的App主界面Tab实现方法
- 即时通讯常用第三方库
- 属性动画中scale的时候设置旋转中心点
- JS技巧
- android基础之创建和解析xml
- 数据类型
- 多种多样的App主界面Tab实现方法(一):Viewpager
- 1074:ACM CLUB晚会
- Android四大组件之一ContentProvider
- vim复制、删除和粘贴一行
- C 预处理指令
- javax.net.ssl.SSLProtocolException:SSL handshake aborted
- 局域网内知道Mac地址查询对应IP
- python 文件操作
- cmd 执行java Class 文件