一、布局:
activity_main.
<RelativeLayout 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\"
tools:context=\"${relativePackage}.${activityClass}\" >
<android.support.v4.view.ViewPager
android:id=\"@+id/viewpager\"
android:layout_width=\"match_parent\"
android:layout_height=\"match_parent\"
/>
<RadioGroup
android:id=\"@+id/group\"
android:layout_width=\"wrap_content\"
android:layout_height=\"wrap_content\"
android:layout_alignParentBottom=\"true\"
android:layout_centerHorizontal=\"true\"
android:layout_marginBottom=\"116dp\"
android:orientation=\"horizontal\" >
<RadioButton
android:id=\"@+id/but1\"
android:layout_width=\"wrap_content\"
android:layout_height=\"wrap_content\"
android:checked=\"true\" />
<RadioButton
android:id=\"@+id/but2\"
android:layout_width=\"wrap_content\"
android:layout_height=\"wrap_content\" />
<RadioButton
android:id=\"@+id/but3\"
android:layout_width=\"wrap_content\"
android:layout_height=\"wrap_content\" />
<RadioButton
android:id=\"@+id/but4\"
android:layout_width=\"wrap_content\"
android:layout_height=\"wrap_content\" />
</RadioGroup>
</RelativeLayout>
二、主方法:MainActivity.java.
package com.example.day03_viewpager_demo;
import java.util.ArrayList;
import java.util.List;
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.support.v4.view.ViewPager;
import android.support.v4.view.ViewPager.OnPageChangeListener;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.Button;
import android.widget.RadioGroup;
import android.widget.RadioGroup.OnCheckedChangeListener;
public class MainActivity extends Activity {
private ViewPager viewPager;
private List<Integer> list;
private RadioGroup radioGroup;
private int i;
private Handler handler = new Handler(){
public void handleMessage(android.os.Message msg) {
//设置没过3秒之后切换的图片
i++;
viewPager.setCurrentItem(i);
handler.sendEmptyMessageDelayed(0, 3000);
};
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//1.获取资源ID
viewPager = (ViewPager) findViewById(R.id.viewpager);
radioGroup = (RadioGroup) findViewById(R.id.group);
//2.添加数据源
list = new ArrayList<Integer>();
list.add(R.drawable.mao);
list.add(R.drawable.mao2);
list.add(R.drawable.zhu);
list.add(R.drawable.zhu1);
//3.创建适配器
ViewPagerAdapter adapter = new ViewPagerAdapter(this, list,handler);
viewPager.setAdapter(adapter);
//设置图片默认的位置
viewPager.setCurrentItem(list.size()*10000);
//得到当前的图片的位置
i = viewPager.getCurrentItem();
//执行handler
handler.sendEmptyMessageDelayed(0, 3000);
//对ViewPager设置页选中的监听
viewPager.setOnPageChangeListener(new OnPageChangeListener() {
//页面选中 arg0 选择当前页的下标
@Override
public void onPageSelected(int arg0) {
// TODO Auto-generated method stub
switch (arg0%list.size()) {//3
case 0:
radioGroup.check(R.id.but1);
break;
case 1:
radioGroup.check(R.id.but2);
break;
case 2:
radioGroup.check (R.id.but3);
break;
case 3:
radioGroup.check(R.id.but4);
break;
default:
break;
}
}
//滑动
@Override
public void onPageScrolled(int arg0, float arg1, int arg2) {
// TODO Auto-generated method stub
}
//滑动改变
@Override
public void onPageScrollStateChanged(int arg0) {
// TODO Auto-generated method stub
}
});
}
}
三、适配器:ViewPagerAdapter.
package com.example.day03_viewpager_demo;
import java.util.List;
import android.content.Context;
import android.os.Handler;
import android.support.v4.view.PagerAdapter;
import android.util.Log;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnTouchListener;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.Toast;
public class ViewPagerAdapter extends PagerAdapter{
private Context context;
private List<Integer> list;
private Handler handler;
//接受Activity的值
public ViewPagerAdapter(Context context, List<Integer> list, Handler handler) {
super();
this.context = context;
this.list = list;
this.handler = handler;
}
//条目的总数
@Override
public int getCount() {
// TODO Auto-generated method stub
return Integer.MAX_VALUE; //1.将图片的一个总数 设置最大
}
//得到的视图与添加的视图是否一致
@Override
public boolean isViewFrom (View arg0, arg1) {
// TODO Auto-generated method stub
return arg0 == arg1;
}
//添加 super.instantiateItem(container, position) 底层抛出的是异常
@Override
public instantiateItem(ViewGroup container, int position) {
// TODO Auto-generated method stub
//创建ImageView
ImageView imageView = new ImageView(context);
//设置图片
imageView.setImageResource(list.get(position%list.size()));
//触摸事件
imageView.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
// TODO Auto-generated method stub
//得到事件
int action = event.getAction();
switch (action) {
case MotionEvent.ACTION_DOWN://按下
handler.removeCallbacksAndMessages(null);
Log.i(\"TAG\", \"按下\");
break;
case MotionEvent.ACTION_MOVE://滑动
handler.removeCallbacksAndMessages(null);
Log.i(\"TAG\", \"滑动\");
break;
case MotionEvent.ACTION_CANCEL://非人为原因结束本次事件
handler.sendEmptyMessageDelayed(0, 3000);
Log.i(\"TAG\", \"非人为原因结束本次事件\");
break;
case MotionEvent.ACTION_UP://抬起View(与DOWN对应)
handler.sendEmptyMessageDelayed(0, 3000);
Log.i(\"TAG\", \"抬起View\");
break;
default:
break;
}
return true;//表示消费了触摸事件,onTouch之后才执行 ,这里被消费了,所以,相关的点击事件不会执行。
}
});
//将图片添加到组中
container.addView(imageView);
return imageView;
}
//删除 接受的就是图片
@Override
public void destroyItem(ViewGroup container, int position, ) {
// TODO Auto-generated method stub
container.removeView((View) );
}
}
继续阅读与本文标签相同的文章
开源大数据周刊-第71期
极客优品:如何正确引导消费者的购买行为?
-
小白学Python | 最简单的Django 简明教程
2026-05-18栏目: 教程
-
Jvm-Sandbox源码分析--模块刷新和卸载
2026-05-18栏目: 教程
-
MyCat数据库的基础配置及使用
2026-05-18栏目: 教程
-
阿里巴巴资深技术专家雷卷:值得开发者关注的 Java 8 后时代的语言特性
2026-05-18栏目: 教程
-
java注解
2026-05-18栏目: 教程
