package com.example.wuxianlunbo; 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.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.io.BufferedReader; import java.io.InputStream; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.MalformedURLException; import java.net.URL; import java.net.URLConnection; import java.util.List; public class MainActivity extends AppCompatActivity { String path="http://www.meirixue.com/api.php?c=index&a=index"; private ViewPager vp; private List<User.DataBean.AdlistBean> adlist; private Madapter madapter; //主线程 Handler handler=new Handler(){ @Override public void handleMessage(Message msg) { int what=msg.what; switch (what){ case 0: Object obj = msg.obj;//取出值 String s = obj.toString(); Gson gson = new Gson(); User user = gson.fromJson(s, User.class); adlist = user.getData().getAdlist(); //添加适配器 madapter = new Madapter(); vp.setAdapter(madapter); //设置延时 vp.setCurrentItem(1000); handler.sendEmptyMessageDelayed(1,2000); break; case 1: int currentItem = vp.getCurrentItem(); currentItem++; vp.setCurrentItem(currentItem); handler.sendEmptyMessageDelayed(1,2000);//延时 break; } } }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); vp =(ViewPager)findViewById(R.id.vp); init();//添加数据 } private void init() { //子线程 new Thread(){ @Override public void run() { try { URL url = new URL(path); HttpURLConnection urlConnection = (HttpURLConnection)url.openConnection(); int responseCode = urlConnection.getResponseCode(); if (responseCode==200){ InputStream inputStream = urlConnection.getInputStream(); BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream)); StringBuilder builder = new StringBuilder(); String string=""; while ((string=bufferedReader.readLine())!=null){ builder.append(string); } String s = builder.toString(); //创建 Message me = new Message(); me.obj=s; me.what=0; handler.sendMessage(me); } } catch (Exception e) { e.printStackTrace(); } } }.start(); } //ViewPager的适配器 class Madapter 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 img = new ImageView(MainActivity.this); img.setScaleType(ImageView.ScaleType.FIT_XY);//缩放 ImageLoader.getInstance().displayImage(adlist.get(position%adlist.size()).getImg(),img); container.addView(img); return img; } @Override//销毁 public void destroyItem(ViewGroup container, int position, Object object) { container.removeView((View)object); } } }
//布局
<android.support.v4.view.ViewPager android:id="@+id/vp" android:layout_width="wrap_content" android:layout_height="wrap_content"></android.support.v4.view.ViewPager>
本文介绍了一种使用Android实现无限轮播图的方法,通过自定义ViewPager适配器和主线程Handler来达到图片自动轮播的效果,并从服务器获取JSON数据加载图片。
485

被折叠的 条评论
为什么被折叠?



