Anddroid控件之ViewPager详解
来源:互联网 发布:php get传递url 编辑:程序博客网 时间:2024/06/05 21:56
1.ViewPager的简介和作用
ViewPager是android扩展包v4包中的类,这个类可以让用户左右切换当前的view
1)ViewPager类直接继承了ViewGroup类,所有它是一个容器类,可以在其中添加其他的view类。
2)ViewPager类需要一个PagerAdapter适配器类给它提供数据。
3)ViewPager经常和Fragment一起使用,并且提供了专门的FragmentPagerAdapter和FragmentStatePagerAdapter类供Fragment中的ViewPager使用。
2.ViewPager的适配器
简介中提到了PagerAdapter,和ListView等控件使用一样,需要ViewPager设置PagerAdapter来完成页面和数据的绑定,这个PagerAdapter是一个基类适配器,我们经常用它来实现app引导图,它的子类有FragmentPagerAdapter和FragmentStatePagerAdapter,这两个子类适配器用于和Fragment一起使用,在安卓应用中它们就像listview一样出现的频繁。
XML代码:
使用android.support.v4.view.ViewPager引入
<android.support.v4.view.ViewPager android:id="@+id/vp" android:layout_width="match_parent" android:layout_height="match_parent" > <android.support.v4.view.PagerTabStrip android:id="@+id/pager_tab_strip" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_gravity="top" android:background="#ffffff" android:paddingBottom="4dp" android:paddingTop="4dp" android:textColor="#000" /> </android.support.v4.view.ViewPager>
MainActivity.java
package com.example.viewpager;import java.util.ArrayList;import android.app.Activity;import android.os.Bundle;import android.support.v4.view.PagerAdapter;import android.support.v4.view.PagerTabStrip;import android.support.v4.view.ViewPager;import android.support.v4.view.ViewPager.OnPageChangeListener;import android.view.Menu;import android.view.MenuItem;import android.view.View;import android.view.ViewGroup;import android.widget.ImageView;import android.widget.LinearLayout;import android.widget.Toast;public class MainActivity extends Activity implements OnPageChangeListener { private ViewPager vp; private PagerTabStrip pager_tab_strip; private ImageView[] image_point;//声明存放小点的数组 private int currentIndex;//当前正在显示的卡页 //定义一组导航栏的标题 //private String[] titles= {"我的","首页","店铺"}; //声明一个ArrayList集合用来放置布局 private ArrayList<View> views=new ArrayList<View>(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //找到组件 vp=(ViewPager) findViewById(R.id.vp); //pager_tab_strip=(PagerTabStrip) findViewById(R.id.pager_tab_strip); initViews(); initPoint(); //给ViewPager注册适配器 } //初始化布局的方法 private void initViews() { //挨个把设置的三个存放的三个ImageView Layout布局文件填充到views集合中 views.add(getLayoutInflater().inflate(R.layout.layout_a, null)); views.add(getLayoutInflater().inflate(R.layout.layout_b, null)); views.add(getLayoutInflater().inflate(R.layout.layout_c, null)); vp.setOnPageChangeListener(this); vp.setAdapter(new myadapter()); } //初始化小点的方法 private void initPoint() { //获取包含小点的子布局LinearLayout LinearLayout layout_point=(LinearLayout) findViewById(R.id.layout_point); image_point=new ImageView[views.size()];//有几个视图就有几个小点 for(int i=0;i<image_point.length;i++) { //把存放小点布局的图片依次取出来,付给image_point数组 image_point[i]=(ImageView) layout_point.getChildAt(i); } currentIndex=0; image_point[currentIndex].setImageResource(R.drawable.circle); } //设置当切换界面的时候改变的小点 private void setCurrentPoint(int position) { if(currentIndex<0 || currentIndex==position || currentIndex>image_point.length) { return; } image_point[currentIndex].setImageResource(R.drawable.circle_empty);//设置为空圆圈 image_point[position].setImageResource(R.drawable.circle);//设置为实心圆 currentIndex=position; } //写一个自己的适配器继承ViewPager适配器并实现相应的5个方法 class myadapter extends PagerAdapter{ //获取集合中布局的总数 @Override public int getCount() { // TODO Auto-generated method stub return views.size(); } //实例化选线卡 @Override public Object instantiateItem(ViewGroup container, int position) { // TODO Auto-generated method stub View v=views.get(position); container.addView(v);//把每次找到的布局文件添加到ViewPager的容器当中去 return v;//注意返回值是v } //删除选项卡 @Override public void destroyItem(ViewGroup container, int position, Object object) { // TODO Auto-generated method stub container.removeView(views.get(position)); }// //获取PagerTabStrip的标题// @Override// public CharSequence getPageTitle(int position) {// // TODO Auto-generated method stub// return titles[position];// } //判读布局和我们返回的view是否相等,我们直接返回 arg0==arg1 @Override public boolean isViewFromObject(View arg0, Object arg1) { // TODO Auto-generated method stub return arg0==arg1; } } //此方法表是滑动的状态,参数1(表示滑动的状态)返回0表示没有滑动状态,返回1表示滑动状态,2表示滑动停止状态 @Override public void onPageScrollStateChanged(int arg0) { // TODO Auto-generated method stub System.out.println("onPageScrollStateChanged="+arg0); } //页面滑动时调用此方法,直到滑动结束,参数1(当前所单击的界面)参数1(当前界面偏移的百分比)参数1(当前界面偏移的像素百分比) @Override public void onPageScrolled(int arg0, float arg1, int arg2) { // TODO Auto-generated method stub System.out.println("onPageScrolled="+arg0+","+","+arg1+","+arg2); } //此方法返回当前所在第几个界面,参数1(表示当前所在的界面) @Override public void onPageSelected(int arg0) { // TODO Auto-generated method stub System.out.println("onPageSelected="+arg0); setCurrentPoint(arg0); }}
阅读全文
0 0
- Anddroid控件之ViewPager详解
- Anddroid 学习之路
- ViewPager控件详解
- android控件之ViewPager
- anddroid电源管理powerManager详解
- anddroid异常处理之UncaughtException
- Android常用控件之ViewPager
- Android引用控件之ViewPager
- 自定义控件之viewPager轮播图
- UI控件--ViewPager详解(1)
- Android常用控件之ViewPager的使用
- 一、Android控件选择之ViewPager
- Android开发之自定义控件--ViewPager
- Android开发之自定义控件--ViewPager
- Android--多页面管理控件之ViewPager
- 安卓高级控件之ViewPager
- 安卓高级控件之ViewPager
- [控件]ViewPager
- java根据经纬度坐标计算两点的距离算法
- [Android Exercise]仿微信游戏界面PART.2—自定义样式shape和selector的应用
- 求平均分
- CSS常见问题解决
- pat 乙级 1044. 火星数字(20)
- Anddroid控件之ViewPager详解
- document.createElement()
- 百度语音识别简单快速集成
- Django模板中的数字如何实现自增?
- Java学习笔记
- 1581:小哼买书
- 个人
- VC中显示ICON和BMP图片
- Spring依赖注入简单例子