您的位置:首页 > 移动开发 > Android开发

ViewPager的使用

2016-03-08 11:36 651 查看
ViewPager是android扩展包v4包中的类,这个类可以让用户左右切换当前的view

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

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

效果图:



MainActivity.java

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的前缀不能少)
<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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Android viewpager