package com.example.cuboo.mlcircles.view;
import android.os.Handler;
import android.os.Message;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.view.View;
import android.view.ViewGroup;
import android.view.animation.Animation;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;
import com.example.cuboo.mlcircles.R;
import java.util.ArrayList;
import java.util.Timer;
import java.util.TimerTask;
public class Images_home_ad implements ViewPager.OnPageChangeListener {
private ViewPager viewPager;
private ImageView[] imgs;
private ArrayList<View> arrayList;
private PagerAdapter adapter;
private int[] setmImgID;
private int[] ids;
private int round = 0;
private static final int START_VIEW = 0x000;
private static final int STOP_VIEW = 0x001;
private static final int UPDATE_VIEW = 0x002;
private static final int RECORD_VIEW = 0x003;
public Images_home_ad(View view) {
arrayList = new ArrayList<View>();
init_data(view);
//获得id
viewPager = (ViewPager) view.findViewById(R.id.ll_images_home).findViewById(R.id.images_home_viewpager);
//实现pageradapter匿名类
adapter = new PagerAdapter() {
@Override
public int getCount() {
///return arrayList.size();
//向左右滑动
return Integer.MAX_VALUE;
}
@Override
public boolean isViewFromObject(View view, Object object) {
return view == object;
}
@Override
public Object instantiateItem(ViewGroup container, int position) {
// container.addView(arrayList.get(position));
// return arrayList.get(position);
// 因为实际只有几个页面但是我们要无限循环,所以取模计算出当前的是第几个页面
int i = position % arrayList.size();
//向左右滑动
container.addView(arrayList.get(i));
return arrayList.get(i);
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
// container.removeView(arrayList.get(position));
//向左右滑动
((ViewPager)container).removeView(arrayList.get(position % arrayList.size()));
}
};
viewPager.setAdapter(adapter);
//设置viewpager监听以改变原点颜色
viewPager.addOnPageChangeListener(this);
Init_imgs(view);
/*
*第一次执行发送消息使得图片轮播
*/
mHandler.sendEmptyMessage(START_VIEW);
}
/*
*周期性执行轮播图片
*/
private Handler mHandler = new Handler(){
@Override
public void handleMessage(Message msg) {
switch (msg.what){
case START_VIEW:
mHandler.sendEmptyMessageDelayed(UPDATE_VIEW,5000);
break;
case STOP_VIEW:
mHandler.removeMessages(UPDATE_VIEW);
break;
case UPDATE_VIEW:
round++; //必须先加1 到下一位置
viewPager.setCurrentItem(round);
break;
case RECORD_VIEW:
round = msg.arg1;
break;
default:
break;
}
}
};
private void Init_imgs(View view){
imgs = new ImageView[arrayList.size()];
for (int i = 0; i < arrayList.size();i++){
imgs[i] = (ImageView) view.findViewById(R.id.ll_images_home).findViewById(ids[i]);
}
}
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageSelected(int position) {
//发送消息
mHandler.sendMessage(Message.obtain(mHandler,RECORD_VIEW,position,0));
//改变远点的颜色position % arrayList.size() 循环滑动改变点的颜色
for (int i = 0;i < arrayList.size();i++){
if (position % arrayList.size() == i){
imgs[i].setImageResource(R.drawable.point_selected);
}else {
imgs[i].setImageResource(R.drawable.point);
}
}
}
/*
*根据状态执行发送消息
*/
@Override
public void onPageScrollStateChanged(int state) {
switch (state){
//用户滑动时停止轮播
case ViewPager.SCROLL_STATE_DRAGGING:
mHandler.sendEmptyMessage(STOP_VIEW);
break;
//用户滑动完成时继续轮播
case ViewPager.SCROLL_STATE_IDLE:
mHandler.sendEmptyMessage(START_VIEW);
break;
}
}
//初始化数据
private void init_data(View view){
//获取资源id
ids = new int[]{R.id.images_home_point01,R.id.images_home_point02,
R.id.images_home_point03,R.id.images_home_point04
,R.id.images_home_point05,R.id.images_home_point06};
setmImgID = new int[]{R.raw.ad_images01,R.raw.ad_images02,R.raw.ad_images03,
R.raw.ad_images04,R.raw.ad_images05,R.raw.ad_images06,};
arrayList.add(getView(view,R.layout.images_ad01,setmImgID[0]));
arrayList.add(getView(view,R.layout.images_ad01,setmImgID[1]));
arrayList.add(getView(view,R.layout.images_ad01,setmImgID[2]));
arrayList.add(getView(view,R.layout.images_ad01,setmImgID[3]));
arrayList.add(getView(view,R.layout.images_ad01,setmImgID[4]));
arrayList.add(getView(view,R.layout.images_ad01,setmImgID[5]));
}
//获得加载到ViewPger中的页面和设置图片
public View getView(View view,int layoutID,int imgID){
view = View.inflate(view.getContext(),layoutID,null);
ImageView view1 = (ImageView) view.findViewById(R.id.images_ads01);
view1.setBackgroundResource(imgID);
return view;
}
}
xml:
<?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="142dp"
android:orientation="horizontal">
<ImageView
android:id="@+id/images_ads01"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginRight="4dp"
android:layout_marginLeft="4dp"
android:layout_marginTop="4dp"/>
</LinearLayout>