网络获取图片无限轮播加小圆点联动

来源:互联网 发布:淘宝运营教程百度云 编辑:程序博客网 时间:2024/05/22 09:01
加载Gson包和ImageLoader包  
AndroidManifest里添加网络权限
<uses-permission android:name="android.permission.INTERNET"/>
自己重写一个Application
重写onCreate添加
ImageLoaderConfiguration configuration = ImageLoaderConfiguration.createDefault(this);ImageLoader.getInstance().init(configuration);
application里添加
android:name=".MyApplication"
android:theme="@style/Theme.AppCompat.Light"

shape1.xml  未选中时小圆点的颜色
<?xml version="1.0" encoding="utf-8"?><shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">    <solid android:color="#800000"/>    <corners android:radius="8dp"/></shape>
shape2.xml 选中时小圆点的颜色
<?xml version="1.0" encoding="utf-8"?><shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">    <solid android:color="#f0f"/>    <corners android:radius="8dp"/></shape>

item.xml 小圆点的布局
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:orientation="vertical" android:layout_width="match_parent"    android:layout_height="match_parent">    <View        android:layout_width="8dp"        android:layout_height="8dp"        android:layout_margin="10dp"        android:id="@+id/yuandain_view"        android:background="@drawable/shape1"        /></LinearLayout>
activity_main 主MainActivity布局
<?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">    <android.support.v4.view.ViewPager        android:id="@+id/main_viewPager"        android:layout_width="wrap_content"        android:layout_height="250dp"        android:layout_alignParentTop="true"/>    <LinearLayout        android:orientation="horizontal"        android:id="@+id/ll"        android:layout_width="wrap_content"        android:layout_height="10dp"        android:layout_below="@id/main_viewPager"        android:layout_marginTop="-10dp"        android:layout_alignParentRight="true"        android:layout_alignParentEnd="true" /></RelativeLayout>

主MainActivitypublic class MainActivity extends AppCompatActivity {    //Json串的网址    private final static String JSON_URL = "http://api.kkmh.com/v1/daily/comic_lists/0?since=0&gender=0&sa_event=eyJwcm9qZWN0Ijoia3VhaWthbl9hcHAiLCJ0aW1lIjoxNDg3NzQyMjQwNjE1LCJwcm9wZXJ0aWVzIjp7IkhvbWVwYWdlVGFiTmFtZSI6IueDremXqCIsIlZDb21tdW5pdHlUYWJOYW1lIjoi54Ot6ZeoIiwiJG9zX3ZlcnNpb24iOiI0LjQuMiIsIkdlbmRlclR5cGUiOiLlpbPniYgiLCJGcm9tSG9tZXBhZ2VUYWJOYW1lIjoi54Ot6ZeoIiwiJGxpYl92ZXJzaW9uIjoiMS42LjEzIiwiJG5ldHdvcmtfdHlwZSI6IldJRkkiLCIkd2lmaSI6dHJ1ZSwiJG1hbnVmYWN0dXJlciI6ImJpZ25veCIsIkZyb21Ib21lcGFnZVVwZGF0ZURhdGUiOjAsIiRzY3JlZW5faGVpZ2h0IjoxMjgwLCJIb21lcGFnZVVwZGF0ZURhdGUiOjAsIlByb3BlcnR5RXZlbnQiOiJSZWFkSG9tZVBhZ2UiLCJGaW5kVGFiTmFtZSI6IuaOqOiNkCIsImFidGVzdF9ncm91cCI6MTEsIiRzY3JlZW5fd2lkdGgiOjcyMCwiJG9zIjoiQW5kcm9pZCIsIlRyaWdnZXJQYWdlIjoiSG9tZVBhZ2UiLCIkY2FycmllciI6IkNoaW5hIE1vYmlsZSIsIiRtb2RlbCI6IlZQaG9uZSIsIiRhcHBfdmVyc2lvbiI6IjMuNi4yIn0sInR5cGUiOiJ0cmFjayIsImRpc3RpbmN0X2lkIjoiQTo2YWRkYzdhZTQ1MjUwMzY1Iiwib3JpZ2luYWxfaWQiOiJBOjZhZGRjN2FlNDUyNTAzNjUiLCJldmVudCI6IlJlYWRIb21lUGFnZSJ9";   //盛放轮播图的网址的集合    private List<String> lunboImageURL;    private ViewPager viewPager;    //盛放数据的集合    private List<JavaBean.DataBean.ComicsBean> comicsBeens;    //盛放小圆点的集合    private List<View> yuandainLisr;    //标题集合    private List<String> image_titleList;    //异步Handle    private Handler handler;    //小圆点的容器    private LinearLayout linearLayout;    private int old_list;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        //获取控件        viewPager = (ViewPager) findViewById(R.id.main_viewPager);        linearLayout = (LinearLayout) findViewById(R.id.ll);        lunboImageURL=new ArrayList<>();        yuandainLisr=new ArrayList<>();        handler=new Handler(){            @Override            public void handleMessage(Message msg) {                //handle里修改ViewPager的当前视图                viewPager.setCurrentItem(msg.what);                //设置viewpager的位置                viewPager.setCurrentItem(msg.what%yuandainLisr.size());                //设置圆点与图片的联动                yuandainLisr.get(old_list).setBackgroundResource(R.drawable.shape1);                yuandainLisr.get(msg.what%yuandainLisr.size()).setBackgroundResource(R.drawable.shape2);                old_list=msg.what%yuandainLisr.size();            }        };        //异步AsyncTask请求网络  获取数据        new AsyncTask<String, Integer, String>() {            @Override            protected String doInBackground(String... strings) {                try {                    URL url = new URL(JSON_URL);                    HttpURLConnection connection = (HttpURLConnection) url.openConnection();                    //获取状态码                    int responseCode = connection.getResponseCode();                    if (responseCode == 200) {                        Gson gson = new Gson();                        //Json解析                        JavaBean javaBean = gson.fromJson(new InputStreamReader(connection.getInputStream()), JavaBean.class);                        //数据给集合                        comicsBeens= javaBean.getData().getComics();                    }                } catch (MalformedURLException e) {                    e.printStackTrace();                } catch (IOException e) {                    e.printStackTrace();                }                return null;            }            @Override            protected void onPostExecute(String s) {                super.onPostExecute(s);                //循环数据集合  取出图片的网址并创建和图片个数一样多的小圆点                for (JavaBean.DataBean.ComicsBean bean : comicsBeens) {                    lunboImageURL.add(bean.getCover_image_url());                    //获取小圆点的布局                    View view = View.inflate(MainActivity.this, R.layout.item, null);                    View yuandianView = view.findViewById(R.id.yuandain_view);                    //吧小圆点放入集合                    yuandainLisr.add(yuandianView);                    //linearLayout添加小圆点的布局                    linearLayout.addView(view);                    //设置小圆点第一个被选中                    yuandainLisr.get(0).setBackgroundResource(R.drawable.shape2);                }                //实例化适配器                ViewPager_Adapter adapter=new ViewPager_Adapter(MainActivity.this,lunboImageURL);                //ViewPager添加适配器                viewPager.setAdapter(adapter);            }        }.execute();        //写一个线程 ViewPager自动轮播        new Thread(){            @Override            public void run() {                super.run();                //死循环                while(true){                    try {                        //顺面两秒                        sleep(2000);                    } catch (InterruptedException e) {                        e.printStackTrace();                    }                    //获取当前的ViewPager页的索引                    int currentItem = viewPager.getCurrentItem();                    //索引+1 为下一个ViewPager页                    currentItem++;                    //发送给handle                    handler.sendEmptyMessage(currentItem);                }            }        }.start();    }}
适配器
public class ViewPager_Adapter extends PagerAdapter {
   private Context context;
    private List<String> imageUrls;//盛放图片网址的集合    public ViewPager_Adapter(Context context, List<String> imageUrls) {        this.context = context;        this.imageUrls = imageUrls;    }    @Override    public int getCount() {        return imageUrls.size();    }    @Override    public boolean isViewFromObject(View view, Object object) {        return view==object;    }    @Override    public Object instantiateItem(ViewGroup container, int position) {
//自己新建一个ImageView        ImageView imageView=new ImageView(context);
//网络获取        ImageLoader.getInstance().displayImage(imageUrls.get(position),imageView);        container.addView(imageView);        return imageView;    }    @Override    public void destroyItem(ViewGroup container, int position, Object object) {        container.removeView((View) object);    }}

阅读全文
1 0