網絡獲取圖片輪播

package bwei.com.viewpager;

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.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.RadioGroup;

import com.bwei.imageloaderlibrary.utils.ImageLoaderUtils;
import com.nostra13.universalimageloader.core.DisplayImageOptions;
import com.nostra13.universalimageloader.core.ImageLoader;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import java.io.ByteArrayOutputStream;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
import java.util.ArrayList;
import java.util.List;

import static android.R.attr.banner;

public class MainActivity extends AppCompatActivity {

    private ViewPager vp;
    private List<ImageView> imageViews = new ArrayList<ImageView>();
    private Handler handler = new Handler(){
        @Override
        public void handleMessage(Message msg) {
            super.handleMessage(msg);



            if(msg.what==0){
               String json = (String) msg.obj;

                try {
                    JSONObject jsonObject = new JSONObject(json);
                    JSONArray banner = jsonObject.getJSONArray("banner");
                    for (int i = 0; i< banner.length(); i++){
                        JSONObject jo = banner.getJSONObject(i);
                        String image_url = jo.getString("image_url");
                        Log.i("aaa",image_url);

                        ImageView imageview = new ImageView(MainActivity.this);
                        DisplayImageOptions options = ImageLoaderUtils.getOptions();
                        ImageLoader.getInstance().displayImage(image_url,imageview,options);
                        imageViews.add(imageview);
                    }
                    MyAdapter adapter = new MyAdapter();
                    vp.setAdapter(adapter);




                } catch ( Exception e) {
                    e.printStackTrace();
                }


            }


        }
    };
    private RadioGroup radio;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //初始化控件
        vp = (ViewPager) findViewById(R.id.vp);
        radio = (RadioGroup) findViewById(R.id.radiogroup);
        getserveData();

        vp.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
            @Override
            public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

            }

            @Override
            public void onPageSelected(int position) {
             radio.check(radio.getChildAt(position%imageViews.size()).getId());
            }

            @Override
            public void onPageScrollStateChanged(int state) {

            }
        });


    }

    private void getserveData() {
        new Thread(new Runnable() {
            @Override
            public void run() {
                String path="http://result.eolinker.com/iYXEPGn4e9c6dafce6e5cdd23287d2bb136ee7e9194d3e9?uri=banner";

                try {
                    URL url = new URL(path);

                    HttpURLConnection conn = (HttpURLConnection) url.openConnection();
                    conn.setRequestMethod("GET");
                    if(conn.getResponseCode()==200){
                        InputStream inputStream = conn.getInputStream();
                        ByteArrayOutputStream bos = new ByteArrayOutputStream();
                        byte[] buffer = new byte[1024];
                        int len=0;
                        while ((len=inputStream.read(buffer))!=-1){
                            bos.write(buffer,0,len);
                        }
                        inputStream.close();
                        bos.close();
                        String json = bos.toString();
                      Message message = new Message();
                      message.obj=json;
                      message.what=0;
                      handler.sendMessage(message);
                    }


                } catch (Exception e) {
                    e.printStackTrace();
                }


            }
        }).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) {
            position %= imageViews.size();
            ImageView imageView = imageViews.get(position);
            imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
            container.addView(imageView);
            return imageView;


        }

        @Override
        public void destroyItem(ViewGroup container, int position, Object object) {

            container.removeView((View)object);
        }
    }


    //開始輪播
    private void startWitch(){
        handler.postDelayed(new Runnable() {
            @Override
            public void run() {
                int item = vp.getCurrentItem();
                item++;
                vp.setCurrentItem(item);
                handler.postDelayed(this,2000);
            }
        },2000);
    }

    @Override
    protected void onResume() {
        super.onResume();
        startWitch();
    }
}
發佈了36 篇原創文章 · 獲贊 4 · 訪問量 5578
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章