无限轮播2自动加点

package com.example.lxb2017917;

import android.content.Intent;
import android.os.Bundle;
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.util.Log;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;

import com.google.gson.Gson;
import com.nostra13.universalimageloader.core.ImageLoader;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
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 ViewPager vp;
    List<User_viewpager> list=new ArrayList<User_viewpager>();
    Handler handler=new Handler(){
        @Override
        public void handleMessage(Message msg) {
            super.handleMessage(msg);
            int i = vp.getCurrentItem() + 1;
            vp.setCurrentItem(i);
            handler.sendEmptyMessageDelayed(0,2000);
        }
    };
    private ArrayList<ImageView> imagelist;
    private LinearLayout ll;
    private ImageView view;
    private Button bt;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        vp =(ViewPager)findViewById(R.id.vp);
        ll =(LinearLayout)findViewById(R.id.ll);
        bt =(Button)findViewById(R.id.bt);
        bt.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent intent = new Intent(MainActivity.this,Main2Activity.class);
                startActivity(intent);
            }
        });

        new Thread(){

            private StringBuilder builder;
            private URL url;

            @Override
            public void run() {
                super.run();
                 try {
                     url =new URL("http://apis.juhe.cn/cook/query?key=dd452181a9ca8ee5710d153538a4b8d6&menu=%E8%A5%BF%E7%BA%A2%E6%9F%BF&rn=10&pn=1");
                                     URLConnection connection = url.openConnection();
                                     InputStream stream = connection.getInputStream();
                                     BufferedReader reader = new BufferedReader(new InputStreamReader(stream));
                                      builder = new StringBuilder();
                                     String tem="";
                                     while((tem=reader.readLine())!=null){
                                         builder.append(tem);
                                     }
                                 } catch (MalformedURLException e) {
                                     e.printStackTrace();
                                 } catch (IOException e) {
                                     e.printStackTrace();
                                 }
                Log.e("==========读取出来的数据===============",builder.toString());
                                 runOnUiThread(new Runnable() {

                                     private List<Bean.ResultBean.DataBean.StepsBean> steps;

                                     @Override
                                     public void run() {
                                         //解析n
                                         Gson gson = new Gson();
                                         Bean json = gson.fromJson(builder.toString(), Bean.class);
                                         List<Bean.ResultBean.DataBean> data = json.getResult().getData();
                                         for (int i=0;i<data.size();i++){
                                            steps = data.get(i).getSteps();
                                         }
                                         for (int j = 0; j<5; j++){
                                                 String img = steps.get(j).getImg();
                                                 String step = steps.get(j).getStep();
                                                 list.add(new User_viewpager(img,step));
                                         }
                                         Log.e("==========viewpager解析出来的数据===============",list.toString());
                                         //无限轮播的适配器
                                         nodata();
                                         vp.setAdapter(new mydata());
                                         vp.setCurrentItem(10000);
                                         handler.sendEmptyMessageDelayed(0,2000);
                                         vp.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
                                             @Override
                                             public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

                                             }

                                             @Override
                                             public void onPageSelected(int position) {
                                                     for (int i=0;i<imagelist.size();i++){
                                                             if(position%list.size()==i){
                                                                 imagelist.get(position%list.size()).setImageResource(R.drawable.dot_focus);
                                                             }else{
                                                                 imagelist.get(i).setImageResource(R.drawable.dot_normal);
                                                             }
                                                     }
                                             }

                                             @Override
                                             public void onPageScrollStateChanged(int state) {

                                             }
                                         });
                                     }
                                 });
            }
        }.start();
    }
//无限轮播的适配器
    class mydata 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) {
        View view = View.inflate(MainActivity.this, R.layout.viewpager, null);
        ImageView img=(ImageView)view.findViewById(R.id.img);
        TextView name=(TextView)view.findViewById(R.id.name);
        name.setText(list.get(position%list.size()).name);
        ImageLoader.getInstance().displayImage(list.get(position%list.size()).img,img);
        container.addView(view);
        return view;
    }

    @Override
    public void destroyItem(ViewGroup container, int position, Object object) {
        container.removeView((View)object);
    }
}
    private void nodata() {
        imagelist =new ArrayList<ImageView>();
        if(imagelist!=null){
            imagelist.clear();
        }
        for (int i=0;i<list.size();i++){
           view = new ImageView(this);
            if(i==vp.getCurrentItem()){
                view.setImageResource(R.drawable.dot_focus);
            }else{
                view.setImageResource(R.drawable.dot_normal);
            }
            LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(20, 20);
            params.setMargins(10,0,10,0);
            imagelist.add(view);
            ll.addView(view,params);
        }

    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值