package com.bwei.viewpager;
import java.util.ArrayList;
import java.util.List;
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.support.v4.view.ViewPager;
import android.support.v4.view.ViewPager.OnPageChangeListener;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.LinearLayout.LayoutParams;
import android.widget.TextView;
import com.bwei.viewpager.adapter.MyPagerAdapter;
import com.bwei.viewpager.bean.ViewBean;
import com.bwei.viewpager.bean.ViewBean.Adlist;
import com.bwei.viewpager.utils.NetWorkUtils;
import com.google.gson.Gson;
public class MainActivity extends Activity {
private List<Adlist> listData;
private ViewPager vp;
private TextView tv_des;
private LinearLayout ll_dot;
//存放的是viewPager下面的点
List<ImageView> ivList= new ArrayList<>();
private Handler handler = new Handler(){
public void handleMessage(android.os.Message msg) {
int num = msg.what;
switch (num) {
case 0:
vp.setAdapter(new MyPagerAdapter(MainActivity.this,listData,handler));
initDot();
//设置初使化的索引
vp.setCurrentItem(1000000);
//让其无限轮播
sendDelayedMessage();
ViewPagerPagerListener();
break;
case 1:
//拿到viewpager当前的索引值
int position = vp.getCurrentItem();
position++;
vp.setCurrentItem(position);
sendDelayedMessage();
break;
default:
break;
}
};
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
vp = (ViewPager) findViewById(R.id.vp);
tv_des = (TextView) findViewById(R.id.tv_des);
ll_dot = (LinearLayout) findViewById(R.id.ll_dot);
//从服务器上返回的json字符串
new Thread(){
public void run() {
String json = NetWorkUtils.getStr();
gsonData(json);
handler.sendEmptyMessage(0);
};
}.start();
}
/**
*
*/
protected void sendDelayedMessage() {
//延时两秒去发送一个消息给handler
handler.sendEmptyMessageDelayed(1, 2000);
}
/**
* viewpager滑动监听事件
*/
protected void ViewPagerPagerListener() {
vp.setOnPageChangeListener(new OnPageChangeListener() {
@Override
public void onPageSelected(int position) {
for (int i = 0; i < ivList.size(); i++) {
if(position%listData.size()==i){
//viewpager的position和下面的占的位置相等,我们就让点变颜色
ivList.get(position%listData.size()).setImageResource(R.drawable.dot_focuse);
}else{
ivList.get(i).setImageResource(R.drawable.dot_normal);
}
tv_des.setText(listData.get(position%listData.size()).title);
}
}
@Override
public void onPageScrolled(int arg0, float arg1, int arg2) {
}
@Override
public void onPageScrollStateChanged(int arg0) {
}
});
}
/**
* 初使化点
*/
protected void initDot() {
if(ivList!=null){
ivList.clear();
}
for (int i = 0; i < listData.size(); i++) {
ImageView iv = new ImageView(this);
if(i==0){
//如果
iv.setImageResource(R.drawable.dot_focuse);
}else{
iv.setImageResource(R.drawable.dot_normal);
}
tv_des.setText(listData.get(i).title);
LayoutParams params = new LayoutParams(20, 20);
//控制两点之间的距离的
params.setMargins(10, 0, 10, 0);
ivList.add(iv);
ll_dot.addView(iv, params);
}
}
/**
* 解析json数据
*/
private void gsonData(String json) {
Gson gson = new Gson();
ViewBean viewBean = gson.fromJson(json, ViewBean.class);
//存放数据的集合
listData = viewBean.data.adlist;
}
}
//适配器
package com.bwei.viewpager.adapter;
import java.util.List;
import android.content.Context;
import android.os.Handler;
import android.support.v4.view.PagerAdapter;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnTouchListener;
import android.view.ViewGroup;
import android.widget.ImageView;
import com.bwei.viewpager.R;
import com.bwei.viewpager.bean.ViewBean.Adlist;
import com.nostra13.universalimageloader.core.ImageLoader;
public class MyPagerAdapter extends PagerAdapter {
Context context;
List<Adlist> listData;
Handler handler;
public MyPagerAdapter(Context context, List<Adlist> listData, Handler handler) {
this.context = context;
this.listData = listData;
this.handler = handler;
}
@Override
public int getCount() {
return Integer.MAX_VALUE;
}
@Override
public boolean isViewFromObject(View arg0, Object arg1) {
return arg0==arg1;
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
container.removeView((View) object);
}
@Override
public Object instantiateItem(ViewGroup container, int position) {
//5 6 7 8
//0%4 = 0
//5%4 = 1
View view = View.inflate(context, R.layout.vp_item, null);
ImageView vp_iv = (ImageView) view.findViewById(R.id.vp_iv);
vp_iv.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN: //手指按下的事件
//全部取消
handler.removeCallbacksAndMessages(null);
break;
case MotionEvent.ACTION_UP: //手指抬起的事件
handler.sendEmptyMessageDelayed(1, 2000);
break;
case MotionEvent.ACTION_CANCEL: //取消的事件
handler.sendEmptyMessageDelayed(1, 2000);
break;
}
//true自己消费,false继续往下传
return true;
}
});
ImageLoader.getInstance().displayImage(listData.get(position%listData.size()).img, vp_iv);
container.addView(view);
return view;
}
}