1.布局:
<LinearLayout ns:android=\"http://schemas.android.com/apk/res/android\"
ns:tools=\"http://schemas.android.com/tools\"
android:layout_width=\"match_parent\"
android:layout_height=\"match_parent\"
android:orientation=\"vertical\" >
<android.support.v4.view.ViewPager
android:id=\"@+id/pager\"
android:layout_width=\"match_parent\"
android:layout_height=\"300dp\" />
<RadioGroup
android:id=\"@+id/radioGroup1\"
android:layout_width=\"match_parent\"
android:layout_height=\"wrap_content\"
android:orientation=\"horizontal\"
android:gravity=\"center\">
</RadioGroup>
</LinearLayout>
2.主方法 MainActivity.java
package com.example.day9a_03_viewpager;
import java.util.ArrayList;
import com.example.day9a_03_viewpager.adapter.MypagerAdapter;
import android.os.Bundle;
import android.os.Handler;
import android.app.Activity;
import android.support.v4.view.ViewPager;
import android.support.v4.view.ViewPager.OnPageChangeListener;
import android.view.Menu;
import android.widget.ImageView;
import android.widget.RadioButton;
import android.widget.RadioGroup;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 1找控件
final RadioGroup radioGroup = (RadioGroup) findViewById(R.id.radioGroup1);
pager = (ViewPager) findViewById(R.id.pager);
// 2数据
int arr[] = { R.drawable.a1, R.drawable.a2, R.drawable.a3,
R.drawable.a4 };
final ArrayList<ImageView> list = new ArrayList<ImageView>();
for (int i = 0; i < arr.length; i++) {
ImageView imageView = new ImageView(MainActivity.this);
// 设置图片
imageView.setImageResource(arr[i]);
// 加入集合
list.add(imageView);
// 11创建小圆点
RadioButton button = new RadioButton(MainActivity.this);
radioGroup.addView(button);
}
// 3适配器
pager.setAdapter(new MypagerAdapter(list));
// 设置小圆点
// 12选中第一个
radioGroup.check(radioGroup.getChildAt(0).getId());
// 13页面滑动小圆点跟着走
pager.setOnPageChangeListener(new OnPageChangeListener() {
@Override
public void onPageSelected(int arg0) {
// 17求膜防止数据超过list.size()
arg0 = arg0 % list.size();
// 14页面切换切换的时候,也切换小圆点的选中
radioGroup.check(radioGroup.getChildAt(arg0).getId());
}
@Override
public void onPageScrolled(int arg0, float arg1, int arg2) {
// 页面滚动
}
@Override
public void onPageScrollStateChanged(int arg0) {
// 滚动状态改变
}
});
// 15实现无限??
// 进入适配器
// 18实现自动轮播
handler.sendEmptyMessageDelayed(0, 2000);
}
Handler handler = new Handler() {
public void handleMessage(android.os.Message msg) {
switch (msg.what) {
case 0:
//19切换界面
//先知道当前展示的是第几个界面,然后得到界面的索引+1=下一个页面
//获取当前展示的界面索引
int currentItem = pager.getCurrentItem()+1;
pager.setCurrentItem(currentItem);
//20实现无限轮播
handler.sendEmptyMessageDelayed(0, 2000);
break;
}
};
};
private ViewPager pager;
}
3.适配器 MypagerAdapter
package com.example.day9a_03_viewpager.adapter;
import java.util.ArrayList;
import android.support.v4.view.PagerAdapter;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
//4继承PagerAdapter
public class MypagerAdapter extends PagerAdapter {
//5 数据属性
ArrayList<ImageView> list;
//6有参构造
public MypagerAdapter(ArrayList<ImageView> list) {
this.list = list;
}
@Override
public int getCount() {
// 7设置页面个数
// return list.size();
//15给适配器返回一个无限大得值
return Integer.MAX_VALUE;
}
@Override
public boolean isViewFrom (View arg0, arg1) {
//8返回
return arg0==arg1;
}
//9调用初始条目的方法
@Override
public instantiateItem(ViewGroup container, int position) {
// 5 %4=1
// 20%4=0
//16求膜防止数据超过list.size()
position=position%list.size();
ImageView imageView = list.get(position);
//把imageview 加到viewpager中
container.addView(imageView);
//最后要返回
return imageView;
}
//10销毁条目
@Override
public void destroyItem(ViewGroup container, int position, ) {
container.removeView((View) );
}
}
继续阅读与本文标签相同的文章
基于情感词典进行情感态度分析
-
人工智能,深度学习和机器学习之间的区别
2026-05-18栏目: 教程
-
助力共享经济,芝麻信用背后的技术| 9月10号栖夜读
2026-05-18栏目: 教程
-
6张图说清楚Tomcat原理及请求流程
2026-05-18栏目: 教程
-
Java程序员面试中最容易答错的8道面试题,你中坑了吗?
2026-05-18栏目: 教程
-
微软Dynamics ERP&CRM 阿云里迁移
2026-05-18栏目: 教程
