ViewPager实现广告轮播效果
2015-12-01 10:44
579 查看
xml文件的配置
<pre name="code" class="html"> <android.support.v4.view.ViewPager android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/viewpager" ></android.support.v4.view.ViewPager>
</pre><pre name="code" class="html">
</pre><pre name="code" class="html">
java代码部分
</pre><pre name="code" class="html"><pre name="code" class="java">package com.example.myviewpager; 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.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; /** * 三个方法的执行顺序为:用手指拖动翻页时,最先执行一遍onPageScrollStateChanged(1), * 然后不断执行onPageScrolled,放手指的时候,直接立即执行一次onPageScrollStateChanged * (2),然后立即执行一次onPageSelected,然后再不断执行onPageScrollStateChanged, * 最后执行一次onPageScrollStateChanged(0)。 * * * */ public class MainActivity extends Activity { ViewPager viewPager; List<ImageView> list = new ArrayList<ImageView>(); myAdapter adapter ; private int currentIndex = 0; private int stopIndex = 0; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); viewPager = (ViewPager)findViewById(R.id.viewpager); ImageView view = new ImageView(this); view.setBackgroundResource(R.drawable.kt_banner_1); list.add(view); ImageView view1 = new ImageView(this); view1.setBackgroundResource(R.drawable.kt_banner_2); list.add(view1); ImageView view2 = new ImageView(this); view2.setBackgroundResource(R.drawable.kt_banner_3); list.add(view2); adapter = new myAdapter(list); //设置监听事件,每翻转一张图片,重新启动startGo()函数。翻转到第十张图片,则停止翻转。 viewPager.setOnPageChangeListener(new OnPageChangeListener() { @Override public void onPageSelected(int arg0) { // TODO Auto-generated method stub } @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 if (arg0 == ViewPager.SCROLL_STATE_IDLE) { startGo(); } if (++stopIndex == 10 ) { handler.removeCallbacks(runnable); } } }); viewPager.setAdapter(adapter); startGo(); } //定义handler用于启动和停止轮休视图 private Handler handler = new Handler(); // 通过 viewPager.setCurrentItem(currentIndex)设置,当前视图 private Runnable runnable = new Runnable() { @Override public void run() { if (++currentIndex == list.size()) { currentIndex = 0; } viewPager.setCurrentItem(currentIndex); } }; //启动图片轮询函数 private void startGo() { handler.postDelayed(runnable, 3000); }; // viewpager的适配器 class myAdapter extends PagerAdapter { public myAdapter(List<ImageView> list) { super(); this.list = list; } List<ImageView> list; @Override public int getCount() { // TODO Auto-generated method stub return list.size(); } @Override public boolean isViewFromObject(View arg0, Object arg1) { // TODO Auto-generated method stub return arg0 == arg1; } @Override public void destroyItem(ViewGroup container, int position, Object object) { // TODO Auto-generated method stub container.removeView(list.get(position)); } @Override public Object instantiateItem(ViewGroup container, int position) { // TODO Auto-generated method stub container.addView(list.get(position)); return list.get(position); } } }
相关文章推荐
- Js计算指定日期加上多少天、加多少月、加多少年的日期
- hadoop中联结不同来源数据
- php生成二维码类库
- 关于jQuery实现CheckBox全选只能生效一次的问题
- windows端口映射
- 支持不同的语言
- android gradle compile(一)
- 深圳四条高速路将取消收费 拖车每月省近2000
- C语言求最小公倍数和最大公约数三种算法
- Raspberry Pi B+ 实验
- 响铃:互联网金融理财端寡头时代来临,到底谁该被剩下来?
- Java快速教程
- 如何将GPS数据转换成KML数据?使用JAK的例子之二
- 第六周实践项目3—括号的匹配
- git 修复 bug 的基本流程
- C#_Assembly-Reflection_程序集与反射 练习<一> 记事本插件编写
- 每天一个linux命令(15):whereis 命令
- Android的Canvas、Bitmap、Drawable和Paint
- PHP下载txt文件到浏览器
- android 设置系统屏幕亮度