Android中ViewPager常用功能2----广告栏自动滑动和手动滑动

效果图:


添加依赖:

compile 'com.github.bumptech.glide:glide:3.7.0'
AndroidManifest.xml中添加网络权限
<uses-permission android:name="android.permission.INTERNET" />
MainActivity中:
package com.example.viewpagertest3;

import android.app.Activity;
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.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.LinearLayout;

import com.bumptech.glide.Glide;

import java.util.ArrayList;
import java.util.List;

/**
 * viewPager自动滑动和手动滑动
 */
public class MainActivity extends Activity {
    //  viewPager
    private ViewPager viewPager;
    //  存放图片资源的list
    private List<String> imgResList;
    //  装view的数组
    private View[] viewArray;
    //  下面小点的外部布局
    private LinearLayout llContainer;
    //  存放小点的数组
    private ImageView[] tips;
    //
    private boolean isIdeal=true;
    //
    private boolean isSend=true;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        initView();
        myOnclick();
    }
    /**
     * 初始化控件
     */
    private void initView() {

        viewPager = (ViewPager)findViewById(R.id.viewPager);
        imgResList=new ArrayList<>();
        imgResList.add("http://auto.gasgoo.com/Upload/Files/201303080456241article.jpg");
        imgResList.add("http://img2.niutuku.com/desk/1208/0650/bizhi-0650-15882.jpg");
        imgResList.add("http://imgsrc.baidu.com/imgad/pic/item/09fa513d269759ee991ed0e8b8fb43166d22df43.jpg");
        imgResList.add("http://imgsrc.baidu.com/imgad/pic/item/43a7d933c895d1439284730579f082025aaf0721.jpg");

        viewArray = new View[imgResList.size()];
//      实例化布局,加载图片,并放到数组中
        for (int i = 0; i < viewArray.length; i++) {
//          存放布局
            LayoutInflater layoutInflater = getLayoutInflater();
            View view=layoutInflater.inflate(R.layout.activity_lay,null);
            ImageView imageView = (ImageView) view.findViewById(R.id.imageView);
            Glide.with(this).load(imgResList.get(i)).into(imageView);
            viewArray[i]=view;
        }


//      设置小点的布局
        llContainer = (LinearLayout)findViewById(R.id.llContainer);
//      存放小点的的数组
        tips = new ImageView[imgResList.size()];
        for (int i = 0; i < tips.length; i++) {
            ImageView imageView = new ImageView(this);
            imageView.setLayoutParams(new ViewGroup.LayoutParams(50,50));
            tips[i] = imageView;
//          刚开始第一个为亮色
            if (i == 0) {
                tips[i].setBackgroundResource(R.drawable.page_indicator_focused);
            } else {
                tips[i].setBackgroundResource(R.drawable.page_indicator_unfocused);
            }

            llContainer.addView(imageView);
        }
        viewPager.setAdapter(new MyAdapter());
    }
    private Handler handler = new Handler() {
        public void handleMessage(Message msg) {
//          自动滑动
            int position = viewPager.getCurrentItem();
            Log.e("111", "shou dao xiao xi position"+position);
            position++;
            viewPager.setCurrentItem(position);
        }
    };

    /**
     * 适配器绑定图片
     */
    public 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 void destroyItem(ViewGroup container, int position, Object object) {
//          取余
            View view = viewArray[position % viewArray.length];
            container.removeView(view);

        }
        @Override
        public Object instantiateItem(ViewGroup container, int position) {
//          取余
            View view = viewArray[position % viewArray.length];
            container.addView(view);
            return view;

        }
    }

    /**
     * 点击事件
     */
    private void myOnclick(){
//      监听滑动
        viewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
//          这个方法会在屏幕滚动过程中不断被调用。
            @Override
            public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

            }
//          代表哪个页面被选中。
            @Override
            public void onPageSelected(int position) {
                setImageBackground(position % viewArray.length);
            }
//          这个方法在手指操作屏幕的时候发生变化。有三个值:0(END),1(PRESS) , 2(UP) 。
            @Override
            public void onPageScrollStateChanged(int state) {
//              0(END),1(PRESS) , 2(UP)
//              手指按下时state=1
//              当手按下时,不要自动滑动
                Log.e("111", "state>>>" + state);
                if (state == 1) {
                    isSend = false;
                } else {
                    isSend = true;
                }
            }
        });

        new Thread() {
            @Override
            public void run() {
                super.run();
                try {
//                    isIdeal设置为false时会关掉线程
                    while (isIdeal) {
                        Thread.sleep(3000);
//                     isSend 控制发消息
                        if (isSend) {
                            handler.sendEmptyMessage(1);
                        }
                    }
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }


            }
        }.start();

    }

    /**
     *小圆点自动切换
     */
    private void setImageBackground(int selectItems) {
        for (int i = 0; i < tips.length; i++) {
            if (i == selectItems) {
                tips[i].setBackgroundResource(R.drawable.page_indicator_focused);
            } else {
                tips[i].setBackgroundResource(R.drawable.page_indicator_unfocused);
            }
        }
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
//      关闭线程
        isIdeal=false;
    }
}
activity_main.xml中
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.example.viewpagertest3.MainActivity"
    android:orientation="vertical"
    >

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

        <android.support.v4.view.ViewPager
            android:id="@+id/viewPager"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center">
        </android.support.v4.view.ViewPager>

        <RelativeLayout
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical"
            android:layout_marginBottom="30dp"
            >
            <LinearLayout
                android:id="@+id/llContainer"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:layout_alignParentBottom="true"
                android:layout_marginBottom="30dp"
                android:gravity="center_horizontal"
                android:orientation="horizontal">
            </LinearLayout>
        </RelativeLayout>


    </RelativeLayout>
</LinearLayout>
activity_lay.xml中
<?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" >
  
    <ImageView
        android:id="@+id/imageView"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:src="@drawable/b1"
        android:scaleType="fitXY"
         />
    

</LinearLayout>
源码下载
ViewPadeDemo----viewpagertest3
http://download.csdn.net/detail/zhaihaohao1/9911113
参考文章:
http://blog.csdn.net/xiaanming/article/details/8966621










评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值