ViewPager定时切换

来源:互联网 发布:社会静力学知乎 编辑:程序博客网 时间:2024/06/05 20:04

不说废话,直接代码
1.首先将不能定时切换的代码写好,也就是普通的ViewPager,如下:

activity_main:

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="vertical" >    <FrameLayout        android:layout_width="match_parent"        android:layout_height="120dp" >        <android.support.v4.view.ViewPager            android:id="@+id/app_viewpager"            android:layout_width="match_parent"            android:layout_height="wrap_content"            android:layout_gravity="center" />        <LinearLayout            android:id="@+id/ll_"            android:layout_width="match_parent"            android:layout_height="wrap_content"            android:layout_gravity="bottom"            android:layout_marginBottom="10dp"            android:gravity="center_horizontal"            android:orientation="horizontal" >            <ImageView                android:id="@+id/app_page1"                android:layout_width="wrap_content"                android:layout_height="wrap_content"                android:clickable="true"                android:padding="15.0dip"                android:src="@drawable/lv_dian" />            <ImageView                android:id="@+id/app_page2"                android:layout_width="wrap_content"                android:layout_height="wrap_content"                android:clickable="true"                android:padding="15.0dip"                android:src="@drawable/hei_dian" />            <ImageView                android:id="@+id/app_page3"                android:layout_width="wrap_content"                android:layout_height="wrap_content"                android:clickable="true"                android:padding="15.0dip"                android:src="@drawable/hei_dian" />        </LinearLayout>    </FrameLayout> </LinearLayout>

ViewPager的第一个页面,就是一张图片

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="120dp"    android:orientation="vertical"    android:background="@drawable/banner1" ></LinearLayout>

ViewPager的第二个页面,就是一张图片

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="120dp"    android:orientation="vertical"    android:background="@drawable/banner2" ></LinearLayout>

ViewPager的第三个页面,就是一张图片

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="120dp"    android:orientation="vertical"    android:background="@drawable/banner3" ></LinearLayout>

MainActivity:

public class ViewPagerTest extends Activity implements OnClickListener {    private Runnable viewpagerRunnable;    private static Handler handler;    private ViewPager app_viewPager;    private ImageView app_page1;    private ImageView app_page2;    private ImageView app_page3;    private int currrentPage = 0;    private ArrayList<View> views;    private LayoutInflater li;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        this.requestWindowFeature(Window.FEATURE_NO_TITLE);// 去掉标题栏        // this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,        // WindowManager.LayoutParams.FLAG_FULLSCREEN);// 去掉信息栏        setContentView(R.layout.application_center);        initView();        app_viewPager.setOnPageChangeListener(new MyOnPageChangeListener());        showDia();        handler = new Handler();        // 开启自动切换图片        initRunnable();    }    // 初始化view    public void initView() {        app_viewPager = (ViewPager) findViewById(R.id.app_viewpager);        app_page1 = (ImageView) findViewById(R.id.app_page1);        app_page2 = (ImageView) findViewById(R.id.app_page2);        app_page3 = (ImageView) findViewById(R.id.app_page3);        li = LayoutInflater.from(this);        views = new ArrayList<View>();        View view1 = li.inflate(R.layout.app_page1, null);        View view2 = li.inflate(R.layout.app_page2, null);        View view3 = li.inflate(R.layout.app_page3, null);        views.add(view1);        views.add(view2);        views.add(view3);        // ViewPager适配器        PagerAdapter pagerAdapter = new PagerAdapter() {            @Override            public boolean isViewFromObject(View arg0, Object arg1) {                return arg0 == arg1;            }            @Override            public int getCount() {                return views.size();            }            @Override            public void destroyItem(View container, int position, Object object) {                ((ViewPager) container).removeView(views.get(position));            }            @Override            public Object instantiateItem(View container, int position) {                ((ViewPager) container).addView(views.get(position));                return views.get(position);            }        };        app_viewPager.setAdapter(pagerAdapter);    }// viewPager监听事件    public class MyOnPageChangeListener implements OnPageChangeListener {        @Override        public void onPageScrollStateChanged(int status) {        }        @Override        public void onPageScrolled(int arg0, float arg1, int arg2) {        }        @Override        public void onPageSelected(int arg0) {            switch (arg0) {            case 0:                app_page1.setImageDrawable(getResources().getDrawable(R.drawable.lv_dian));                app_page2.setImageDrawable(getResources().getDrawable(R.drawable.hei_dian));                app_page3.setImageDrawable(getResources().getDrawable(R.drawable.hei_dian));                break;            case 1:                app_page2.setImageDrawable(getResources().getDrawable(R.drawable.lv_dian));                app_page1.setImageDrawable(getResources().getDrawable(R.drawable.hei_dian));                app_page3.setImageDrawable(getResources().getDrawable(R.drawable.hei_dian));                break;            case 2:                app_page3.setImageDrawable(getResources().getDrawable(R.drawable.lv_dian));                app_page2.setImageDrawable(getResources().getDrawable(R.drawable.hei_dian));                app_page1.setImageDrawable(getResources().getDrawable(R.drawable.hei_dian));                break;            }            currrentPage = arg0;        }    }        private static final int TIME = 2000;    /**     * 定时切换     */    protected void initRunnable() {        viewpagerRunnable = new Runnable() {            @Override            public void run() {                int nowIndex = app_viewPager.getCurrentItem();                int count = app_viewPager.getAdapter().getCount();                // 如果下一张的索引大于最后一张,则切换到第一张                if (nowIndex + 1 >= count) {                    app_viewPager.setCurrentItem(0);                } else {                    app_viewPager.setCurrentItem(nowIndex + 1);                }                handler.postDelayed(viewpagerRunnable, TIME);            }        };        handler.postDelayed(viewpagerRunnable, TIME);    }}

initRunnable就是定时切换的代码,以上图片自行解决,完结!

0 0