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 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_main.xml中