效果图:
添加依赖:
compile 'com.github.bumptech.glide:glide:3.7.0'
AndroidManifest.xml中添加网络权限
<uses-permission android:name="android.permission.INTERNET" />MainActivity中:
activity_main.xml中package com.example.viewpagertest3; import android.app.Activity; import android.os.Handler; import android.os.Message; import android.support.v4.view.PagerAdapter; import android.support.v4.view.ViewPager; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; import android.widget.LinearLayout; import com.bumptech.glide.Glide; import java.util.ArrayList; import java.util.List; /** * viewPager自动滑动和手动滑动 */ public class MainActivity extends Activity { // viewPager private ViewPager viewPager; // 存放图片资源的list private List<String> imgResList; // 装view的数组 private View[] viewArray; // 下面小点的外部布局 private LinearLayout llContainer; // 存放小点的数组 private ImageView[] tips; // private boolean isIdeal=true; // private boolean isSend=true; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initView(); myOnclick(); } /** * 初始化控件 */ private void initView() { viewPager = (ViewPager)findViewById(R.id.viewPager); imgResList=new ArrayList<>(); imgResList.add("http://auto.gasgoo.com/Upload/Files/201303080456241article.jpg"); imgResList.add("http://img2.niutuku.com/desk/1208/0650/bizhi-0650-15882.jpg"); imgResList.add("http://imgsrc.baidu.com/imgad/pic/item/09fa513d269759ee991ed0e8b8fb43166d22df43.jpg"); imgResList.add("http://imgsrc.baidu.com/imgad/pic/item/43a7d933c895d1439284730579f082025aaf0721.jpg"); viewArray = new View[imgResList.size()]; // 实例化布局,加载图片,并放到数组中 for (int i = 0; i < viewArray.length; i++) { // 存放布局 LayoutInflater layoutInflater = getLayoutInflater(); View view=layoutInflater.inflate(R.layout.activity_lay,null); ImageView imageView = (ImageView) view.findViewById(R.id.imageView); Glide.with(this).load(imgResList.get(i)).into(imageView); viewArray[i]=view; } // 设置小点的布局 llContainer = (LinearLayout)findViewById(R.id.llContainer); // 存放小点的的数组 tips = new ImageView[imgResList.size()]; for (int i = 0; i < tips.length; i++) { ImageView imageView = new ImageView(this); imageView.setLayoutParams(new ViewGroup.LayoutParams(50,50)); tips[i] = imageView; // 刚开始第一个为亮色 if (i == 0) { tips[i].setBackgroundResource(R.drawable.page_indicator_focused); } else { tips[i].setBackgroundResource(R.drawable.page_indicator_unfocused); } llContainer.addView(imageView); } viewPager.setAdapter(new MyAdapter()); } private Handler handler = new Handler() { public void handleMessage(Message msg) { // 自动滑动 int position = viewPager.getCurrentItem(); Log.e("111", "shou dao xiao xi position"+position); position++; viewPager.setCurrentItem(position); } }; /** * 适配器绑定图片 */ public class MyAdapter extends PagerAdapter { @Override public int getCount() { // 无限大 return Integer.MAX_VALUE; } @Override public boolean isViewFromObject(View view, Object object) { return view==object; } @Override public void destroyItem(ViewGroup container, int position, Object object) { // 取余 View view = viewArray[position % viewArray.length]; container.removeView(view); } @Override public Object instantiateItem(ViewGroup container, int position) { // 取余 View view = viewArray[position % viewArray.length]; container.addView(view); return view; } } /** * 点击事件 */ private void myOnclick(){ // 监听滑动 viewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() { // 这个方法会在屏幕滚动过程中不断被调用。 @Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { } // 代表哪个页面被选中。 @Override public void onPageSelected(int position) { setImageBackground(position % viewArray.length); } // 这个方法在手指操作屏幕的时候发生变化。有三个值:0(END),1(PRESS) , 2(UP) 。 @Override public void onPageScrollStateChanged(int state) { // 0(END),1(PRESS) , 2(UP) // 手指按下时state=1 // 当手按下时,不要自动滑动 Log.e("111", "state>>>" + state); if (state == 1) { isSend = false; } else { isSend = true; } } }); new Thread() { @Override public void run() { super.run(); try { // isIdeal设置为false时会关掉线程 while (isIdeal) { Thread.sleep(3000); // isSend 控制发消息 if (isSend) { handler.sendEmptyMessage(1); } } } catch (InterruptedException e) { e.printStackTrace(); } } }.start(); } /** *小圆点自动切换 */ private void setImageBackground(int selectItems) { for (int i = 0; i < tips.length; i++) { if (i == selectItems) { tips[i].setBackgroundResource(R.drawable.page_indicator_focused); } else { tips[i].setBackgroundResource(R.drawable.page_indicator_unfocused); } } } @Override protected void onDestroy() { super.onDestroy(); // 关闭线程 isIdeal=false; } }
activity_lay.xml中<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.example.viewpagertest3.MainActivity" android:orientation="vertical" > <RelativeLayout android:layout_width="match_parent" android:layout_height="wrap_content"> <android.support.v4.view.ViewPager android:id="@+id/viewPager" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center"> </android.support.v4.view.ViewPager> <RelativeLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="vertical" android:layout_marginBottom="30dp" > <LinearLayout android:id="@+id/llContainer" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:layout_marginBottom="30dp" android:gravity="center_horizontal" android:orientation="horizontal"> </LinearLayout> </RelativeLayout> </RelativeLayout> </LinearLayout>
源码下载<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <ImageView android:id="@+id/imageView" android:layout_width="fill_parent" android:layout_height="fill_parent" android:src="@drawable/b1" android:scaleType="fitXY" /> </LinearLayout>
ViewPadeDemo----viewpagertest3
http://download.csdn.net/detail/zhaihaohao1/9911113
参考文章:
http://blog.csdn.net/xiaanming/article/details/8966621