ViewPager的使用
在上培训课的时候,老师一直在将ViewPager是现在的主流,一直想去好好的了解一下,今天去网上学习了一下 ,做一个总结:
ViewPager其实就是后来谷歌提供给我们的一个组件,就像TextView,Button一样,只不过它是ViewGroup,在使用它前要有v4的包,既然是组件,当然要在xml中定义,
标签的样式基本是这样:
<android.support.v4.view.ViewPager
android:id="viewPager"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
在xml文件内定义好了以后。接下来就是编辑Activity文件,最重要的就是实现一个适配器PagerAdapter,使用的方法和ListView里面实现BaseAdapter是一样的,下面是代码:
PagerAdapter myPagerAdapter=new PagerAdapter(){ @Override
public int getCount() {
return viewList.size();
} @Override
public boolean isViewFromObject(View arg0, Object arg1) { return arg0==arg1;
} @Override
public void destroyItem(ViewGroup container, int position,
Object object) { container.removeView(viewList.get(position));
} @Override
public CharSequence getPageTitle(int position) { return titleList.get(position);
}
@Override
public Object instantiateItem(ViewGroup container, int position) {
container.addView(viewList.get(position));
return viewList.get(position);
} };
适配器必须要实现的是四个方法:分别是getCount(),isViewFromObject(View arg0, Object arg1),instantiateItem(ViewGroup container, int position),destroyItem(ViewGroup container, int position,Object object)具体的使用就看文档了。在适配器里面我们还可以定义标签等一些属性。
下面是全部代码:
Activity:
package com.example.viewpager; import java.util.ArrayList;
import java.util.List; import android.app.Activity;
import android.graphics.Color;
import android.os.Bundle;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.PagerTabStrip;
import android.support.v4.view.PagerTitleStrip;
import android.support.v4.view.ViewPager;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button; public class MainActivity extends Activity {
private ViewPager viewPager=null;
private List<View> viewList=null;
private List<String> titleList=null;
private PagerTabStrip pageTab=null; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
setValue();
}
private void setValue(){
viewPager=(ViewPager) findViewById(R.id.viewPager);
pageTab=(PagerTabStrip) findViewById(R.id.pagerTab);
pageTab.setTextSpacing(20);
pageTab.setTabIndicatorColor(Color.YELLOW);
pageTab.setDrawFullUnderline(false);
pageTab.setBackgroundColor(Color.BLUE);
LayoutInflater flater=LayoutInflater.from(this);
View view1=flater.inflate(R.layout.layout_01, null);
View view2=flater.inflate(R.layout.layout_02, null);
View view3=flater.inflate(R.layout.layout_03, null);
viewList=new ArrayList<View>();
viewList.add(view1);
viewList.add(view2);
viewList.add(view3);
titleList=new ArrayList<String>();
titleList.add("标签一");
titleList.add("标签二");
titleList.add("标签三");
PagerAdapter myPagerAdapter=new PagerAdapter(){ @Override
public int getCount() {
return viewList.size();
} @Override
public boolean isViewFromObject(View arg0, Object arg1) { return arg0==arg1;
} @Override
public void destroyItem(ViewGroup container, int position,
Object object) { container.removeView(viewList.get(position));
} @Override
public CharSequence getPageTitle(int position) { return titleList.get(position);
}
@Override
public Object instantiateItem(ViewGroup container, int position) {
container.addView(viewList.get(position));
return viewList.get(position);
} };
viewPager.setAdapter(myPagerAdapter);
} @Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
return true;
} }
xml:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
>
<android.support.v4.view.ViewPager
android:id="@+id/viewPager"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
>
<android.support.v4.view.PagerTabStrip
android:id="@+id/pagerTab"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="top"
/>
</android.support.v4.view.ViewPager> </LinearLayout>
其他三个子页面我就不复制了。
ViewPager的使用的更多相关文章
- 踩石行动:ViewPager无限轮播的坑
2016-6-19 前言 View轮播效果在app中很常见,一想到左右滑动的效果就很容易想到使用ViewPager来实现.对于像我们常说的banner这样的效果,具备无限滑动的功能是可以用ViewPa ...
- Android ViewPager打造3D画廊
本文已授权微信公众号:鸿洋(hongyangAndroid)在微信公众号平台原创首发. 网上有很多关于使用Gallery来打造3D画廊的博客,但是在关于Gallery的官方说法中表明: This cl ...
- Android中Fragment和ViewPager那点事儿(仿微信APP)
在之前的博文<Android中使用ViewPager实现屏幕页面切换和引导页效果实现>和<Android中Fragment的两种创建方式>以及<Android中Fragm ...
- TabLayout + ViewPager
一.实现思路 1.在build.gradle中添加依赖,例如: compile 'com.android.support:support-v4:23.4.0'compile 'com.android. ...
- android内部培训视频_第三节(3)_常用控件(ViewPager、日期时间相关、ListView)
第三节(2):常用控件之ViewPager.日期时间相关.ListView 一.ViewPager 实例:结合PagerAdapter滑动切换图片 二.日期时间相关:AnalogClock\Dig ...
- 简单的ViewPager了解Scroller类
View滑动是自定义ViewGroup中十分常见的一个功能.Android提供了多种View滑动的方法. layout方法 offsetLeftAndRight()与offsetTopAndBotto ...
- PagerSlidingTabStrip介绍及使用,让ViewPager更绚丽
转载请注明出处http://blog.csdn.net/harryweasley/article/details/42290595,谢谢. 以前一直想着,ViewPager中间的那个横线怎么跟着屏幕的 ...
- 详细分析Android viewpager 无限循环滚动图片
由于最近在忙于项目,就没时间更新博客了,于是趁着周日在房间把最近的在项目中遇到的技术总结下.最近在项目中要做一个在viewpager无限滚动图片的需求,其实百度一下有好多的例子,但是大部分虽然实现了, ...
- 一行代码引入 ViewPager 无限循环 + 页码显示
(出处:http://www.cnblogs.com/linguanh) 前序: 网上的这类 ViewPager 很多,但是很多都不够好,体现在 bug多.对少页面不支持,例如1~2张图片.功能整合不 ...
- 使用ViewPager实现自动轮播
很多APP中都实现了类似引导页的自动轮播,不由得想到昨天的引导页上修改一下代码实现轮播. 其实大体上只需要添加一个线程循环执行就可以了. 项目已同步至:https://github.com/nanch ...
随机推荐
- C++的黑科技
周二面了腾讯,之前只投了TST内推,貌似就是TST面试了 其中有一个问题,"如何产生一个不能被继承的类",这道题我反反复复只想到,将父类的构造函数私有,让子类不能调用,最后归结出一 ...
- vim中多标签和多窗口的使用
用vim进行编辑的时候常常因为要编辑多个文件或者是编辑一个文件要参考其他文件而烦恼,这里介绍两种方法: 1.多标签 直接在编辑的时候输入: vim -p 要编辑的文件名 如vim -p * 就是编辑当 ...
- 分享7款非常实用的jQuery/CSS3插件演示和源码
上次我们分享了15款效果很酷的最新jQuery/CSS3特效,非常不错,今天要分享7个非常实用的jQuery/CSS3插件演示和源码,一起来看看. 1.jQuery ajax点击地图显示商家网点分布 ...
- 配置ini指定eclipse启动JDK版
eclipse mars1 需要JDK 1.7+ 解决方案: 改eclipse.ini配置文件 -startupplugins/org.eclipse.equinox.launcher_1.3.100 ...
- 用手机地图GPS导航费流量吗?
如果你的手机带有GPS芯片,那么使用手机导航是不会耗费手机流量的.但是如果你的手机没有GPS芯片,而使用的导航软件又是类似于移动提供的导航服务那样的导航功能,那就耗费手机流量了. 目前,导航软件导航主 ...
- php的单例模式
据说,单例模式是设计模式中最简单的一种. 不多说,先上代码,然后解说,一共两个文件: danli.class <?php class Danli { //保存类的实例的静态成员变量 static ...
- 十二、EnterpriseFrameWork框架核心类库之与EntLib结合
从本章开始对框架的讲叙开始进入核心类库的讲解,前面都是对框架外在功能讲解,让人有个整体的概念,知道包含哪些功能与对系统开发有什么帮助.以后多章都是讲解核心类库的,讲解的方式基本按照代码的目录结构,这样 ...
- 动态密码卡TOTP算法
TOTP NET实现:http://googleauthcsharp.codeplex.com/ 引用:http://www.cnblogs.com/wangxin201492/p/5030943.h ...
- Marven笔记贴
本篇只是作为自学Marven的笔记贴,基本上都是网上的各种资料的汇总,方便自己和需要的人,不用一个个去找浪费时间了. 什么是Marven You want to start with a projec ...
- 《Programming with Objective-C》第八章 Working with Blocks
Blocks are Objective-C objects, which means they can be added to collections like NSArray or NSDicti ...