您的位置:首页 > 其它

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);
}

}
}




                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: