package fmh.bwie.com.rootviewpager; import android.os.Bundle; 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.view.View; import android.view.ViewGroup; import android.widget.ImageView; import android.widget.LinearLayout; import com.google.gson.Gson; import com.nostra13.universalimageloader.core.ImageLoader; import java.util.ArrayList; import java.util.List; import fmh.bwie.com.rootviewpager.bean.Json; import fmh.bwie.com.rootviewpager.utils.Utils; public class MainActivity extends AppCompatActivity { private LinearLayout ll; private ViewPager vp; //路径 String url = "https://api.tianapi.com/wxnew/?key=8d6e3228d25298f13af4fc40ce6c9679&num=6&page=1"; //实例化Handler Handler handler = new Handler(){ @Override public void handleMessage(Message msg) { super.handleMessage(msg); //接收消息值 int what = msg.what; //判断值 switch(what){ //第一种情况: case 0: //获取发送过来的值 String json = (String) msg.obj; //调用方法解析 parse(json); break; case 1: //获取当前显示的页面 int currentItem = vp.getCurrentItem(); //页面增加 currentItem++; //设置当前显示的页面 vp.setCurrentItem(currentItem); //调用发消息的方法 sendMsg(); break; } } }; //创建集合 private List<Json.NewslistBean> newslist = new ArrayList<>(); private ArrayList<ImageView> dlist; private ImageView imageView; //解析Json串的方法 private void parse(String json) { Gson gson = new Gson(); Json fromJson = gson.fromJson(json, Json.class); newslist = fromJson.getNewslist(); MyAdapter myAdapter = new MyAdapter(); vp.setAdapter(myAdapter); dian(); vp.setCurrentItem(100000); sendMsg(); ViewPagerListener(); } //ViewPager的监听事件 private void ViewPagerListener() { vp.setOnPageChangeListener(new ViewPager.OnPageChangeListener() { @Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { } @Override public void onPageSelected(int position) { for (int i = 0; i <dlist.size() ; i++) { if (position%newslist.size()==i){ dlist.get(position%newslist.size()).setImageResource(R.drawable.dot_focuable); }else{ dlist.get(i).setImageResource(R.drawable.dot_normal); } } } @Override public void onPageScrollStateChanged(int state) { } }); } private void sendMsg() { handler.sendEmptyMessageDelayed(1,2000); } private void dian() { dlist = new ArrayList<>(); if (dlist!=null){ dlist.clear(); } for (int i = 0; i < newslist.size(); i++) { imageView = new ImageView(MainActivity.this); if (i==0){ imageView.setImageResource(R.drawable.dot_focuable); }else{ imageView.setImageResource(R.drawable.dot_normal); } LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(20, 20); layoutParams.setMargins(10,0,10,0); ll.addView(imageView,layoutParams); dlist.add(imageView); } } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ll = (LinearLayout)findViewById(R.id.ll); vp = (ViewPager)findViewById(R.id.vp); new Thread(){ @Override public void run() { super.run(); String string = Utils.getString(url); Message message = new Message(); message.obj=string; message.what=0; handler.sendMessage(message); } }.start(); } private 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 Object instantiateItem(ViewGroup container, int position) { ImageView imageView = new ImageView(MainActivity.this); //图片缩放 imageView.setScaleType(ImageView.ScaleType.FIT_XY); ImageLoader.getInstance().displayImage(newslist.get(position%newslist.size()).getPicUrl(),imageView); container.addView(imageView); return imageView; } @Override public void destroyItem(ViewGroup container, int position, Object object) { container.removeView((View) object); } } }
无限轮播
最新推荐文章于 2021-06-18 17:15:59 发布