ViewPager

来源:互联网 发布:蓝牙串口软件ymodem 编辑:程序博客网 时间:2024/06/01 08:59

ViewPager是google SDk中自带的一个附加包的一个类,可以用来实现屏幕间的切换


今天要讲的是用ViewPager实现图片的自动轮播,也可以用此控件加载页面,我前面有写过此案例,感兴趣的人可以去看看。好了,开始今天的学习;


Activity中


package com.example.viewpager;//导包import android.app.Activity;import android.app.ListActivity;import android.os.Handler;import android.os.Message;import android.support.v4.view.ViewPager;import android.os.Bundle;import android.widget.RadioGroup;import java.util.ArrayList;import java.util.List;//类public class MainActivity extends Activity {ViewPager viewPager;    int i = 0;//主线程更改UI Handler h = new Handler(){        @Override        public void handleMessage(Message msg) {//接受发过来的消息,改变数据位置 if(msg.what==0){                i = viewPager.getCurrentItem();                viewPager.setCurrentItem(i+1);            }        }    };    private List<Integer> list;    private RadioGroup radio;    private Myadper myadper;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);//加载布局        setContentView(R.layout.activity_main);//获取资源id        radio = (RadioGroup) findViewById(R.id.radio);        viewPager = (ViewPager) findViewById(R.id.viewpager);//定义一个集合,把数据放入集合        list = new ArrayList<Integer>(); //图片放入res文件下的mipmap-xxx下          list.add(R.mipmap.a1);        list.add(R.mipmap.a2);        list.add(R.mipmap.a3);        list.add(R.mipmap.a4);//适配器,适配数据        myadper = new Myadper(list,this);        viewPager.setAdapter(myadper);//图片自动轮播跟着的小圆点的设置        viewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {            @Override            public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {                switch (position% list.size()){                    case 0:                        radio.check(R.id.b1);                        break;                    case 1:                        radio.check(R.id.b2);                        break;                    case 2:                        radio.check(R.id.b3);                        break;                    case 3:                        radio.check(R.id.b4);                        break;                }            }            @Override            public void onPageSelected(int position) {            }            @Override            public void onPageScrollStateChanged(int state) {            }        });//定义个子线程,两秒发送消息,主线程去更改UI        new Thread(){            @Override            public void run() {                try {                    while(true){                    sleep(2000);                    h.sendEmptyMessage(0);                   }                } catch (InterruptedException e) {                    e.printStackTrace();                }            }        }.start();    }}

适配器

package com.example.viewpager;import android.content.Context;import android.support.v4.view.PagerAdapter;import android.view.View;import android.view.ViewGroup;import android.widget.ImageViewimport java.util.List;//类继承PagerAdapter,实现四个方法public class Myadper extends PagerAdapter{ //通过构造器传递数据 List<Integer> list;    Context context;    public Myadper(List<Integer> list, Context context) {        this.list = list;        this.context = context;    }//返回一个最大值    @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 image = new ImageView(context);        image.setImageResource(list.get(position%list.size()));        image.setScaleType(ImageView.ScaleType.FIT_XY);        container.addView(image);        return image;    }//销毁    @Override        public void destroyItem(ViewGroup container, int position, Object object) {        container.removeView((View) object);    }}

XML文件


<?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:id="@+id/activity_main"    android:layout_width="match_parent" android:layout_height="match_parent"    android:paddingBottom="@dimen/activity_vertical_margin"    android:paddingLeft="@dimen/activity_horizontal_margin"    android:paddingRight="@dimen/activity_horizontal_margin"    android:paddingTop="@dimen/activity_vertical_margin"    tools:context="com.example.viewpager.MainActivity">  <android.support.v4.view.ViewPager      android:id="@+id/viewpager"      android:layout_height="match_parent"      android:layout_width="match_parent"      />    <RadioGroup        android:id="@+id/radio"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_alignParentBottom="true"        android:layout_centerHorizontal="true"        android:orientation="horizontal">        <RadioButton            android:id="@+id/b1"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            />        <RadioButton            android:id="@+id/b2"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            />        <RadioButton            android:id="@+id/b3"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            />        <RadioButton            android:id="@+id/b4"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            />    </RadioGroup></RelativeLayout>

实现的案例效果




原创粉丝点击