博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android中ViewPager自动加手动轮播
阅读量:4187 次
发布时间:2019-05-26

本文共 4508 字,大约阅读时间需要 15 分钟。

android中Viewpager自动加手动轮播

小伙伴们在使用App的时候有没有注意到很多App的首页都是可以左右滑动的页面呢?很多App还有绚丽的轮播图广告。那么如何实现这样的效果呢?这些功能可以用ViewPager来完成。别的内容不想多说,直接贴代码。。。

这里写代码片xml布局代码
这里写代码片viewitem布局代码
这里写代码片MyAdapter代码package com.example.cn.bgs.autoviewpagerdemo;import java.util.List;import android.content.Context;import android.support.v4.view.PagerAdapter;import android.view.View;import android.view.ViewGroup;import android.view.ViewParent;import android.widget.BaseAdapter;import android.widget.ImageView;public class MyAdapter extends PagerAdapter{
private Context context; private List
Imglist; public MyAdapter(List
Imglist){ this.context=context; this.Imglist=Imglist; } @Override public int getCount() { // TODO Auto-generated method stub return Integer.MAX_VALUE; } @Override public boolean isViewFromObject(View arg0, Object arg1) { // TODO Auto-generated method stub return arg0==arg1; } @Override public Object instantiateItem(ViewGroup container, int position) { // TODO Auto-generated method stub int p=position%Imglist.size(); ImageView img=Imglist.get(p); ViewParent parent=img.getParent(); if(parent!=null){ ViewGroup group=(ViewGroup) parent; group.removeView(img); } container.addView(Imglist.get(p)); return Imglist.get(p); } @Override public void destroyItem(ViewGroup container, int position, Object object) { }}
这里写代码片MainActivity代码package com.example.cn.bgs.autoviewpagerdemo;import java.util.ArrayList;import java.util.List;import java.util.zip.Inflater;import android.os.Bundle;import android.os.Handler;import android.app.Activity;import android.support.v4.view.PagerAdapter;import android.support.v4.view.ViewPager;import android.support.v4.view.ViewPager.OnPageChangeListener;import android.view.Menu;import android.view.View;import android.widget.ImageView;public class MainActivity extends Activity {
private ViewPager mVp; private int imgs[] = { R.drawable.a, R.drawable.b, R.drawable.c, R.drawable.d }; private boolean isAuto = true;// 是否自动轮播 private boolean isTouch = false;// 是否手动轮播 private List
Imglist; private int currentindex = 0;// 当前的状态 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mVp = (ViewPager) findViewById(R.id.mVp); initViewPager();// 初始化viewPager t.start();// 启动线程 } private void initViewPager() { Imglist = new ArrayList
(); for (int i = 0; i < imgs.length; i++) { View v = View.inflate(this, R.layout.viewitem, null); ImageView img = (ImageView) v.findViewById(R.id.mImg); img.setImageResource(imgs[i]); Imglist.add(img); } MyAdapter adapter = new MyAdapter(Imglist); mVp.setAdapter(adapter); mVp.setOnPageChangeListener(new OnPageChangeListener() { @Override public void onPageSelected(int arg0) { currentindex = arg0; } @Override public void onPageScrolled(int arg0, float arg1, int arg2) { } @Override public void onPageScrollStateChanged(int arg0) { if (arg0 == ViewPager.SCROLL_STATE_IDLE) { isTouch = false; } else { isTouch = true; } } }); } Thread t = new Thread(new Runnable() { @Override public void run() { while (isAuto) { try { t.sleep(3000); handler.sendEmptyMessage(0); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } }); private Handler handler = new Handler() { public void handleMessage(android.os.Message msg) { if (msg.what == 0) { if (isTouch) { return; } currentindex++; mVp.setCurrentItem(currentindex); } }; }; protected void onDestroy() { super.onDestroy(); isAuto = false; };}

代码到这里都写完了,我想你们都明白,就这样吧。。。。。。

至于效果图嘛如下:

这里写图片描述

我还不知道如何把效果展示给大家,代码反正是没问题,哪位大神能教教小弟我,感激不尽,,,,,,好了,别的不多说了,就是这样吧。。。。。。

你可能感兴趣的文章
解决openstack novnc一段时间后自动挂断登录不上问题,novncproxy dead but pid file exists
查看>>
构建OpenStack的云基础架构:ManageIQ(转)
查看>>
云管理软件 ManageIQ(转)
查看>>
CentOS 7.0,启用iptables防火墙(转)
查看>>
DISCUZ浅析之COOKIE篇
查看>>
实战DDD(Domain-Driven Design领域驱动设计:Evans DDD)
查看>>
SSH中各个框架的作用以及Spring AOP,IOC,DI详解
查看>>
openstack juno 配置vmware(vcenter、vsphere)
查看>>
远程debug调试(eclipse)之openstack windows
查看>>
PAAS平台对比:OpenShift VS CloudFoundry【51CTO调研报告】
查看>>
JAX-RS(java restful实现讲解)(转)
查看>>
Spring MVC与JAX-RS比较与分析
查看>>
openstack官方docker介绍
查看>>
头痛与早餐
查看>>
[转]在ASP.NET 2.0中操作数据::创建一个数据访问层
查看>>
Linux命令之chmod详解
查看>>
【java小程序实战】小程序注销功能实现
查看>>
linux下文件夹的创建、复制、剪切、重命名、清空和删除命令
查看>>
pentaho套件
查看>>
软件产品经理职责
查看>>