前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >ViewPager的使用

ViewPager的使用

作者头像
提莫队长
发布2019-03-01 09:42:23
8760
发布2019-03-01 09:42:23
举报
文章被收录于专栏:刘晓杰刘晓杰

ViewPager是android扩展包v4包中的类,这个类可以让用户左右切换当前的view

ViewPager类需要一个PagerAdapter适配器类给它提供数据

在编写ViewPager的时候,还需要使用两个组件类分别是PagerTitleStrip类和PagerTabStrip类,PagerTitleStrip类直接继承自ViewGroup类,而PagerTabStrip类继承PagerTitleStrip类,所以这两个类也是容器类。但是有一点需要注意,在定义XML的layout的时候,这两个类必须是ViewPager标签的子标签,不然会出错。

效果图:

MainActivity.java

代码语言:javascript
复制
package com.example.viewpager;

import java.util.ArrayList;

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.ViewPager;
import android.support.v4.view.ViewPager.OnPageChangeListener;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Toast;

public class MainActivity extends Activity {
	private ViewPager viewPager;
	private PagerTabStrip pagerTabStrip;
	private String[] titles = {"plane1", "plane2", "plane3"};
	private ArrayList<View> views = new ArrayList<View>();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        viewPager = (ViewPager)findViewById(R.id.viewpager);
        pagerTabStrip = (PagerTabStrip)findViewById(R.id.pagertabstrip);
        initView();
        viewPager.setCurrentItem(titles.length/2);
        viewPager.setAdapter(new MyPagerAdapter());
        viewPager.setOnPageChangeListener(new OnPageChangeListener() {
			@Override
			public void onPageSelected(int i) {
				Toast.makeText(getApplicationContext(), "page--"+i, 
						Toast.LENGTH_SHORT).show();
			}
			
			@Override
			public void onPageScrolled(int arg0, float arg1, int arg2) {
			}
			
			@Override
			public void onPageScrollStateChanged(int arg0) {
			}
		});
    }
    
    private void initView(){
    	views.add(this.getLayoutInflater().inflate(R.layout.layout1, null));
    	views.add(this.getLayoutInflater().inflate(R.layout.layout2, null));
    	views.add(this.getLayoutInflater().inflate(R.layout.layout3, null));
    	
    	pagerTabStrip.setBackgroundColor(getResources().getColor
    			(android.R.color.holo_blue_bright));
    	pagerTabStrip.setTabIndicatorColor(getResources().getColor
    			(android.R.color.holo_red_dark));
    	pagerTabStrip.setTextColor(Color.BLACK);
    }
    
    class MyPagerAdapter extends PagerAdapter{
		@Override
		public int getCount() {
			return views.size();
		}

		@Override
		public Object instantiateItem(ViewGroup container, int position) {
			View view = views.get(position);
			container.addView(view);
			return view;
		}
		
		@Override
		public void destroyItem(ViewGroup container, int position, Object object) {
			container.removeView(views.get(position));
		}
		
		@Override
		public boolean isViewFromObject(View v, Object o) {
			return v==o;
		}

		@Override
		public CharSequence getPageTitle(int position) {
			return titles[position];
		}
    }
}

main.xml(注意viewpager的前缀不能少)

代码语言:javascript
复制
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/LinearLayout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context="com.example.viewpager.MainActivity" >

    <android.support.v4.view.ViewPager
        android:id="@+id/viewpager"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="#FF6600"
        android:layout_gravity="center" >
        
        <android.support.v4.view.PagerTabStrip 
            android:id="@+id/pagertabstrip"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="top" >
        </android.support.v4.view.PagerTabStrip>
        
    </android.support.v4.view.ViewPager>
    
</LinearLayout>

三个layout文件里面全是一个ImageView

更详细的介绍在这里http://blog.csdn.net/harvic880925/article/details/38453725

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2016年03月08日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档