viewpager 无限轮播
来源:互联网 发布:vb提取网页数据 编辑:程序博客网 时间:2024/05/14 15:48
<?xml version="1.0" encoding="utf-8"?><selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:drawable="@drawable/point_red" android:state_enabled="true"></item> <item android:drawable="@drawable/point_green" android:state_enabled="false"></item></selector>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="oval"> <solid android:color="@android:color/holo_green_light"></solid></shape>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="oval"> <solid android:color="@android:color/holo_red_light"></solid></shape>
布局:
<android.support.v4.view.ViewPager android:id="@+id/vp" android:layout_width="match_parent" android:layout_height="480dp"/><LinearLayout android:id="@+id/ll_point" android:layout_width="match_parent" android:layout_height="20dp" android:orientation="horizontal" android:layout_alignBottom="@id/vp" android:layout_marginBottom="20dp" android:gravity="center"></LinearLayout>
代码:
public class MainActivity extends AppCompatActivity { private ViewPager vp; private LinearLayout ll_point; private List<ImageView> images = new ArrayList<>(); private int [] x = new int[]{R.mipmap.a,R.mipmap.b,R.mipmap.c}; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //找控件 initView(); initViewPager(); } private void initView() { vp = (ViewPager) findViewById(R.id.vp); ll_point = (LinearLayout) findViewById(R.id.ll_point); } private void initViewPager() { for (int i = 0; i < x.length; i++) { ImageView imageView = new ImageView(MainActivity.this); imageView.setImageResource(x[i]); images.add(imageView); } MyAdapter adapter = new MyAdapter(); vp.setAdapter(adapter); initPoint(); vp.setOnPageChangeListener(new ViewPager.OnPageChangeListener() { @Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { } @Override public void onPageSelected(int position) { //获取小圆点数据 int count = ll_point.getChildCount(); for (int i = 0; i < count; i++) { View view = ll_point.getChildAt(i); //页面改变时选中小圆点 view.setEnabled(i == position ? false : true); } } @Override public void onPageScrollStateChanged(int state) { } }); } private void initPoint() { for (int i = 0; i < images.size(); i++) { // Toast.makeText(MainActivity.this, "图片个数:"+images.size(), Toast.LENGTH_SHORT).show(); //创建小圆点控件 View view = new View(this); //设置背景选择器 view.setBackgroundResource(R.drawable.point_bg); //创建小圆点大小 LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(20, 20); //创建小圆点间距 params.rightMargin = 10; //把小圆点添加容器 ll_point.addView(view, params); view.setTag(i); } //设置第一个为默认选择 View view = ll_point.getChildAt(0); view.setEnabled(false); } //定义handler private Handler handler = new Handler(); //开启 public void startSwitch() { handler.postDelayed(new Runnable() { @Override public void run() { int item = vp.getCurrentItem(); if (item == vp.getAdapter().getCount() - 1) { item = 0; } else { item++; } vp.setCurrentItem(item); handler.postDelayed(this, 2000); } }, 2000); } //停止 public void stopSwitch() { handler.removeCallbacksAndMessages(null); } //创建适配器 private class MyAdapter extends PagerAdapter { @Override public int getCount() { return images.size(); } @Override public boolean isViewFromObject(View view, Object object) { return view == object; } @Override public Object instantiateItem(ViewGroup container, int position) { ImageView imageView = images.get(position); container.addView(imageView); return imageView; } @Override public void destroyItem(ViewGroup container, int position, Object object) { container.removeView(images.get(position)); } } @Override protected void onResume() { super.onResume(); startSwitch(); } @Override protected void onPause() { super.onPause(); stopSwitch(); }}
另一种
@Overridepublic void onPageSelected(int position) { for (int i = 0;i<images.size();i++){ View view = ll.getChildAt(i); view.setEnabled(i == position%images.size()?false:true); }}
private class MyAdapter extends PagerAdapter { @Override public int getCount() { return Integer.MAX_VALUE; }
@Overridepublic Object instantiateItem(ViewGroup container, int position) { ImageView imageView = images.get(position%images.size()); container.addView(imageView); return imageView;}
public void startSwitch(){ handler.postDelayed(new Runnable() { @Override public void run() { int currentItem = vp.getCurrentItem(); currentItem++; vp.setCurrentItem(currentItem); handler.postDelayed(this,2000); } },2000);}
0 0
- viewpager无限轮播
- Viewpager无限轮播
- Viewpager无限轮播
- ViewPager无限轮播
- ViewPager无限轮播
- ViewPager无限轮播
- VieWPager无限轮播
- viewpager无限轮播
- viewpager无限轮播
- viewpager无限轮播
- viewpager 无限轮播
- ViewPager无限轮播
- ViewPager无限轮播
- ViewPager 无限轮播
- ViewPager无限轮播
- ViewPager无限轮播
- viewpager 无限轮播
- ViewPager无限轮播
- 【CodeForces 351A】Jeff and Rounding(思维)
- FreeMarker基础入门知识4 -自定义指令
- api安全
- Web前端面试题目汇总
- python 七牛工具包 中文路径乱码解决方案
- viewpager 无限轮播
- Java开发,Tomcat实现热部署,避免每次修改代码都重启
- Ubuntu16.04 CUDA 8.0 OpenCV 3.2.0 Darknet
- 如何处理难以复现的问题
- mybatis实现物理分页
- MySQL中字符串与数字比较的坑
- 基于升序链表的定时器
- 华为oj中级 密码验证合格程序
- android屏幕适配相关整理