无限轮播自动获取图片

来源:互联网 发布:unity3d输出日志文件 编辑:程序博客网 时间:2024/06/14 05:22


package com.example.yuekao_;


import android.content.Intent;
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.MotionEvent;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.LinearLayout;


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


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


import static com.example.yuekao_.ImageLoaderUtil.getDefaultOption;


public class WelcomActivity extends AppCompatActivity {


    private LinearLayout lien;
    private ViewPager viewPager;
    private Button button;
    private List<DataDataBean.DataBean> list;
    private List<ImageView> images;
    private String s;
    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);
            }
        }
    };








    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_welcom);


        lien = (LinearLayout) findViewById(R.id.lien);
        viewPager = (ViewPager) findViewById(R.id.viewPager);
        button = (Button) findViewById(R.id.button);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(WelcomActivity.this,MainActivity.class);
                startActivity(intent);
            }
        });






        initData();
      /*  list.add("http://img3.imgtn.bdimg.com/it/u=848724803,1064721490&fm=27&gp=0.jpg");
        list.add("http://img2.imgtn.bdimg.com/it/u=3737176742,1290374026&fm=27&gp=0.jpg");
        list.add("http://img0.imgtn.bdimg.com/it/u=2776548487,3970089573&fm=27&gp=0.jpg");
        list.add("http://img3.imgtn.bdimg.com/it/u=3833245018,3691147395&fm=27&gp=0.jpg");
        list.add("http://img1.imgtn.bdimg.com/it/u=92344653,1157551912&fm=27&gp=0.jpg");
*/






    }


  private void initData() {
        new AsyncTask<String,Void,String>(){


            @Override
            protected String doInBackground(String... params) {
                try {
                    URL url = new URL("http://www.yulin520.com/a2a/impressApi/news/mergeList?pageSize=10&page=1");
                    HttpURLConnection connection = (HttpURLConnection) url.openConnection();
                    connection.setRequestMethod("GET");
                    connection.setReadTimeout(5000);
                    connection.setConnectTimeout(5000);
                    int responseCode = connection.getResponseCode();
                    if(responseCode==200){
                        InputStream inputStream = connection.getInputStream();
                        ByteArrayOutputStream baos = new ByteArrayOutputStream();
                        int len ;
                        byte[] buffer = new byte[1024];
                        while ((len = inputStream.read(buffer))!=-1){
                            baos.write(buffer,0,len);
                        }
                        s = baos.toString();
                    }
                } catch (Exception e) {
                    e.printStackTrace();
                }
                return s;
            }




            @Override
            protected void onPostExecute(String s) {
                super.onPostExecute(s);
                Gson gson = new Gson();
                DataDataBean dataDataBean = gson.fromJson(s, DataDataBean.class);
                list = dataDataBean.getData();
                viewPager.setAdapter(new MYAdapter());
                initDoc();


                viewPager.setCurrentItem(list.size()*10000);
                handler.sendEmptyMessageDelayed(0,2000);


                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.select);
                            }else {
                                images.get(i).setImageResource(R.drawable.select_no);
                            }
                        }
                    }


                    @Override
                    public void onPageScrollStateChanged(int state) {


                    }
                });




            }
        }.execute();


    }


    private void initDoc() {
        images = new ArrayList<>();
        lien.removeAllViews();
        for(int i = 0;i<list.size();i++){
            ImageView imageView = new ImageView(WelcomActivity.this);
            if(i==0){
                imageView.setImageResource(R.drawable.select);
            }else {
                imageView.setImageResource(R.drawable.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);
            lien.addView(imageView, params);
        }


    }
    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) {
            ImageView imageView = new ImageView(WelcomActivity.this);
            imageView.setScaleType(ImageView.ScaleType.FIT_XY);
            imageView.setOnTouchListener(new View.OnTouchListener() {
                @Override
                public boolean onTouch(View v, MotionEvent event) {
                    boolean isTZ = true;
                    switch (event.getAction()){
                        case MotionEvent.ACTION_DOWN:
                            handler.removeCallbacksAndMessages(null);
                            break;
                        case MotionEvent.ACTION_MOVE:
                            handler.removeCallbacksAndMessages(null);
                            break;
                        case MotionEvent.ACTION_CANCEL:
                            isTZ =false;
                            handler.sendEmptyMessageDelayed(0,2000);
                            break;
                        case MotionEvent.ACTION_UP://抬起
                            handler.sendEmptyMessageDelayed(0, 2000);
                            break;
                    }
                    return true;
                }
            });
            ImageLoader.getInstance().displayImage(list.get(position%list.size()).getImg(),imageView,getDefaultOption());
            container.addView(imageView);
            return imageView;
        }


        @Override
        public void destroyItem(ViewGroup container, int position, Object object) {
            container.removeView((View) object);
        }
    }
}


布局
 <android.support.v4.view.ViewPager
        android:id="@+id/viewPager"
        android:layout_width="match_parent"
        android:layout_height="match_parent"></android.support.v4.view.ViewPager>
    <Button
        android:id="@+id/button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_alignParentRight="true"
        android:text="进入系统"/>


    <LinearLayout
        android:id="@+id/lien"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBottom="@+id/viewPager"
        android:layout_centerHorizontal="true"
        android:layout_marginBottom="20dp"
        android:orientation="horizontal">


    </LinearLayout>
原创粉丝点击