1 我们经常打开一个App会看到有广告图片轮播的效果,首先上效果图
2 实现的过程
2.1 轮播页面他是一个ViewPager
2.2 然后我们使用RelativeLayout来把小圆点放置在图片上,然后滑动时动态修改小圆点的背景,就产生了滑动的效果
2.3 自动滑动的效果,我们可以利用ScheduledExecutorService这个类来实现,他可以周期性的执行任务,这样就可以自动滑动了
3 要点说明
3.1 public void onPageScrollStateChanged(int arg0) {}
通过网上查找发现当ViewPager页面滑动时,arg0有三种不同的参数
①当arg0 =1使表示手势滑动
②当arg0 =2时表示页面自动滑动
④当arg0 =3,表示滑动到最后一页
3.2 通过这些参数,我们就可以然手动滑动的时候关闭自动滑动功能
3.3 当滑动到最后一面时,把ViewPager当前项设置到第一页
3.4 在写这个功能的时候,把高分辨率的图片放在了自定义的mipmap文件夹下,这样如果图片一些,就会引发内存溢出异常,当图片一大,这样程序就会需要很多的内存来加载,这在android中是不行,所以我们应该把图片放在对应的drawable文件下,就可避免这种情况,系统应该在后台自动处理了
4 下面填出实现的源代码,在最后会有完整源码的下载链接
4.1 MainActivity
import android.app.ActionBar.LayoutParams;
public class MainActivity extends Activity {
private LayoutInflater inflater;
private ViewPager mviewPager;
private LinearLayout dotLayout;//底部Layout布局
private List<ImageView> dotViewList;//用于小圆点图片
private List<ImageView> list;//用于存放轮播效果图片
private int currentItem = 0;//当前页面
boolean isAutoPlay = true;//是否自动轮播
private ScheduledExecutorService scheduledExecutorService;//定时周期执行指定的任务
private Handler handler = new Handler() {
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
if (msg.what == 100) {
mviewPager.setCurrentItem(currentItem);
}
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
inflater = LayoutInflater.from(MainActivity.this);
mviewPager