ViewPager图片轮转带点的
布局页面设置:
<?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图片轮转带点的的更多相关文章
- salesforce 零基础学习(六十一)apex:component简单使用以及图片轮转播放的实现
有的时候,我们项目有可能有类似需求:做一个简单的图像轮转播放功能,不同的VF页面调用可以显示不同的图片以及不同的图片描述.这种情况,如果在每个页面单独处理相关的图像轮转播放则显得代码特别冗余,此种情况 ...
- 经常用的Jquery图片轮转
1.HTML结构 <div class="main_view"> <div class="window"> ...
- Android中启动页ViewPager和ViewFlipper带指示器
版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[+] 首先我们来分析一下,想要实现启动页的功能,大家第一个想到的就是使用ViewPager,使用ViewPager确实是一种比 ...
- ViewPager图片切换的简单案例
1)ViewPager类直接继承了ViewGroup类,所有它是一个容器类,可以在其中添加其他的view类. 2)ViewPager类需要一个PagerAdapter适配器类给它提供数据. 向右滑动切 ...
- android viewpager 图片翻页例子
使用ViewPager这个类可以轻松实现多个页面的滑动功能 viewpager默认在工具界面上是找不到的,需求添加android-support-v4.jar包: 如果没有找到,需要打开Android ...
- C# Qrcode生成二维码支持中文,带图片,带文字 2015-01-22 15:11 616人阅读 评论(1) 收藏
1.下载Qrcode库源码,下载地址:http://www.codeproject.com/Articles/20574/Open-Source-QRCode-Library 2.打开源码时,部分类库 ...
- Viewpager图片自动轮播,网络图片加载,图片自动刷新
package com.teffy.viewpager; import java.util.ArrayList; import java.util.concurrent.Executors; impo ...
- android下ViewPager的使用,带下部选项栏的切换动画
(文章针对类似我这种初学者,大神看到不要嘲笑) 演示 我的规矩是先上GIF动画效果(Linux下用转的GIF,清晰度还可以但是不知道为什么放博客上,界面会这么大): 代码: android中有View ...
- C#Qrcode生成二维码支持中文,带图片,带文字
C#Qrcode生成二维码支持中文带图片的操作请看二楼的帖子,当然开始需要下载一下C#Qrcode的源码 下载地址 : http://www.codeproject.com/Articles/2057 ...
随机推荐
- mysql source命令超大文件导入方法总结
本文章来给各位朋友介绍利用mysql source命令超大文件导入方法总结,下面收集了两种解决办法,一种是把数据库分文件导出然后再导入,另一种是修改my.ini配置文件,下面我一一给各位朋友介绍. 导 ...
- ipod中,写计时器倒计时界面倒计时没有更改
innerText 改为textContent. IE.Safari.Opera和Chrome支持innerText属性.Firefox虽然不支持innerText,但支持作用类似的textConte ...
- ubnt+ros 接入无线
ubnt+ros 接入无线 一.ubnt配置(UBNT NanoStation LOCOM2 LOCO M2)1.ubnt接poe,转lan接到pc2.ubnt默认ip是192.168.1.20,用户 ...
- EDIUS校正颜色轮的方法
小伙伴平时肯定能在网络上看到各种各样的视频吧,它们有的搞笑,有的炫酷,有的教育......那么你们有没有想过做出带有自己创意的视频呢?其实这个愿望很容易实现的,学好一款视频编辑软件就可以了.今天小编就 ...
- .NET垃圾回收:非托管资源,IDispose和析构函数的结合
http://blog.jobbole.com/85436/ 原文出处: 田小计划 欢迎分享原创到伯乐头条 前面一篇文章介绍了垃圾回收的基本工作原理,垃圾回收器并不是可以管理内存中的所有资源.对于 ...
- SQL总结(七)查询实战
SQL总结(七)查询实战 一.场景 给定一个场景,学生选课系统为例,大家很熟悉. 主要关系: 学生(学号.姓名.年龄.性别) 教师(教师ID,教师姓名) 课程(课程ID,课程名称,任教教师ID) 成绩 ...
- SIFT定位算法关键步骤的说明
1. SIFT算法中一些符号的说明 $I(x,y)$表示原图像. $G(x,y,\sigma)$表示高斯滤波器,其中$G(x,y,\sigma) = \frac{1}{2\pi\sigma^2}exp ...
- < 独立项目 - 文本挖掘 > - 2016/11/13 第二更 - <Python环境准备>
< 独立项目 - 文本挖掘 > 项目立项的相关背景介绍,TODO方向. 一.Ubuntu环境配置 主机系统:Windows 7 SP1 64位操作系统 | i5-4210 CPU | ...
- 动画---图形图像与动画(三)Animation效果的XML实现
使用XML来定义Tween Animation 动画的XML文件在工程中res/anim目录,这个文件必须包含一个根元素,可以使<alpha><scale> <trans ...
- Electron实战:创建ELectron开发的window应用安装包
前言:研究electron自动更新的时候,在electron的官方文档auto-updater 中,提到了在几个平台mac,Linux,windows下electron 的自动更新方法,其中winds ...