网络获取图片实现无限轮播图

来源:互联网 发布:arm linux gcc 3.4.1 编辑:程序博客网 时间:2024/06/05 00:18
import android.os.AsyncTask;import android.os.Handler;import android.os.Message;import android.support.v4.view.ViewPager;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.view.ViewParent;import android.widget.ImageView;import android.widget.LinearLayout;import com.google.gson.Gson;import java.io.BufferedReader;import java.io.IOException;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.ArrayList;import java.util.List;public class MainActivity extends AppCompatActivity {    private ViewParent viewParent;    private ViewPager viewPager;    private Handler handler = new Handler(){        @Override        public void handleMessage(Message msg) {            if (msg.what == 0){                int currentItem = viewPager.getCurrentItem();                viewPager.setCurrentItem(currentItem+1);                handler.sendEmptyMessageDelayed(0,2000);            }        }    };    private LinearLayout linearLayout;    private List<ImageView> images;    private List<Bean.NewslistBean> list;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        viewPager = (ViewPager) findViewById(R.id.view_pager);        linearLayout = (LinearLayout) findViewById(R.id.linear_layout);        toYiBu();    }    private void toYiBu() {        AsyncTask<Void, Void, String> asyncTask = new AsyncTask<Void, Void, String>() {            @Override            protected String doInBackground(Void... voids) {                try {                    URL url = new URL("https://api.tianapi.com/wxnew/?key=8d6e3228d25298f13af4fc40ce6c9679&num=6&page=1");                    HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();                    urlConnection.setConnectTimeout(5000);                    urlConnection.setReadTimeout(5000);                    int responseCode = urlConnection.getResponseCode();                    if (responseCode==200){                        InputStream inputStream = urlConnection.getInputStream();                        String json = ZhuanHuan(inputStream);                        return json;                    }                } catch (Exception e) {                    e.printStackTrace();                }                return null;            }            @Override            protected void onPostExecute(String json) {                super.onPostExecute(json);                Gson gson = new Gson();                Bean bean = gson.fromJson(json, Bean.class);                list = bean.getNewslist();                //初始化小圆点                initDoc();                //设置适配器                ImagePager imagePager = new ImagePager(MainActivity.this, list,handler);                //                viewPager.setAdapter(imagePager);                PagerListerne();                //发送延时消息                handler.sendEmptyMessageDelayed(0,2000);            }        };    asyncTask.execute();    }    private void PagerListerne() {        //设置ViewPager初始展示的位置        viewPager.setCurrentItem(list.size()*10000);        viewPager.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<images.size();i++){                    if (i== position%images.size()){                        images.get(i).setImageResource(R.drawable.doc_select);                    }else {                        images.get(i).setImageResource(R.drawable.doc_select_no);                    }                }            }            @Override            public void onPageScrollStateChanged(int state) {            }        });    }    private String ZhuanHuan(InputStream inputStream) {        InputStreamReader inputStreamReader = new InputStreamReader(inputStream);        BufferedReader bufferedReader = new BufferedReader(inputStreamReader);        StringBuilder builder = new StringBuilder();        String string = null;        try {            while ((string=bufferedReader.readLine())!=null){                builder.append(string);            }            return builder.toString();        } catch (Exception e) {            e.printStackTrace();        }        return null;    }    private void initDoc() {        //首先需要一个集合记录这些小圆点的图片,,,,当页面切换的时候,可以从集合中取出imageView进行显示图片的设置        images = new ArrayList<>();        linearLayout.removeAllViews();//清空/移除所有的view        for (int i = 0;i<list.size();i++){            ImageView imageView = new ImageView(MainActivity.this);            if (i==0){//显示第一页,,,红的                imageView.setImageResource(R.drawable.doc_select);            }else {//绿的                imageView.setImageResource(R.drawable.doc_select_no);            }            //添加到集合            images.add(imageView);            //加入到线性布局中显示            LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT,LinearLayout.LayoutParams.WRAP_CONTENT);            params.setMargins(5,0,5,0);            linearLayout.addView(imageView,params);        }    }}
阅读全文
0 0
原创粉丝点击