布局页面设置:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent">

    <android.support.v4.view.ViewPager
        android:id="@+id/viewpager"
        android:layout_width="match_parent"
        android:layout_height="match_parent">

    </android.support.v4.view.ViewPager>

    
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical"
            android:layout_alignParentBottom="true"
            android:layout_marginBottom="30dp"
            android:layout_alignParentLeft="true">
            <Button
                android:id="@+id/btn"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="center"
                android:text="点击进入"
                android:textColor="#ffffff"
                android:textSize="15sp"
                android:visibility="invisible"/>
            <LinearLayout
                android:id="@+id/point"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="center"
                android:layout_marginTop="30dp"
                android:gravity="center"

                android:orientation="horizontal"
                >

            </LinearLayout>
        </LinearLayout>
</RelativeLayout>

adapter适配器设置:

package com.example.administrator.test_1216.adapter;

import android.content.Context;
import android.support.v4.view.PagerAdapter;
import android.view.View;
import android.view.ViewGroup;

import java.util.List;

/**
 * Created by Administrator on 2016/12/19.
 */

public class MyPagerAdapter extends PagerAdapter {

    Context context;
    List<View> views;

    public MyPagerAdapter(Context context, List<View> views) {
        this.context = context;
        this.views = views;
    }

    @Override
    public int getCount() {
        return views.size();
    }

    /**
     *判断是否由对象生成界面
     * @param view  应该显示的界面
     * @param object  被检查的界面
     * @return
     */
    @Override
    public boolean isViewFromObject(View view, Object object) {
        return view==object;
    }

    /**
     * 初始化position处的界面
     * @param container 将要显示的页面
     * @param position 将要显示的页面对应的位置
     * @return
     */
    @Override
    public Object instantiateItem(ViewGroup container, int position) {
        //添加视图
        container.addView(views.get(position));
        return views.get(position);

    }

    /**
     * 销毁postion位置的界面
     * @param container 将被销毁的界面
     * @param position 将被销毁界面所在的位置
     * @param object instantiateItem返回的对象
     */
    @Override
    public void destroyItem(ViewGroup container, int position, Object object) {

        //移除视图
        container.removeView((View) object);
    }
}
activity设置页面:

public class MyPagerActivity extends AppCompatActivity implements View.OnClickListener, ViewPager.OnPageChangeListener {
    //声明控件
    private ViewPager viewPager;
    private Button btn;
    private LinearLayout point;

    //声明集合
    private  List<View> views;
    //点数组
    private ImageView[] points=null;
    // 适配器
    private MyPagerAdapter adapter;
    //声明图片数组
    private int[] images = {R.mipmap.welcome, R.mipmap.welcome1,
            R.mipmap.welcome2, R.mipmap.welcome3};

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.viewpager_activity);
        //绑定id
        viewPager= (ViewPager) findViewById(R.id.viewpager);
        btn= (Button) findViewById(R.id.btn);
        point= (LinearLayout) findViewById(R.id.point);
        //设置监听
        btn.setOnClickListener(this);
        //初始化集合
        views=new ArrayList<View>();
        //初始化小圆点集合
        points=new ImageView[images.length];
        //遍历图片数组
        for (int i = 0; i <images.length ; i++) {
            ImageView imageView=new ImageView(this);
            imageView.setBackgroundResource(images[i]);
            //将图片添加到集合中
            views.add(imageView);
            //循环加入指示器
            points[i]=new ImageView(this);
            //设置首次启动时圆点的状态
            if(i==0){
                points[i].setBackgroundResource(R.mipmap.point_cuttent);
            }else {
                points[i].setBackgroundResource(R.mipmap.point_go);
            }
            //将小圆点放在布局里
            point.addView(points[i]);
        }
        //初始化适配器
        adapter=new MyPagerAdapter(this,views);
        viewPager.setAdapter(adapter);
        //设置页面滚动监听
        viewPager.setOnPageChangeListener(this);
    }

    @Override
    public void onClick(View v) {
        switch (v.getId()) {
            case R.id.btn:
                Toast.makeText(this, "点击成功", Toast.LENGTH_SHORT).show();
                break;
        }

    }
    /**
     * 此方法在页面跳转完成后调用
     * @param position:当前选中页面对应的位置
     */
    @Override
    public void onPageSelected(int position) {
        if(position==points.length-1){
            btn.setVisibility(View.VISIBLE);
        }else {
            btn.setVisibility(View.INVISIBLE);
        }
        // 更改小圆点的变化
        for (int i = 0; i <points.length ; i++) {
            if(position==i){//当前页面
                points[i].setBackgroundResource(R.mipmap.point_cuttent);
            }else {
                points[i].setBackgroundResource(R.mipmap.point_go);
            }
        }
    }

    /**
     * 此方法滑动的时候调用
     * @param position:当前页面对应的位置
     * @param positionOffset:当前页面偏移的百分比
     * @param positionOffsetPixels:当前页面偏移的像素位置
     */
    @Override
    public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

    }
    /**
     * 此方法在状态改变时调用
     * @param state:state==0:表示什么都没做
     *                state==1:表示正在滑动
     *                state==2:表示滑动完毕
     *
     */
    @Override
    public void onPageScrollStateChanged(int state) {

    }
}

效果图:

ViewPager图片轮转带点的的更多相关文章

  1. salesforce 零基础学习(六十一)apex:component简单使用以及图片轮转播放的实现

    有的时候,我们项目有可能有类似需求:做一个简单的图像轮转播放功能,不同的VF页面调用可以显示不同的图片以及不同的图片描述.这种情况,如果在每个页面单独处理相关的图像轮转播放则显得代码特别冗余,此种情况 ...

  2. 经常用的Jquery图片轮转

    1.HTML结构 <div class="main_view">                 <div class="window"> ...

  3. Android中启动页ViewPager和ViewFlipper带指示器

    版权声明:本文为博主原创文章,未经博主允许不得转载.   目录(?)[+]   首先我们来分析一下,想要实现启动页的功能,大家第一个想到的就是使用ViewPager,使用ViewPager确实是一种比 ...

  4. ViewPager图片切换的简单案例

    1)ViewPager类直接继承了ViewGroup类,所有它是一个容器类,可以在其中添加其他的view类. 2)ViewPager类需要一个PagerAdapter适配器类给它提供数据. 向右滑动切 ...

  5. android viewpager 图片翻页例子

    使用ViewPager这个类可以轻松实现多个页面的滑动功能 viewpager默认在工具界面上是找不到的,需求添加android-support-v4.jar包: 如果没有找到,需要打开Android ...

  6. C# Qrcode生成二维码支持中文,带图片,带文字 2015-01-22 15:11 616人阅读 评论(1) 收藏

    1.下载Qrcode库源码,下载地址:http://www.codeproject.com/Articles/20574/Open-Source-QRCode-Library 2.打开源码时,部分类库 ...

  7. Viewpager图片自动轮播,网络图片加载,图片自动刷新

    package com.teffy.viewpager; import java.util.ArrayList; import java.util.concurrent.Executors; impo ...

  8. android下ViewPager的使用,带下部选项栏的切换动画

    (文章针对类似我这种初学者,大神看到不要嘲笑) 演示 我的规矩是先上GIF动画效果(Linux下用转的GIF,清晰度还可以但是不知道为什么放博客上,界面会这么大): 代码: android中有View ...

  9. C#Qrcode生成二维码支持中文,带图片,带文字

    C#Qrcode生成二维码支持中文带图片的操作请看二楼的帖子,当然开始需要下载一下C#Qrcode的源码 下载地址 : http://www.codeproject.com/Articles/2057 ...

随机推荐

  1. 关于Mac下的SSH客户端iterm2等配置

    linux后台开发的同学们晓得,在windows下有xshell\securecrt这样优秀的ssh客户端软件.mac下查找了下,有securecrt mac版,网上也有破解的,试用了一段时间,一个问 ...

  2. 图论--最近公共祖先问题(LCA)模板

    最近公共祖先问题(LCA)是求一颗树上的某两点距离他们最近的公共祖先节点,由于树的特性,树上两点之间路径是唯一的,所以对于很多处理关于树的路径问题的时候为了得知树两点的间的路径,LCA是几乎最有效的解 ...

  3. lua脚本教程

    --[[工具准备 1.一个支持UTF8无BOM编码的工具,例如:notepad++ 2.一个多文件搜索关键字的工具,例如:File Seeker 3.Eluna对应端的源码 ]]-- --[[网站相关 ...

  4. win7 共享问题,"您可能没有权限使用网络资源"

    原文:http://hi.baidu.com/celian521/item/81b16e7c59996e295d178946 1 打开受访者的guest权限2 开始--运行--gpedit.msc3 ...

  5. linux下的find文件查找命令与grep文件内容查找命令

    在使用linux时,经常需要进行文件查找.其中查找的命令主要有find和grep.两个命令是有区的. 区别:(1)find命令是根据文件的属性进行查找,如文件名,文件大小,所有者,所属组,是否为空,访 ...

  6. 【AT91SAM3S】英倍特串口示例工程05-UART中,串口是怎样初始化的

    在这个示例工程的main.c文件中,进入main之后,没有发现串口功能的任何配置.直接使用了printf这个东西进行输出.将软件下载到开发板上之后,在电脑端使用串口软件,可以看板子有数据发来.说明这个 ...

  7. Error Domain=com.alamofire.error.serialization.response Code=-1016 "Request failed: unacceptabl

    在使用AFNetworking 2.0  的时候本来一切很顺畅,但是中途遇到几个比较坑的地方 这里分享一下爬坑经历,忘读者不能速爬坑! 在发送请求后,NSURLSessionDataTask一直报错 ...

  8. gerrit 修改前一次提交的方法(转载)

    From:http://sinojelly.sinaapp.com/2011/08/git-changes-submitted-by-the-previous-method-pay-special-a ...

  9. RESTClient使用

    RESTClient使用

  10. AX Dynamic 2012 tabletype:TempDB使用

    LedgerJournalTmp ledgerJournalTmpJoin; LedgerJournalTransAccrual this.takeOwnershipOfTempTable(ledge ...