您的位置:首页 > 其它

无限轮播

2016-06-13 16:55 260 查看
activity_maim.xml

<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="200dp"

     >

    <android.support.v4.view.ViewPager

        android:layout_width="match_parent"

        android:layout_height="fill_parent"

        android:id="@+id/vp" />

    <LinearLayout

    android:layout_width="match_parent"

    android:layout_height="wrap_content"

     android:orientation="vertical"

     android:background="#708090"

     android:layout_alignParentBottom="true">

          <TextView

            android:gravity="center"

            android:id="@+id/tv_info"

            android:layout_width="fill_parent"

            android:layout_height="wrap_content"

            android:textSize="20sp"

            android:text="qqq"/>

        

        <LinearLayout

            android:id="@+id/ll_dot"

            android:gravity="center"

            android:layout_width="fill_parent"

            android:layout_height="wrap_content"

            android:orientation="horizontal">

        </LinearLayout>

     </LinearLayout>

</RelativeLayout>

vp_fouse.xml

<?xml version="1.0" encoding="utf-8"?>

<shape xmlns:android="http://schemas.android.com/apk/res/android"

    android:shape="rectangle">

    <corners android:radius="10dp"/>

    <solid android:color="#f00"/>

</shape>


vp_normal.xml

<?xml version="1.0" encoding="utf-8"?>

<shape xmlns:android="http://schemas.android.com/apk/res/android"

    android:shape="rectangle">

    <corners android:radius="10dp"/>

    <solid android:color="#fff"/>

</shape>


adapter

package com.example.vp.adapter;

import java.util.List;

import com.example.vp.bean.ViewBean.Adlist;

import com.nostra13.universalimageloader.core.ImageLoader;

import android.content.Context;

import android.support.v4.view.PagerAdapter;

import android.view.View;

import android.view.ViewGroup;

import android.widget.ImageView;

public class MyPagerAdapter extends PagerAdapter {

    Context context;

    List<Adlist> list;

    public MyPagerAdapter(Context context, List<Adlist> list) {

        this.context=context;

        this.list=list;

    }

    @Override

    public int getCount() {

        return Integer.MAX_VALUE;

    }

    @Override

    public boolean isViewFromObject(View arg0, Object arg1) {

        return arg0==arg1;

    }

    @Override

    public void destroyItem(ViewGroup container, int position, Object object) {

        container.removeView((View) object);

    }

    @Override

    public Object instantiateItem(ViewGroup container, int position) {

        ImageView iv = new ImageView(context);

        container.addView(iv);

        ImageLoader.getInstance().displayImage(list.get(position%list.size()).img, iv);

        return iv;

    }

}

bean


package com.example.vp.bean;

import java.util.List;

public class ViewBean {

    public Data data;

    public String msg;

    public String status;

    

    public class Data{

        public List<Adlist> adlist;

    }

    

    public class Adlist {

        

        public String id;

        public String img;

        public String name;

        public String stype;

        public String title;

        public String url;

        

    }

    

}

NetWorkUTils


package com.example.vp.utils;

import java.io.IOException;

import org.apache.http.HttpResponse;

import org.apache.http.client.ClientProtocolException;

import org.apache.http.client.HttpClient;

import org.apache.http.client.methods.HttpGet;

import org.apache.http.impl.client.DefaultHttpClient;

import org.apache.http.util.EntityUtils;

public class NetWorkUtils {

    

    static String path ="http://www.meirixue.com/api.php?c=index&a=index";

    public static String getStr(){

        

        HttpClient client = new DefaultHttpClient();

        

        HttpGet get = new HttpGet(path);

        

        try {

            HttpResponse response = client.execute(get);

            int code = response.getStatusLine().getStatusCode();

            

            if(code==200){

                

                String json = EntityUtils.toString(response.getEntity());

                

                return json;

            }

            

            

        } catch (Exception e) {

            e.printStackTrace();

        }

        

        return null;

    }

}
activity


package com.example.vp;

import java.util.ArrayList;

import java.util.List;

import java.util.Timer;

import java.util.TimerTask;

import com.example.vp.adapter.MyPagerAdapter;

import com.example.vp.bean.ViewBean;

import com.example.vp.bean.ViewBean.Adlist;

import com.example.vp.utils.NetWorkUtils;

import com.google.gson.Gson;

import android.os.Bundle;

import android.app.Activity;

import android.support.v4.view.ViewPager;

import android.support.v4.view.ViewPager.OnPageChangeListener;

import android.view.Menu;

import android.view.View;

import android.widget.ImageView;

import android.widget.LinearLayout;

import android.widget.LinearLayout.LayoutParams;

import android.widget.TextView;

public class MainActivity extends Activity {

    private ViewPager vp;

    private TextView tv_info;

    private LinearLayout ll_dot;

    private List<Adlist> list;

    private List<ImageView> alist=new ArrayList<ImageView>();

    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);

        tv_info = (TextView) findViewById(R.id.tv_info);

        ll_dot=(LinearLayout)findViewById(R.id.ll_dot);

        vp=(ViewPager)findViewById(R.id.vp);

        initData();

        

    }

    private void initData() {

        new Thread(){

            private String str;

            public void run() {

                str = NetWorkUtils.getStr();

                runOnUiThread(new Runnable() {

                    @Override

                    public void run() {

                        Gson gson = new Gson();

                        ViewBean bean = gson.fromJson(str, ViewBean.class);

                        list = bean.data.adlist;

                        vp.setAdapter(new MyPagerAdapter(MainActiv
4000
ity.this,list));

//                        初始化小圆点

                        initDot();

                        vp.setCurrentItem(list.size()*2);

                        vpListen();

                        startTimer();

                    }

                });

            };

        }.start();

    }

    private void startTimer() {

        Timer tmr = new Timer();

        tmr.schedule(new TimerTask() {

            

            @Override

            public void run() {

                runOnUiThread(new Runnable() {

                    

                    @Override

                    public void run() {

                        int currentItem = vp.getCurrentItem();

                        vp.setCurrentItem(++currentItem);

                    }

                });

            }

        }, 0, 2000);

        

    }

    private void vpListen() {

        vp.setOnPageChangeListener(new OnPageChangeListener() {

            

            @Override

            public void onPageSelected(int arg0) {

                for (int i = 0; i < alist.size(); i++) {

                    if(arg0%list.size()==i){

//                        viewpager的点和图片一致

                        alist.get(arg0%list.size()).setImageResource(R.drawable.vp_fouse);

                    }else{

                        alist.get(i).setImageResource(R.drawable.vp_normal);

                    }

                    tv_info.setText(list.get(arg0%list.size()).title);

                }

                

            }            

            @Override

            public void onPageScrolled(int arg0, float arg1, int arg2) {

                

            }

            

            @Override

            public void onPageScrollStateChanged(int arg0) {

                

            }

        });

    }

    /**

     * 初始化小圆点

     */

    private void initDot() {

        if(alist!=null){

            alist.clear();

        }

        for (int i = 0; i < list.size(); i++) {

            ImageView iv = new ImageView(MainActivity.this);

            if(i==0){

//                小圆点选中

                iv.setImageResource(R.drawable.vp_fouse);

            }else{

                iv.setImageResource(R.drawable.vp_normal);

            }

            tv_info.setText(list.get(i).title);

            LayoutParams params=new LayoutParams(10, 10);

            params.setMargins(20, 0, 20, 0);

//            将圆点存到集合中

            alist.add(iv);

            ll_dot.addView(iv, params);

        }

    }

    

}

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  无限轮播