图片循环滑动

 1 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"  2  xmlns:tools="http://schemas.android.com/tools"  3  android:layout_width="match_parent"  4  android:layout_height="match_parent"  5  tools:context=".MainActivity" >  6  7 <android.support.v4.view.ViewPager  8 android:id="@+id/viewpager"  9  android:layout_width="match_parent" 10  android:layout_height="200dp" /> 11 12 <LinearLayout 13 android:layout_width="match_parent" 14  android:layout_height="wrap_content" 15  android:layout_alignBottom="@id/viewpager" 16  android:background="#33000000" 17  android:orientation="vertical" > 18 19 <!-- 滑动图片下面的文字 --> 20 <TextView 21 android:id="@+id/image_desc" 22  android:layout_width="match_parent" 23  android:layout_height="wrap_content" 24  android:gravity="center" 25  android:text="@string/app_name" 26  android:textColor="@android:color/white" 27  android:textSize="18sp" /> 28 29 <!-- ..... --> 30 <LinearLayout 31 android:id="@+id/point_group" 32  android:orientation="horizontal" 33  android:layout_width="wrap_content" 34  android:layout_gravity="center_horizontal" 35  android:layout_height="wrap_content" > 36 </LinearLayout> 37 38 </LinearLayout> 39 40 </RelativeLayout>

 1 package com.example.testdemo;  2  3 import java.util.ArrayList;  4 import android.app.Activity;  5 import android.os.Bundle;  6 import android.os.Handler;  7 import android.support.v4.view.PagerAdapter;  8 import android.support.v4.view.ViewPager;  9 import android.support.v4.view.ViewPager.OnPageChangeListener;  10 import android.view.View;  11 import android.view.ViewGroup;  12 import android.widget.ImageView;  13 import android.widget.LinearLayout;  14 import android.widget.TextView;  15  16 public class MainActivity extends Activity {  17  18 private ViewPager viewPager;  19 private LinearLayout pointGroup;  20 private TextView iamgeDesc;  21 private ArrayList<ImageView> imageList;  22 // 上一个页面的位置  23 protected int lastPosition;  24 // 判断是否自动滚动  25 private boolean isRunning = false;  26  27 // 图片资源ID  28 private final int[] imageIds = { R.drawable.a, R.drawable.b, R.drawable.c,  29  R.drawable.d, R.drawable.e };  30  31 // 图片标题集合  32 private final String[] imageDescriptions = { "巩俐不低俗,我就不能低俗",  33 "扑树又回来啦!再唱经典老歌引万人大合唱", "揭秘北京电影如何升级", "乐视网TV版大派送", "热血屌丝的反杀" };  34  35  @Override  36 protected void onCreate(Bundle savedInstanceState) {  37 super.onCreate(savedInstanceState);  38  setContentView(R.layout.activity_main);  39  40 viewPager = (ViewPager) findViewById(R.id.viewpager);  41 pointGroup = (LinearLayout) findViewById(R.id.point_group);  42 iamgeDesc = (TextView) findViewById(R.id.image_desc);  43 iamgeDesc.setText(imageDescriptions[0]);  44  45 imageList = new ArrayList<ImageView>();  46 for (int i = 0; i < imageIds.length; i++) {  47  48 // 初始化图片资源  49 ImageView image = new ImageView(this);  50  image.setBackgroundResource(imageIds[i]);  51  imageList.add(image);  52  53 // 添加指示点  54 ImageView point = new ImageView(this);  55 LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(  56  LinearLayout.LayoutParams.WRAP_CONTENT,  57  LinearLayout.LayoutParams.WRAP_CONTENT);  58  59 params.rightMargin = 20;  60  point.setLayoutParams(params);  61  62  point.setBackgroundResource(R.drawable.point_bg);  63 if (i == 0) {  64 point.setEnabled(true);  65 } else {  66 point.setEnabled(false);  67  }  68  pointGroup.addView(point);  69  }  70  71 viewPager.setAdapter(new MyPagerAdapter());  72  73 // viewPager.setCurrentItem(Integer.MAX_VALUE/2 -  74 // (Integer.MAX_VALUE/2%imageList.size())) ;  75  76 viewPager.setOnPageChangeListener(new OnPageChangeListener() {  77  78  @Override  79 /**  80  * 页面切换后调用  81  * position 新的页面位置  82 */  83 public void onPageSelected(int position) {  84  85 position = position % imageList.size();  86  87 // 设置文字描述内容  88  iamgeDesc.setText(imageDescriptions[position]);  89  90 // 改变指示点的状态  91 // 把当前点enbale 为true  92 pointGroup.getChildAt(position).setEnabled(true);  93 // 把上一个点设为false  94 pointGroup.getChildAt(lastPosition).setEnabled(false);  95 lastPosition = position;  96  97  }  98  99  @Override 100 /** 101  * 页面正在滑动的时候,回调 102 */ 103 public void onPageScrolled(int position, float positionOffset, 104 int positionOffsetPixels) { 105  } 106 107  @Override 108 /** 109  * 当页面状态发生变化的时候,回调 110 */ 111 public void onPageScrollStateChanged(int state) { 112 113  } 114  }); 115 116 /* 117  * 自动循环: 1、定时器:Timer 2、开子线程 while true 循环 3、ColckManager 4、 用handler 118  * 发送延时信息,实现循环 119 */ 120 isRunning = true; 121 // handler.sendEmptyMessageDelayed(0, 2000); 122  } 123 124 private Handler handler = new Handler() { 125 public void handleMessage(android.os.Message msg) { 126 // 让viewPager 滑动到下一页 127 viewPager.setCurrentItem(viewPager.getCurrentItem() + 1); 128 if (isRunning) { 129 handler.sendEmptyMessageDelayed(0, 2000); 130  } 131  }; 132  }; 133 134 protected void onDestroy() { 135 isRunning = false; 136  }; 137 138 private class MyPagerAdapter extends PagerAdapter { 139 140  @Override 141 // 获得页面的总数 142 public int getCount() { 143 return Integer.MAX_VALUE; 144  } 145 146  @Override 147 /** 148  * 获得相应位置上的view 149  * container view的容器,其实就是viewpager自身 150  * position 相应的位置 151 */ 152 public Object instantiateItem(ViewGroup container, int position) { 153 System.out.println("instantiateItem ::" + position); 154 // 给 container 添加一个view 155 container.addView(imageList.get(position % imageList.size())); 156 // 返回一个和该view相对的object 157 return imageList.get(position % imageList.size()); 158  } 159 160 @Override // 判断 view和object的对应关系 161 public boolean isViewFromObject(View view, Object object) { 162 if (view == object) { 163 return true; 164 } else { 165 return false; 166  } 167  } 168 169 @Override // 销毁对应位置上的object 170 public void destroyItem(ViewGroup container, int position, Object object) { 171 System.out.println("destroyItem ::" + position); 172  container.removeView((View) object); 173 object = null; 174  } 175  } 176 177 }

更多相关文章

  1. android 页面停几秒后跳转
  2. Android 仿微信之(二)--主页面实现篇
  3. 在TextView上显示图片信息
  4. 在android中实现两张图片对比
  5. Android 获取网络图片方法
  6. Android代码总结,Sdcard和图片相关
  7. android取得所在位置的经纬度

随机推荐

  1. 将类对象转换为JSON Python - EasyPost
  2. 名称`posix`在何处/如何通过import语句解
  3. python解压zip脚本
  4. 机器学习、Python和数学学习资料汇总
  5. 计算机视觉相关代码片段(Python)
  6. [python]python学习笔记(七)——加密
  7. Django的模型。在多个模型类和管理中关联
  8. 如何强制python打印指定时区的numpy date
  9. python 网络编程02
  10. Python安装模块(numpy等)问题的两种解决办