先付上运行结果

这画质  o(︶︿︶)o 唉。。

至于左右循环滑动的原理就是把viewpager相关的代码改成无限循环。 需要自定义ViewPagerAdapter

layout布局:

                                                                                        


MainActivity

package com.example.viewpager;import java.util.ArrayList;import java.util.List;import android.os.Bundle;import android.app.Activity;import android.support.v4.view.ViewPager;import android.support.v4.view.ViewPager.OnPageChangeListener;import android.util.Log;import android.view.View;import android.view.View.OnClickListener;import android.view.ViewGroup.LayoutParams;import android.view.Window;import android.widget.ImageView;import android.widget.ImageView.ScaleType;public class MainActivity extends Activity implements OnPageChangeListener,OnClickListener {private List list_image = new ArrayList();private ViewPager pager;private int img[] = { R.drawable.beauty1, R.drawable.beauty2,R.drawable.beauty3, R.drawable.beauty4, R.drawable.beauty5,R.drawable.beauty6, R.drawable.beauty7, R.drawable.beauty8,R.drawable.beauty9 };private ImageView point[];private int pointId[] = { R.id.imagePoint1, R.id.imagePoint2,R.id.imagePoint3, R.id.imagePoint4, R.id.imagePoint5,R.id.imagePoint6, R.id.imagePoint7, R.id.imagePoint8,R.id.imagePoint9 };@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);requestWindowFeature(Window.FEATURE_NO_TITLE);setContentView(R.layout.activity_main);pager = (ViewPager) findViewById(R.id.pager);initData();initPoint();MyViewPagerAdapter adapter = new MyViewPagerAdapter(list_image,img.length);pager.setAdapter(adapter);pager.setOnPageChangeListener(this);// 这个是最主要的 为了使pager能够循环切换 初始的位置较大一点pager.setCurrentItem(img.length * 100);}// 初始化索引 并且为其添加点击事件private void initPoint() {// TODO Auto-generated method stubpoint = new ImageView[img.length];for (int i = 0; i < img.length; i++) {point[i] = (ImageView) findViewById(pointId[i]);point[i].setOnClickListener(this);point[i].setTag(i);}}// 初始化list集合private void initData() {// TODO Auto-generated method stubfor (int i : img) {ImageView imageView = new ImageView(this);LayoutParams params = new LayoutParams(LayoutParams.MATCH_PARENT,LayoutParams.MATCH_PARENT);imageView.setImageResource(i);imageView.setScaleType(ScaleType.FIT_XY);imageView.setLayoutParams(params);list_image.add(imageView);}}/* * 改变索引的背景图片 */private void pointChange(int position) {position = position % (img.length);for (int i = 0; i < img.length; i++) {point[i].setImageResource(R.drawable.page_unchoose);}point[position].setImageResource(R.drawable.page_choose);}@Overridepublic void onPageScrollStateChanged(int arg0) {// TODO Auto-generated method stub}@Overridepublic void onPageScrolled(int arg0, float arg1, int arg2) {// TODO Auto-generated method stub}@Overridepublic void onPageSelected(int position) {// TODO Auto-generated method stubpointChange(position);}/* * 索引的点击事件,点击后对应的索引变色 并且图片切换到相应的图片 */@Overridepublic void onClick(View v) {// TODO Auto-generated method stubint position = (Integer) v.getTag();pointChange(position);/* * try----catch捕捉异常 第一次程序一直崩溃 加了这个就好多了  * 我想着应该是pager已经添加了这张图片 执行这个语句会再添加一次 * 只是我认为的。。 */try {pager.setCurrentItem(pager.getCurrentItem()/img.length*img.length + position);} catch (Exception e) {}}}

自定义的ViewPagerAdapter

package com.example.viewpager;import java.util.ArrayList;import java.util.List;import android.support.v4.view.PagerAdapter;import android.util.Log;import android.view.View;import android.view.ViewGroup;public class MyViewPagerAdapter extends PagerAdapter {private List list_image = new ArrayList();private int imgLenth;public MyViewPagerAdapter(List list_image, int imgLenth) {this.list_image = list_image;this.imgLenth = imgLenth;}@Overridepublic int getCount() {// TODO Auto-generated method stubreturn 10000;}@Overridepublic boolean isViewFromObject(View arg0, Object arg1) {// TODO Auto-generated method stubreturn arg0 == arg1;}@Overridepublic Object instantiateItem(ViewGroup container, int position) {// TODO Auto-generated method stub//取余很重要呀 list集合里面就那么几张图片container.addView(list_image.get(position % imgLenth));return list_image.get(position % imgLenth);}@Overridepublic void destroyItem(ViewGroup container, int position, Object object) {// TODO Auto-generated method stub//同上container.removeView(list_image.get(position % imgLenth));}}

发现有个bug  而我不能解决 。。。

滑动没有问题 可是当我点击索引的时候 偶尔会出现空白的情况 这时候再滑动一下就出来了  不知道为什么 debug了一下午。。 等我解决了 在更新一下~


更多相关文章

  1. 2D翻转
  2. android 无线启动过程分析
  3. Android拍照,照片会自己旋转
  4. (4.2.0)GitHub开源项目收集
  5. android手势实现图片的拖动和缩放效果
  6. Android(安卓)Glide图片加载框架介绍
  7. S5PV210 Android(安卓)CAMERA设置照片大小
  8. android图片缓存
  9. 【技术调研】WebP格式在Android平台上的应用

随机推荐

  1. 字符串和数组api操作学习实践
  2. 想做跨境电商,不会英语应该怎样入行?
  3. 访问器属性原理及获取DOM元素方法
  4. classList对象与用blur事件进行表单非空
  5. js操作class和使用blur事件进行表单非空
  6. html 学习
  7. 字符串与数组常用api学习
  8. JS 函数
  9. 图文列表和课程表
  10. 头发如何上色?SAI头发上色技法!