Android UI之ViewPager
來源:程序員人生 發布時間:2014-12-22 08:57:26 閱讀次數:4033次
ViewPager需要android-support-v4.jar這個包的支持,它是Google提供的1個附加包。
ViewPager主要用來組織1組界面,并且通過左右滑動的方式來展現。與ListView類似,ViewPager也需要1個適配器,也就是PagerAdapter,來把這組界面填充到ViewPager中。
ViewPager的使用步驟:
1、往布局文件里加入ViewPager組件
2、加載要顯示的界面布局
3、在Activity里實例化ViewPager組件,并設置它的適配器和監聽事件
實例:
運行效果:

代碼清單:
布局文件:main.xml
<?xml version="1.0" encoding="utf⑻"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<android.support.v4.view.ViewPager
android:id="@+id/viewpager"
android:layout_width="fill_parent"
android:layout_height="fill_parent" />
</RelativeLayout>
布局文件:viewpager_page1.xml
<?xml version="1.0" encoding="utf⑻"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="center"
>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Page1"
/>
</LinearLayout>
Java源代碼文件:MainActivity.java
package com.rainsong.viewpagerdemo;
import java.util.ArrayList;
import android.app.Activity;
import android.os.Bundle;
import android.support.v4.view.ViewPager;
import android.support.v4.view.ViewPager.OnPageChangeListener;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.Toast;
public class MainActivity extends Activity implements OnPageChangeListener {
ViewPager mViewPager;
ViewPagerAdapter mViewPagerAdapter;
ArrayList<View> mViews;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// 將要分頁顯示的View裝入數組中
LayoutInflater inflater = getLayoutInflater();
mViews = new ArrayList<View>();
mViews.add(inflater.inflate(R.layout.viewpager_page1, null));
mViews.add(inflater.inflate(R.layout.viewpager_page2, null));
mViews.add(inflater.inflate(R.layout.viewpager_page3, null));
mViews.add(inflater.inflate(R.layout.viewpager_page4, null));
mViewPager = (ViewPager) findViewById(R.id.viewpager);
mViewPagerAdapter = new ViewPagerAdapter(mViews);
// 設置ViewPager的適配器和監聽事件
mViewPager.setAdapter(mViewPagerAdapter);
mViewPager.setOnPageChangeListener(this);
}
@Override
public void onPageScrollStateChanged(int arg0) {
}
@Override
public void onPageScrolled(int arg0, float arg1, int arg2) {
}
@Override
public void onPageSelected(int position) {
int pageId = position + 1;
Toast.makeText(MainActivity.this, "Page" + pageId + " Selected", Toast.LENGTH_SHORT).show();
}
}
Java源代碼文件:ViewPagerAdapter.java
package com.rainsong.viewpagerdemo;
import java.util.ArrayList;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.view.View;
import android.view.ViewGroup;
public class ViewPagerAdapter extends PagerAdapter {
private ArrayList<View> views;
public ViewPagerAdapter (ArrayList<View> views){
this.views = views;
}
@Override
public int getCount() {
if (views != null) {
return views.size();
}
return 0;
}
@Override
public Object instantiateItem(ViewGroup view, int position) {
((ViewPager) view).addView(views.get(position), 0);
return views.get(position);
}
@Override
public void destroyItem(ViewGroup view, int position, Object arg2) {
((ViewPager) view).removeView(views.get(position));
}
@Override
public boolean isViewFromObject(View view, Object arg1) {
return (view == arg1);
}
}
API知識點
public class
ViewPager
extends ViewGroup
Class Overview
Layout manager that allows the user to flip left and right through pages of data. You supply an implementation of a PagerAdapter to generate the pages that the view shows.
void
setAdapter(PagerAdapter adapter)
Set a PagerAdapter that will supply views for this pager as needed.
void
setOnPageChangeListener(ViewPager.OnPageChangeListener listener)
Set a listener that will be invoked whenever the page changes or is incrementally scrolled.
public abstract class
PagerAdapter
extends Object
Known Direct Subclasses
FragmentPagerAdapter, FragmentStatePagerAdapter
Class Overview
Base class providing the adapter to populate pages inside of a ViewPager.
When you implement a PagerAdapter, you must override the following methods at minimum:
instantiateItem(ViewGroup, int)
destroyItem(ViewGroup, int, Object)
getCount()
isViewFromObject(View, Object)
Object
instantiateItem(ViewGroup container, int position)
Create the page for the given position.
void
destroyItem(ViewGroup container, int position, Object object)
Remove a page for the given position.
abstract int
getCount()
Return the number of views available.
abstract boolean
isViewFromObject(View view, Object object)
Determines whether a page View is associated with a specific key object as returned by instantiateItem(ViewGroup, int).
public static interface
ViewPager.OnPageChangeListener
Class Overview
Callback interface for responding to changing state of the selected page.
abstract void
onPageScrollStateChanged(int state)
Called when the scroll state changes.
abstract void
onPageScrolled(int position, float positionOffset, int positionOffsetPixels)
This method will be invoked when the current page is scrolled, either as part of a programmatically initiated smooth scroll or a user initiated touch scroll.
abstract void
onPageSelected(int position)
This method will be invoked when a new page becomes selected.
生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈