关闭

ViewPager的简单使用

标签: viewpager
254人阅读 评论(0) 收藏 举报

<p>
今天记录一下ViewPager一些简单的应用</p><p>跟ListView一样,也是需要使用到适配器,ViewPager的适配器使用PagerAdapter</p><p>需要注意的是ViewPager作为控件放置到布局中,要将包名也输入进去</p><p>xml文件如下:</p>

</pre><pre name="code" class="html"><RelativeLayout 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:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity" >

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/hello_world" />
    
    <android.support.v4.view.ViewPager
        android:id="@+id/viewPager"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>

</RelativeLayout>
<pre name="code" class="html"><?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" >
    
    <ImageView 
        android:id="@+id/item_iv"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"/>
	
    <TextView 
        android:id="@+id/item_it"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"/>
    
</LinearLayout>




以下是完成图片的滑动切换

代码如下:

package com.example.viewpagerdemo;

import java.util.ArrayList;

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.view.Window;
import android.widget.ImageView;
import android.widget.TextView;
import android.app.Activity;
import android.content.pm.ActivityInfo;

public class MainActivity extends Activity implements OnPageChangeListener{
	ViewPager vp;
	ArrayList<View> views = new ArrayList<View>();
	String[] strs = {"ahelpi1","ahelpi2","ahelpi3","ahelpi4"};
	//布局过滤器
	LayoutInflater li;
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
	
		//实例布局过滤器
		li = LayoutInflater.from(this);
		//设置内容的方法要在ViewPager前调用
		setContent();
		vp = (ViewPager) findViewById(R.id.viewPager);
		//创建适配器对象
		MyAdapter my = new MyAdapter();
		//有ViewPager调用setAdapter()方法,就能自动调用。
		vp.setAdapter(my);
		//设置当前元素
		vp.setCurrentItem(2);
		//设置监听者
		vp.setOnPageChangeListener(this);
	}
	
	/**
	 * 设置内容
	 */
	public void setContent() {
		for (int i = 0; i < 4; i++) {
			//第一个参数为布局文件的id,返回的是View,把文件过滤返回成View
			View view = li.inflate(R.layout.viewpager_item, null);
			//Activity的findViewById()只能找到当前布局的空间,不能切换View
			ImageView iv = (ImageView) view.findViewById(R.id.item_iv);
			TextView tv =  (TextView) view.findViewById(R.id.item_it);
			String name = strs[i];
			int id = getResources().getIdentifier(name, "drawable", getPackageName());
			iv.setImageResource(id);
			tv.setText("第"+(i+1)+"个:");
			//往集合中添加整个视图,不能只添加控件
			views.add(view);
		}
		
	}
	
	/**
	 * 配置ViewPager的适配器
	 */
	public class MyAdapter extends PagerAdapter{
		
		/**
		 * 确定可以配到到ViewPager上的内容的个数
		 */
		@Override
		public int getCount() {
			return views.size();//返回集合的长度即View的个数
		}
		
		/**
		 * 用来判断设置到ViewPager上的内容是否是视图View
		 * arg1就是传进来的东西,如果arg0和arg1是一样的,代表传进来的元素是View
		 * 用内存地址值判断arg0和arg1是否一样
		 */
		@Override
		public boolean isViewFromObject(View arg0, Object arg1) {
			return arg0==arg1/*添加进来的内容是View*/;
		}
		
		/**
		 * 添加元素
		 * ViewGroup:视图组
		 * container:适配哪个ViewPager就显示哪个ViewPager。即表示是ViewPager
		 * position:即将要添加到显示范围内的视图的角标。
		 */
		@Override
		public Object instantiateItem(ViewGroup container, int position) {
			//返回的Object为添加的元素(视图)
			container.addView(views.get(position));
			return views.get(position);
		}
		
		/**
		 * 去除旧元素
		 * container:正在配置的ViewPager
		 * position:要去除的视图的角标
		 */
		@Override
		public void destroyItem(ViewGroup container, int position, Object object) {
//			super.destroyItem(container, position, object);这个方法要去掉
//			container.removeViewAt(position);
			container.removeView(views.get(position));
		}
	}
	
	/**
	 * 触摸的状态变化时,会调用此方法
	 */
	@Override
	public void onPageScrollStateChanged(int arg0) {
		System.out.println("StateChanged"+arg0);
	}
	
	/**
	 * 设置滑动幅度和速度切换视图
	 * 只有滑动才会调用此方法
	 * 第一个参数是触摸状态:滑动为1,停下为0;
	 * 第二个参数为滑动的比例:从左往右从0到将近1,从又往左从将近1到0;
	 * 第三个参数为滑动的像素值(px)
	 */
	@Override
	public void onPageScrolled(int arg0, float arg1, int arg2) {
		System.out.println("Scrolled---0"+arg0);
		System.out.println("Scrolled---1"+arg1);
		System.out.println("Scrolled---2"+arg2);
	}
	
	@Override
	public void onPageSelected(int arg0/*第几个界面*/) {
		//到最后一个界面
		if (arg0==views.size()-1) {
//			vp.setCurrentItem(0);//这个方法比较慢
			vp.setCurrentItem(0, false);//如果为false快速设置到指定页面
		}else if (arg0==0) {
			vp.setCurrentItem(views.size()-2, false);
		}
	}
	
}


0
0
查看评论

ViewPager简单使用步骤

前言:感觉和listView使用一样。 1.xml文件中布局 2.Actvity中实例化ViewPager 3.自定义Adapter,这里具体实现稍有不同,也有些暂时不懂的地方 4.Adapter实例化,并填充到ViewPager 5.ViewPager事件监听 好了,直接上代码(本代码...
  • zinjin_woxin
  • zinjin_woxin
  • 2015-09-02 16:41
  • 2360

ViewPager简单用法

这里讲述一个入门级别的ViewPager用于页面切换的例子。
  • guchuanhang
  • guchuanhang
  • 2016-06-15 09:01
  • 453

ViewPager的最简单使用

ViewPager的最简单使用方法我的博客希望大家喜欢好了,进入正题,今天教大家ViewPager的最简单的实例,首先我们需要几个Fragment,还有一个Activity,这大家应该知道的吧,因为Fragment需要在这个Activity中进行左右滑动,所以… 1.那么首先就来准备几个Fragme...
  • wanxuedong
  • wanxuedong
  • 2016-12-07 20:33
  • 323

android viewPager的简单使用案例

1 认识一下ViewPager?      ViewPager最早出自4.0版本,那么低版本如何能使用ViewPager呢?为了兼容低版本安卓设备,谷歌官方给我们提供了一个的软件包android.support.v4.view。这个V4包囊了只有在安卓3...
  • u011422023
  • u011422023
  • 2015-04-08 19:13
  • 1742

关于Design包中TabLayout+ViewPager的简单使用

安卓从API22(5.1)推出了Design的支持包,方便开发者使用Material Design元素来美化自己的应用,今天为大家整理了简单使用TabLayout+ViewPager做的一个小DEMO,方便大家借阅参考。 项目需要先引入Design的包,如果读者使用的是studio的话引入还是比较...
  • xieluoxixi
  • xieluoxixi
  • 2016-12-03 17:01
  • 664

Android基础入门教程——2.4.14 ViewPager的简单使用

本节带来的是Android 3.0后引入的一个UI控件——ViewPager(视图滑动切换工具),实在想不到 如何来称呼这个控件,他的大概功能:通过手势滑动可以完成View的切换,一般是用来做APP 的引导页或者实现图片轮播,因为是3.0后引入的,如果想在低版本下使用,就需要引入v4 兼容包哦...
  • zpj779878443
  • zpj779878443
  • 2015-10-08 18:53
  • 9467

TabLayout+ViewPager简易实现

//在gradle中配置依赖compile 'com.android.support:design:25.3.1' //布局文件 //activity_main布局     android:layout_width="ma...
  • ZhouZhouSunShine
  • ZhouZhouSunShine
  • 2017-08-18 20:40
  • 353

TabLayout结合ViewPager的使用

点击title 和滑动viewpager  都可实现滑动 布局文件如下 <android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk...
  • u013967628
  • u013967628
  • 2016-08-15 09:02
  • 954

ViewPager简单使用

重写pageradapter: public class Pager extends PagerAdapter { private List views; private Context context; private TextView txt; private RefreshList...
  • yueqinglkong
  • yueqinglkong
  • 2013-11-08 22:19
  • 1160

viewPager的简单使用

添加布局文件:main.xml <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent&quo...
  • u011324501
  • u011324501
  • 2016-01-21 10:42
  • 236
    个人资料
    • 访问:21264次
    • 积分:457
    • 等级:
    • 排名:千里之外
    • 原创:26篇
    • 转载:5篇
    • 译文:0篇
    • 评论:0条