![【移动应用开发技术】Android中怎么利用ViewPager实现无限循环_第1页](http://file4.renrendoc.com/view/81d8aca98b9b6e54542785d4fe01dfdc/81d8aca98b9b6e54542785d4fe01dfdc1.gif)
![【移动应用开发技术】Android中怎么利用ViewPager实现无限循环_第2页](http://file4.renrendoc.com/view/81d8aca98b9b6e54542785d4fe01dfdc/81d8aca98b9b6e54542785d4fe01dfdc2.gif)
![【移动应用开发技术】Android中怎么利用ViewPager实现无限循环_第3页](http://file4.renrendoc.com/view/81d8aca98b9b6e54542785d4fe01dfdc/81d8aca98b9b6e54542785d4fe01dfdc3.gif)
![【移动应用开发技术】Android中怎么利用ViewPager实现无限循环_第4页](http://file4.renrendoc.com/view/81d8aca98b9b6e54542785d4fe01dfdc/81d8aca98b9b6e54542785d4fe01dfdc4.gif)
![【移动应用开发技术】Android中怎么利用ViewPager实现无限循环_第5页](http://file4.renrendoc.com/view/81d8aca98b9b6e54542785d4fe01dfdc/81d8aca98b9b6e54542785d4fe01dfdc5.gif)
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
【移动应用开发技术】Android中怎么利用ViewPager实现无限循环
本篇文章为大家展示了Android中怎么利用ViewPager实现无限循环,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。AndroidViewPager实现无限循环的实例ViewPager自身并不支持左右无限循环的功能,这里就提供一种方案让AndroidViewPager实现左右无限循环的功能,这里记录下:用于显示的mViews,比数据源mList,多了两个节点元素(头节点0:b和尾节点5:e用于跳转)下图的不带箭头的红线,是mViews根据mList初始化的情况;带箭头的红线是跳转的情况。首先还是布局文件:<RelativeLayout
xmlns:android="/apk/res/android"
xmlns:tools="/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
<android.support.v4.view.ViewPager
android:id="@+id/viewpager"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
</android.support.v4.view.ViewPager>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignBottom="@id/viewpager"
android:background="#33000000"
android:orientation="vertical"
android:padding="5dip"
>
<TextView
android:id="@+id/tv_image_description"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:text="第一个引导页面"
android:textColor="@android:color/white"
android:textSize="14sp"
/>
<LinearLayout
android:id="@+id/ll_points"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="5dip"
android:layout_gravity="center_horizontal"
android:orientation="horizontal"
>
</LinearLayout>
</LinearLayout>
</RelativeLayout>接下来是MainActivity:package
com.example.viewpagertest;
import
java.util.ArrayList;
import
java.util.List;
import
android.app.Activity;
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.View;
import
android.view.ViewGroup;
import
android.widget.ImageView;
public
class
MainActivity
extends
Activity
implements
OnPageChangeListener
{
private
List<ImageView>
imageViewList;
private
ViewPager
mViewPager;
@Override
protected
void
onCreate(Bundle
savedInstanceState)
{
super.onCreate(savedInstanceState);
setView();
initView();
}
public
void
setView()
{
setContentView(R.layout.activity_splash_viewpager);
}
public
void
initView()
{
mViewPager
=
(ViewPager)
findViewById(R.id.viewpager);
prepareData();
ViewPagerAdapter
adapter
=
new
ViewPagerAdapter();
mViewPager.setAdapter(adapter);
mViewPager.setOnPageChangeListener(this);
}
private
void
prepareData()
{
imageViewList
=
new
ArrayList<ImageView>();
int[]
imageResIDs
=
getImageResIDs();
ImageView
iv;
for
(int
i
=
0;
i
<
imageResIDs.length;
i++)
{
iv
=
new
ImageView(this);
iv.setBackgroundResource(imageResIDs[i]);
imageViewList.add(iv);
}
}
/**
*
在此处本来是5张图片,现在在数组首尾各加了一张图
*
@return
*/
private
int[]
getImageResIDs()
{
return
new
int[]{
R.drawable.pic_02,
R.drawable.bg1,
R.drawable.bg2,
R.drawable.bg3,
R.drawable.pic_01,
R.drawable.pic_02,
R.drawable.bg1,
};
}
class
ViewPagerAdapter
extends
PagerAdapter
{
@Override
public
int
getCount()
{
return
imageViewList.size();
}
/**
*
判断出去的view是否等于进来的view
如果为true直接复用
*/
@Override
public
boolean
isViewFromObject(View
arg0,
Object
arg1)
{
return
arg0
==
arg1;
}
/**
*
销毁预加载以外的view对象,
会把需要销毁的对象的索引位置传进来就是position
*/
@Override
public
void
destroyItem(ViewGroup
container,
int
position,
Object
object)
{
container.removeView(imageViewList.get(position));
}
/**
*
创建一个view
*/
@Override
public
Object
instantiateItem(ViewGroup
container,
int
position)
{
container.addView(imageViewList.get(position));
return
imageViewList.get(position);
}
}
@Override
public
void
onPageScrollStateChanged(int
arg0)
{
}
@Override
public
void
onPageScrolled(int
arg0,
float
arg1,
int
arg2)
{
}
@Override
public
void
onPageSelected(int
position)
{
if
(
imageViewList.size()
>
1)
{
//多于1,才会循环跳转
if
(
position
<
1)
{
//首位之前,跳转到末尾(N)
position
=
5;
mViewPager.setCurrentItem(position,false);
}
else
if
(
position
>
5)
{
//末位之后,跳转到首位(1)
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论