viewpager无限轮播

来源:互联网 发布:淘宝几马全球购 编辑:程序博客网 时间:2024/05/09 05:52

主activity代码

package com.example.viewpager;

import java.util.ArrayList;

import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.support.v4.view.ViewPager;
import android.support.v4.view.ViewPager.OnPageChangeListener;
import android.util.Log;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnTouchListener;
import android.widget.ImageView;
import android.widget.ImageView.ScaleType;
import android.widget.RadioButton;
import android.widget.RadioGroup;

import com.baway.GetList.GetList;
import com.baway.bean.Image;
import com.baway.http.GetJson;
import com.example.adapter.VpAdapter;
import com.nostra13.universalimageloader.core.ImageLoader;
import com.nostra13.universalimageloader.core.ImageLoaderConfiguration;

public class MainActivity extends Activity {

private String url = "http://i.dxy.cn/snsapi/event/count/list/all";private ViewPager vp;ArrayList<ImageView> list;private ArrayList<Image> imagelist;Handler handler = new Handler() {    public void handleMessage(android.os.Message msg) {        // 获取当前位置        vp.setCurrentItem(vp.getCurrentItem() + 1);        // 设置页面跳转时间间隔        handler.sendEmptyMessageDelayed(0, 2000);    };};private GetJson gj;private GetList gl;@Overrideprotected void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    setContentView(R.layout.activity_main);    // 设置页面跳转时间间隔(首次运行)    handler.sendEmptyMessageDelayed(0, 2000);    gj = new GetJson();    gl = new GetList();    vp = (ViewPager) findViewById(R.id.vp);    new Mythread().start();}private void getimage() {    list = new ArrayList<ImageView>();    for (int i = 0; i < imagelist.size(); i++) {        ImageView iv = new ImageView(getApplicationContext());        // 图像拉伸        iv.setScaleType(ScaleType.FIT_XY);        // 配置imageloadler加载图片        ImageLoader loader = ImageLoader.getInstance();        loader.init(ImageLoaderConfiguration                .createDefault(getApplicationContext()));        loader.displayImage(imagelist.get(i).getPath(), iv);        list.add(iv);        //imageview监听         iv.setOnTouchListener(new OnTouchListener() {            @Override            public boolean onTouch(View v, MotionEvent event) {                if(event.getAction()==MotionEvent.ACTION_DOWN){                    //按下状态停止播放                    handler.removeCallbacksAndMessages(null);                }else if(event.getAction()==MotionEvent.ACTION_CANCEL){                    //取消时,发送消息                    handler.sendEmptyMessageDelayed(0, 2000);                }else if(event.getAction()==MotionEvent.ACTION_UP){                    //抬起时,发送消息                    handler.sendEmptyMessageDelayed(0, 2000);                }                return true;            }        });    }}class Mythread extends Thread {    private RadioGroup rg;    @Override    public void run() {        // TODO Auto-generated method stub        super.run();        String imagejson = gj.getjson(url);        Log.d("-----------------------------", imagejson);        imagelist = gl.getimagelist(imagejson);        Log.d("-----------------------------", imagelist.size() + "");        runOnUiThread(new Runnable() {            public void run() {                //添加小圆点                setdian();                // 为imageview适配图片                getimage();                // adapter适配数据                vp.setAdapter(new VpAdapter(list));                //vp 滑动监听                vp.setOnPageChangeListener(new OnPageChangeListener() {                    @Override                    public void onPageSelected(int arg0) {                        rg.check(arg0%imagelist.size());                    }                    @Override                    public void onPageScrolled(int arg0, float arg1, int arg2) {                        // TODO Auto-generated method stub                    }                    @Override                    public void onPageScrollStateChanged(int arg0) {                        // TODO Auto-generated method stub                    }                });            }        });    }    protected void setdian() {        //添加边距        int wrap = RadioGroup.LayoutParams.WRAP_CONTENT;        RadioGroup.LayoutParams params = new RadioGroup.LayoutParams(wrap, wrap);        params.leftMargin = 5;        rg = (RadioGroup) findViewById(R.id.rg);        for (int i = 0; i < imagelist.size(); i++) {            RadioButton rb = new RadioButton(getApplicationContext());            rb.setId(i);            // 设置button属性            rb.setButtonDrawable(R.drawable.select_button);            // 如果是第一个时,不需要加左边距            if (i != 0) {                rg.addView(rb, params);            } else                rg.addView(rb);        }        rg.check(0);    }}

}

适配器代码

package com.example.adapter;

import java.util.ArrayList;

import android.R.integer;
import android.support.v4.view.PagerAdapter;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;

public class VpAdapter extends PagerAdapter {

private ArrayList<ImageView> list;public VpAdapter(ArrayList<ImageView> list) {    super();    this.list = list;}@Overridepublic int getCount() {    // TODO Auto-generated method stub    return Integer.MAX_VALUE;}@Overridepublic boolean isViewFromObject(View arg0, Object arg1) {    // TODO Auto-generated method stub    return arg0==arg1;}@Overridepublic void destroyItem(ViewGroup container, int position, Object object) {    container.removeView((View) object);}@Overridepublic Object instantiateItem(ViewGroup container, int position) {    ImageView iv=list.get(position%list.size());    container.addView(iv);    return iv;}

}

XML文件

button1

<?xml version="1.0" encoding="utf-8"?><shape xmlns:android="http://schemas.android.com/apk/res/android"    android:shape="oval" >      <!-- 画圆点 -->      <stroke           android:width="1dp"          android:color="#00f"          />      <solid           android:color="#0f0"          />    <size         android:height="10dp"        android:width="10dp"        /></shape>

bitton2

<?xml version="1.0" encoding="utf-8"?><shape xmlns:android="http://schemas.android.com/apk/res/android"    android:shape="oval" >      <!-- 画圆点 -->      <stroke           android:width="1dp"          android:color="#00f"          />      <solid           android:color="#fff"          />    <size         android:height="10dp"        android:width="10dp"        /></shape>

select文件

<?xml version="1.0" encoding="utf-8"?><selector xmlns:android="http://schemas.android.com/apk/res/android">    <item android:drawable="@drawable/button" android:state_checked="true"></item>    <item android:drawable="@drawable/button1" android:state_checked="false"></item></selector>
0 0
原创粉丝点击