无限自动轮播加小点加从网上获取图片

来源:互联网 发布:解压 mac 编辑:程序博客网 时间:2024/06/14 09:08

首先的是Activity的Xml布局

<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent"    tools:context="com.bwei.jiajiajia.yuekaolianxi2.MainActivity">    <android.support.v4.view.ViewPager        android:id="@+id/vp"        android:layout_width="match_parent"        android:layout_height="200dp"        >    </android.support.v4.view.ViewPager>    <LinearLayout        android:id="@+id/doc_layou"        android:orientation="horizontal"        android:layout_marginTop="170dp"        android:layout_centerHorizontal="true"        android:layout_width="match_parent"        android:gravity="center"        android:layout_height="wrap_content">    </LinearLayout>    </RelativeLayout>//接着就是对图片的解析和ViewPage的适配和添加小点
package com.bwei.jiajiajia.yuekaolianxi2;import android.os.AsyncTask;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.GridView;import android.widget.ImageView;import android.widget.LinearLayout;import android.widget.ListView;import com.bwei.jiajiajia.yuekaolianxi2.bean.NewsData;import com.google.gson.Gson;import com.nostra13.universalimageloader.core.DisplayImageOptions;import com.nostra13.universalimageloader.core.ImageLoader;import com.nostra13.universalimageloader.core.ImageLoaderConfiguration;import java.io.ByteArrayOutputStream;import java.io.InputStream;import java.net.HttpURLConnection;import java.net.MalformedURLException;import java.net.URL;import java.util.ArrayList;import java.util.List;public class MainActivity extends AppCompatActivity {    ViewPager vp;    ListView lv;    GridView gv;    NewsData data;    LinearLayout doc_layou;    MyPagerAdapter adapter;    List<ImageView> list_doc;    int countrrent;    Handler handler=new Handler(){        @Override        public void handleMessage(Message msg) {            countrrent++;            vp.setCurrentItem(countrrent);            handler.sendEmptyMessageDelayed(0,2000);            super.handleMessage(msg);        }    };        @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        vp= (ViewPager) findViewById(R.id.vp);        lv= (ListView) findViewById(R.id.lv);        gv= (GridView) findViewById(R.id.gv);        doc_layou= (LinearLayout) findViewById(R.id.doc_layou);        adapter=new MyPagerAdapter();        handler.sendEmptyMessageDelayed(0,2000);        initImg();    }    private void initImg() {        new AsyncTask<String,String,String>(){            @Override            protected String doInBackground(String... strings) {                return getData();            }            @Override            protected void onPostExecute(String s) {                Gson gson=new Gson();                data=gson.fromJson(s,NewsData.class);                vp.setAdapter(adapter);                vp.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {                    @Override                    public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {                    }                    @Override                    public void onPageSelected(int position) {                    int index=position%list_doc.size();                        for (int i = 0; i <list_doc.size() ; i++) {                            list_doc.get(i).setImageResource(R.drawable.sliding);                        }                        list_doc.get(index).setImageResource(R.drawable.slidingr);                    }                    @Override                    public void onPageScrollStateChanged(int state) {                    }                });                initDoc();                super.onPostExecute(s);            }        }.execute();    }    private void initDoc() {         list_doc=new ArrayList<>();        if(data!=null)        {            for (int i = 0; i < data.getResult().getAdvs().size(); i++) {                ImageView iv2=new ImageView(MainActivity.this);                LinearLayout.LayoutParams params=new LinearLayout.LayoutParams(20,20);                params.setMargins(10,5,10,5);                if(i==0)                {                    iv2.setBackgroundResource(R.drawable.slidingr);                }                else                {                    iv2.setBackgroundResource(R.drawable.sliding);                }                doc_layou.addView(iv2,params);                list_doc.add(iv2);            }        }    }    private String getData() {        String result="";        try {            URL url=new URL("http://www.babybuy100.com/API/getShopOverview.ashx");            HttpURLConnection connection= (HttpURLConnection) url.openConnection();            connection.setRequestMethod("GET");            int code=connection.getResponseCode();            if(code==200)            {                InputStream is=connection.getInputStream();                ByteArrayOutputStream bos=new ByteArrayOutputStream();                int len=-1;                byte[] b=new byte[1024];                while((len=is.read(b))!=-1){                    bos.write(b,0,len);                }                result=new String(bos.toByteArray());            }        } catch (Exception e) {            e.printStackTrace();        }        return result;    }    class MyPagerAdapter extends PagerAdapter{        @Override        public int getCount() {            if(data!=null)            {                return  Integer.MAX_VALUE;            }            return 0;        }        @Override        public boolean isViewFromObject(View view, Object object) {            return view==object;        }        @Override        public Object instantiateItem(ViewGroup container, int position) {            ImageView iv=new ImageView(MainActivity.this);            iv.setScaleType(ImageView.ScaleType.CENTER_CROP);            ImageLoaderConfiguration configuration=ImageLoaderConfiguration.createDefault(MainActivity.this);            ImageLoader.getInstance().init(configuration);            DisplayImageOptions options=new DisplayImageOptions.Builder().cacheInMemory(true).build();            ImageLoader.getInstance().displayImage(data.getResult().getAdvs().get(position%data.getResult().getAdvs().size()).getPic(),iv,options);            container.addView(iv);            return iv;        }        @Override        public void destroyItem(ViewGroup container, int position, Object object) {            container.removeView((View) object);        }    }}