ViewPager实现漂亮的引导页

发布时间 - 2026-01-11 02:55:07    点击率:

废话就不多说了,直接上效果图和代码

fry.Activity01

package fry;

import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
import java.util.List;
import java.util.ListIterator;

import com.example.viewPager.R;

import android.app.Activity;
import android.os.Bundle;
import android.support.v4.view.ViewPager;
import android.support.v4.view.ViewPager.OnPageChangeListener;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup.LayoutParams;
import android.widget.ImageView;
import android.widget.LinearLayout;

public class Activity01 extends Activity implements OnPageChangeListener,OnClickListener{
 private ViewPager viewPager;
 private List<View> views;//用来存放放进ViewPager里面的ImageView
 private int[] imageID;//
 private ImagePagerAdapter adapter;//适配器
 private LinearLayout linearLayout;
 private int currentPoint;//当前被选中中页面的下标
 @Override
 protected void onCreate(Bundle savedInstanceState) {
  // TODO Auto-generated method stub
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity01);
  initData();
  initView();
  
 }
 //初始化view
 void initView(){
  adapter=new ImagePagerAdapter(views);
  viewPager=(ViewPager) findViewById(R.id.viewPager);
  viewPager.setAdapter(adapter);
  linearLayout=(LinearLayout) findViewById(R.id.linearLayout);
  initPoint();
  viewPager.setOnPageChangeListener(this);
 }
 
 //初始化数据
 void initData(){
  //将图片的id全部放到imageID集合中
  imageID=new int[]{R.drawable.guide1,R.drawable.guide2,R.drawable.guide3,R.drawable.guide4};
  views=new ArrayList<View>();
  //给iamgeView设置LayoutParams参数
  LayoutParams layoutParams=new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);
  for(int i:imageID){
   //不确定1
   ImageView imageView=new ImageView(this);
   imageView.setImageResource(i);
   imageView.setLayoutParams(layoutParams);
   views.add(imageView);
  }
  
  
 }
 
 /*
  * 初始化页面下方的点
  */
 private void initPoint(){
  ImageView[] imageView=new ImageView[imageID.length]; 
  for(int i=0;i<linearLayout.getChildCount();i++){
   imageView[i]=(ImageView) linearLayout.getChildAt(i);
   imageView[i].setImageResource(R.drawable.point_normal);
   imageView[i].setOnClickListener(this);
   imageView[i].setTag(i);
  }
  currentPoint=0;
  imageView[currentPoint].setImageResource(R.drawable.point_select);
 }
 /*
  * 将页面下方的点全部置为未选中状态
  */
 private ImageView[] clearPoint(){
  ImageView[] imageView=new ImageView[imageID.length]; 
  for(int i=0;i<linearLayout.getChildCount();i++){
   imageView[i]=(ImageView) linearLayout.getChildAt(i);
   imageView[i].setImageResource(R.drawable.point_normal);
  }
  return imageView;
 }

 @Override
 public void onPageScrollStateChanged(int arg0) {
  // TODO Auto-generated method stub
  
 }

 @Override
 public void onPageScrolled(int arg0, float arg1, int arg2) {
  // TODO Auto-generated method stub
  
 }

 /*
  * 页面被选中时候执行的方法
  * (non-Javadoc)
  * @see android.support.v4.view.ViewPager.OnPageChangeListener#onPageSelected(int)
  */
 @Override
 public void onPageSelected(int position) {
  // TODO Auto-generated method stub
  ImageView[] imageView= clearPoint();
  imageView[position].setImageResource(R.drawable.point_select);
 }
 
 //小圆点点击事件
 @Override
 public void onClick(View v) {
  // TODO Auto-generated method stub
  int i=(Integer) v.getTag();
  viewPager.setCurrentItem(i);
 }
 
}

fry.ImagePagerAdapter

package fry;

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

import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.view.View;
import android.view.ViewGroup;

public class ImagePagerAdapter extends PagerAdapter{

 private List<View> views;
 
 
 
 public ImagePagerAdapter(List<View> views) {
  this.views=views;
 }

 @Override
 public int getCount() {
  // TODO Auto-generated method stub
  return this.views.size();
 }
 /**
  * position是在viewPager中显示图片的位置
  * 我对应的图片放到对应的位置就好了
  * instantiateItem和destroyItem是对应的
  * 一个是创建item,一个是销毁item
  */
 @Override
 public Object instantiateItem(ViewGroup container, int position) {
  ((ViewPager)container).addView(views.get(position));
  return views.get(position);
 }

 @Override
 public boolean isViewFromObject(View arg0, Object arg1) {
  // TODO Auto-generated method stub
  return arg0==arg1;
 }

 @Override
 public void destroyItem(ViewGroup container, int position, Object object) {
  ((ViewPager)container).removeView(views.get(position));
 }

}

/viewPager/res/layout/activity01.xml

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

 <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:id="@+id/linearLayout"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:orientation="horizontal"
  android:layout_gravity="bottom|center"
  >
  <ImageView 
   android:id="@+id/point1"
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:src="@drawable/point_select"
   android:padding="25dip"
   />
  <ImageView 
   android:id="@+id/point2"
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:src="@drawable/point_normal"
   android:padding="25dip"
   />
  <ImageView 
   android:id="@+id/point3"
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:src="@drawable/point_normal"
   android:padding="25dip"
   />
  <ImageView 
   android:id="@+id/point4"
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:src="@drawable/point_normal"
   android:padding="25dip"
   />
  
 </LinearLayout>

</FrameLayout>

1、多个控件(这里指小圆点)可以用List来一起访问

2、可用动态的控件设置tag来区分控件

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


# ViewPager  # 引导页  # Android使用ViewPager实现启动引导页  # Android自定义引导玩转ViewPager的方法详解  # Android开发实战之漂亮的ViewPager引导页  # Android开发实现的ViewPager引导页功能(动态加载指示器)详解  # Android控件ViewPager实现带有动画的引导页  # ViewPager实现带引导小圆点与自动跳转的引导界面  # Android利用ViewPager实现用户引导界面效果的方法  # ViewPager打造轮播图Banner/引导页Guide  # Android使用ViewPager完成app引导页  # ViewPager实现轮播图引导页  # 是在  # 多个  # 说了  # 可以用  # 小圆点  # 不多  # 不确定  # 大家多多  # 就好了  # adapter  # linearLayout  # imageID  # ImagePagerAdapter  # protected  # void  # currentPoint  # Override  # int  # extends  # implements 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: javascript读取文本节点方法小结  Laravel API资源类怎么用_Laravel API Resource数据转换  公司门户网站制作公司有哪些,怎样使用wordpress制作一个企业网站?  如何在阿里云通过域名搭建网站?  Laravel怎么生成URL_Laravel路由命名与URL生成函数详解  微信小程序 input输入框控件详解及实例(多种示例)  Laravel安装步骤详细教程_Laravel环境搭建指南  Swift中switch语句区间和元组模式匹配  EditPlus中的正则表达式 实战(1)  怎么制作一个起泡网,水泡粪全漏粪育肥舍冬季氨气超过25ppm,可以有哪些措施降低舍内氨气水平?  zabbix利用python脚本发送报警邮件的方法  Laravel的.env文件有什么用_Laravel环境变量配置与管理详解  香港服务器网站测试全流程:性能评估、SEO加载与移动适配优化  如何破解联通资金短缺导致的基站建设难题?  如何在云服务器上快速搭建个人网站?  Laravel怎么防止CSRF攻击_Laravel CSRF保护中间件原理与实践  如何在万网利用已有域名快速建站?  JS中对数组元素进行增删改移的方法总结  如何在橙子建站上传落地页?操作指南详解  如何在建站之星网店版论坛获取技术支持?  极客网站有哪些,DoNews、36氪、爱范儿、虎嗅、雷锋网、极客公园这些互联网媒体网站有什么差异?  深圳网站制作公司好吗,在深圳找工作哪个网站最好啊?  java中使用zxing批量生成二维码立牌  Laravel Eloquent关联是什么_Laravel模型一对一与一对多关系精讲  C#如何调用原生C++ COM对象详解  JavaScript中的标签模板是什么_它如何扩展字符串功能  php485函数参数是什么意思_php485各参数详细说明【介绍】  PHP 500报错的快速解决方法  Laravel如何将应用部署到生产服务器_Laravel生产环境部署流程  html5源代码发行怎么设置权限_访问权限控制方法与实践【指南】  如何用wdcp快速搭建高效网站?  Laravel如何创建自定义Facades?(详细步骤)  Android 常见的图片加载框架详细介绍  Laravel如何实现URL美化Slug功能_Laravel使用eloquent-sluggable生成别名【方法】  原生JS获取元素集合的子元素宽度实例  Laravel事件和监听器如何实现_Laravel Events & Listeners解耦应用的实战教程  Python企业级消息系统教程_KafkaRabbitMQ高并发应用  零服务器AI建站解决方案:快速部署与云端平台低成本实践  HTML透明颜色代码怎么让下拉菜单透明_下拉菜单透明背景指南【技巧】  PythonWeb开发入门教程_Flask快速构建Web应用  如何快速重置建站主机并恢复默认配置?  Laravel如何使用Blade组件和插槽?(Component代码示例)  Laravel如何实现多语言支持_Laravel本地化与国际化(i18n)配置教程  手机网站制作平台,手机靓号代理商怎么制作属于自己的手机靓号网站?  Laravel如何实现RSS订阅源功能_Laravel动态生成网站XML格式订阅内容【教程】  用yum安装MySQLdb模块的步骤方法  LinuxCD持续部署教程_自动发布与回滚机制  头像制作网站在线观看,除了站酷,还有哪些比较好的设计网站?  开心动漫网站制作软件下载,十分开心动画为何停播?  PHP 实现电台节目表的智能时间匹配与今日/明日轮播逻辑