`

android ViewPager案例

 
阅读更多
ViewPager和PagerAdapter
package com.example.mainframework02;

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.View;
import android.view.ViewGroup;
import android.widget.ImageButton;
import android.widget.LinearLayout;

public class TraditionalViewPagerAcvitity extends Activity {

	/**
	 * ViewPager
	 */
	private ViewPager mViewPager;
	/**
	 * ViewPager的适配器
	 */
	private PagerAdapter mAdapter;
	private List<View> mViews;
	private LayoutInflater mInflater;

	private int currentIndex;

	/**
	 * 底部四个按钮
	 */
	private LinearLayout mTabBtnWeixin;
	private LinearLayout mTabBtnFrd;
	private LinearLayout mTabBtnAddress;
	private LinearLayout mTabBtnSettings;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		mInflater = LayoutInflater.from(this);
		mViewPager = (ViewPager) findViewById(R.id.id_viewpager);
		//初始化View  把要显示的视图放进List中
		initView();
			
		mViewPager.setAdapter(mAdapter);
		// 滑动页面时响应的接口
		mViewPager.setOnPageChangeListener(new OnPageChangeListener() {
			@Override
			public void onPageSelected(int position) {
				// 重置底部按钮为初始状态
				resetTabBtn();
				// 改变底部按钮背景图片
				switch (position) {
				case 0:
					((ImageButton) mTabBtnWeixin
							.findViewById(R.id.btn_tab_bottom_weixin))
							.setImageResource(R.drawable.tab_weixin_pressed);
					break;
				case 1:
					((ImageButton) mTabBtnFrd
							.findViewById(R.id.btn_tab_bottom_friend))
							.setImageResource(R.drawable.tab_find_frd_pressed);
					break;
				case 2:
					((ImageButton) mTabBtnAddress
							.findViewById(R.id.btn_tab_bottom_contact))
							.setImageResource(R.drawable.tab_address_pressed);
					break;
				case 3:
					((ImageButton) mTabBtnSettings
							.findViewById(R.id.btn_tab_bottom_setting))
							.setImageResource(R.drawable.tab_settings_pressed);
					break;
				}
				currentIndex = position;
			}

			@Override
			public void onPageScrolled(int arg0, float arg1, int arg2) {

			}

			@Override
			public void onPageScrollStateChanged(int arg0) {
			}
		});

	}

	// 把底部按钮设置成默认
	protected void resetTabBtn() {
		((ImageButton) mTabBtnWeixin.findViewById(R.id.btn_tab_bottom_weixin))
				.setImageResource(R.drawable.tab_weixin_normal);
		((ImageButton) mTabBtnFrd.findViewById(R.id.btn_tab_bottom_friend))
				.setImageResource(R.drawable.tab_find_frd_normal);
		((ImageButton) mTabBtnAddress.findViewById(R.id.btn_tab_bottom_contact))
				.setImageResource(R.drawable.tab_address_normal);
		((ImageButton) mTabBtnSettings
				.findViewById(R.id.btn_tab_bottom_setting))
				.setImageResource(R.drawable.tab_settings_normal);
	}

	@SuppressWarnings("all")
	private void initView() {
		// 初始化 按钮对应的视图组件
		mTabBtnWeixin = (LinearLayout) findViewById(R.id.id_tab_bottom_weixin);
		mTabBtnFrd = (LinearLayout) findViewById(R.id.id_tab_bottom_friend);
		mTabBtnAddress = (LinearLayout) findViewById(R.id.id_tab_bottom_contact);
		mTabBtnSettings = (LinearLayout) findViewById(R.id.id_tab_bottom_setting);

		mViews = new ArrayList<View>();
		View first = mInflater.inflate(R.layout.main_tab_01, null);
		View second = mInflater.inflate(R.layout.main_tab_02, null);
		View third = mInflater.inflate(R.layout.main_tab_03, null);
		View fourth = mInflater.inflate(R.layout.main_tab_04, null);
		// 把要显示的内容放入到List中
		mViews.add(first);
		mViews.add(second);
		mViews.add(third);
		mViews.add(fourth);
		// 初始化PagerAdapter PageAdapter依赖视图List
		mAdapter = new PagerAdapter() {
			@Override
			public void destroyItem(ViewGroup container, int position,
					Object object) {
				container.removeView(mViews.get(position));
			}
			//滑动ViewPager时显示对应的视图
			@Override
			public Object instantiateItem(ViewGroup container, int position) {
				View view = mViews.get(position);
				container.addView(view);
				return view;
			}
			
			@Override
			public boolean isViewFromObject(View arg0, Object arg1) {
				return arg0 == arg1;
			}

			@Override
			public int getCount() {
				return mViews.size();
			}
		};
	}

}

分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    Android ViewPager实例

    在Android开发中,ViewPager是一个非常重要的组件,常用于实现页面的滑动切换效果,比如在应用的引导页、TabLayout的实现中都能看到它的身影。本教程将深入讲解如何在Android项目中使用ViewPager以及实现循环滑动的...

    Android ViewPager例子

    在Android开发中,ViewPager是一个非常重要的组件,常用于实现页面滑动效果,比如在应用的主界面、设置页面或者照片浏览等场景。本教程将深入探讨Android中的ViewPager及其使用方式,结合具体的Java代码实例——...

    android ViewPager嵌套Fragment动态删除和插入案例

    android ViewPagerr嵌套Fragment 动态删除 动态插入,完美实现动态删除和插入,Fragment懒加载,可适用于各版本。the sample of android viewpager daynmic update or delete

    Android ViewPager-实现左右两个屏幕的切换-IT计算机-毕业设计.zip

    这个毕业设计案例为学习者提供了一个实际操作的平台,有助于深入理解ViewPager的工作原理和使用方法,对于提升Android开发技能具有积极意义。通过分析和实践此项目,学生可以了解到Android应用中页面切换的实现方式...

    ViewPager 案例

    实现左右滑动,android compatibility package, revision 3在7月份发布后,其中有个ViewPager引起了我的注意 官方的描述: 请参考:http://developer.android.com/sdk/compatibility-library.html#Notes ...

    android ViewPager嵌套Fragment动态删除和插入案例修复版

    android ViewPagerr嵌套Fragment 动态删除 动态插入,完美实现动态删除和插入,Fragment懒加载,可适用于各版本。the sample of android viewpager daynmic update or delete

    android显示多item多图片的viewpager,选中项居中变大,非选中项模糊变小

    在Android开发中,`ViewPager`是一个非常常用的组件,主要用于展示可滑动的多个页面,它在许多场景下被用于实现类似轮播图或者导航栏的效果。在这个特定的案例中,我们要实现的功能是“显示多item多图片的`ViewPager...

    ViewPager综合使用案例

    `ViewPager`是Android SDK中的一个强大控件,广泛用于实现滑动页面的效果,常用于创建类似轮播图、Tab切换等界面。在这个“ViewPager综合使用案例”中,我们将深入探讨如何利用`ViewPager`来实现自动轮播以及显示...

    Android viewpager指示器-IT计算机-毕业设计.zip

    对于学生毕业设计来说,这个项目是一个很好的实践案例,涵盖了Android基础组件的使用、事件监听以及自定义视图等知识点。通过研究和模仿这个源码,学生能够提升对Android开发的理解,同时也可以锻炼自己的编程和问题...

    侧滑+Fragement+Viewpager案例

    在Android应用开发中,"侧滑+Fragement+Viewpager案例"是一个常见的组合,用于构建高效且用户友好的界面。这个案例主要涉及三个关键组件:侧滑菜单(通常使用SlidingMenu库)、Fragment以及ViewPager。 首先,让...

    Android ViewPager Fragment.zip

    【Android ViewPager Fragment】 在Android应用开发中,ViewPager是一种强大的组件,用于展示多个页面,并允许用户通过左右滑动来切换这些...这个项目是一个很好的实践案例,可以帮助开发者提高Android应用开发技能。

    ViewPager+自定义控件实现的日历控件CalenderView

    开发者通过这个案例可以学习到如何有效地利用`ViewPager`,以及如何设计和实现自定义控件,提升自己的Android开发技能。同时,这个项目也为其他开发者提供了参考,帮助他们构建自己的日历或类似功能的UI组件。

    Android viewpager网络加载图片无限自动轮播demo

    在Android开发中,Viewpager是一种常用的组件,常用于实现页面滑动效果,如展示多个卡片式的界面内容。在这个“Android viewpager网络加载图片无限自动轮播demo”中,开发者已经实现了一个功能强大的轮播器,它不仅...

    android viewPager实现引导页

    在Android应用开发中,`ViewPager` 是一个非常重要的组件,常用于实现滑动切换的页面效果,如在很多应用启动时出现的引导页(又称欢迎页或新手引导)。本项目利用`ViewPager` 实现了一个包含三个子页面的引导页,每...

    Android SYBViewPager(自定义下划线标题的ViewPager)-IT计算机-毕业设计.zip

    通过学习和实践`SYBViewPager`这个案例,开发者不仅可以掌握自定义ViewGroup的基本技巧,还能了解如何结合ViewPager实现复杂的滑动导航效果,这对任何Android开发者来说都是一项宝贵的技能。在毕业设计中使用这样的...

    Android ViewPager Fragment实现选项卡-IT计算机-毕业设计.zip

    在Android开发中,ViewPager是一种非常重要的组件,常用于实现页面滑动效果,特别是在选项卡(Tab)切换场景中。这个“Android ViewPager Fragment实现选项卡”的项目是一个典型的Android应用源码示例,适合计算机...

    Android ViewPager Fragment实现选项卡.zip源码资源下载

    总之,这个源码资源提供了一个实际的案例,演示了如何在Android应用中利用ViewPager和Fragment实现选项卡式的界面交互。通过深入研究和实践,开发者能够更好地理解和掌握Android UI设计和页面管理的技巧。

    Android自定义ViewPager指示器PagerIndicator

    在Android开发中,ViewPager是一种常用的组件,用于展示多个页面并允许用户通过滑动来切换页面。而PagerIndicator则是配合ViewPager使用的视图元素,通常显示为小圆点或线条,用以指示当前显示的页面和总页面数。在...

    Android ViewPager Fragment实现QQ界面

    在我们的案例中,`ViewPager`将被用来展示不同的QQ功能模块,如聊天、联系人、发现等,用户可以通过左右滑动在这些模块间切换。 接着,`Fragment`是Android中的一个组件,它代表应用程序界面的一部分,可以独立于...

    Android ViewPager+Fragment实现QQ界面-IT计算机-毕业设计.zip

    在Android开发中,ViewPager是一种非常重要的视图切换组件,它允许用户通过左右滑动来浏览多个页面,这种交互方式在很多应用中都能看到,比如QQ、微信等社交应用。本项目"Android ViewPager+Fragment实现QQ界面"就是...

Global site tag (gtag.js) - Google Analytics