Android开发实战之漂亮的ViewPager引导页_Android

目前很多软件安装时都会出现引导页面,用户体验很好。

下面就来DIY下:

因为视频上传很麻烦,所以截图了。

首先看看效果图:

点击小点可自由切换,滑动也可以自由切换,最后一个导航页添加了点击跳转。

开始实现引导页:

一、采集需要的图片放入drawable文件里

二、初始化每个导航页的视图

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.support.v4.view.ViewPager;
import android.util.Log;
import android.view.View;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;

import com.yyp.myapp.Adapter.ViewPagerAdapter;
import com.yyp.myapp.R;

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

public class ViewPagerActivity extends Activity implements ViewPager.OnPageChangeListener,View.OnClickListener {

 private ViewPager viewPager;
 private ImageView[] pots;
 private List<View> views;

 private TextView et_into_login;

 private ViewPagerAdapter adapter;

 //图片资源
 private int[] guideImages = {R.drawable.guide1,R.drawable.guide2,R.drawable.guide3};
 private int index;
 private LinearLayout layout;

 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_view_pager);

  initView();
  initData();
 }

 //初始化ViewPager
 public void initView()
 {
  layout = (LinearLayout) this.findViewById(R.id.ll_pots);
  viewPager = (ViewPager) this.findViewById(R.id.viewpager);
  et_into_login = (TextView) this.findViewById(R.id.et_into_login);
  views = new ArrayList<View>();
  adapter = new ViewPagerAdapter(views);
  pots = new ImageView[guideImages.length];
  Log.e("ll_viewpager", layout + "");
 }

 //初始化每一个图片数据
 public void initData()
 {
  //设置图片的长宽类型
  android.view.ViewGroup.LayoutParams layoutParams = new android.view.ViewGroup.LayoutParams(android.view.ViewGroup.LayoutParams.MATCH_PARENT,android.view.ViewGroup.LayoutParams.MATCH_PARENT);
  for(int i:guideImages)
  {
   ImageView imageView = new ImageView(this);
   imageView.setImageResource(i); //将对应图片的id传进去,用于初始化图片
   imageView.setLayoutParams(layoutParams);
   views.add(imageView);
  }
  initPot();
  viewPager.setAdapter(adapter);
  viewPager.setOnPageChangeListener(this);
 }

 //初始化每个点颜色
 public void initPot()
 {
  //点的集合
  for(int i=0;i<layout.getChildCount();i++)
  {
   //全部设置为灰色
   pots[i] = (ImageView) layout.getChildAt(i);
   pots[i].setImageResource(R.drawable.pot5);
   //给每个点设置点击事件
   pots[i].setOnClickListener(this);

   pots[i].setTag(i);
  }
  //第一个设置为橙色
  index = 0;
  pots[index].setImageResource(R.drawable.pot1);

 }

 @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

 }

 @Override
 public void onPageSelected(int position) {
  // TODO Auto-generated method stub
  SetIndex(position);

  //最后一张导航页才进行跳转提示
  if(position==2){
   et_into_login.setVisibility(View.VISIBLE);
  }else{
   et_into_login.setVisibility(View.INVISIBLE);
  }
 }

 public void SetIndex(int position) {
  // TODO Auto-generated method stub
  for(int i=0;i<layout.getChildCount();i++)
  {
   //全部设置为灰色
   pots[i] = (ImageView) layout.getChildAt(i);
   pots[i].setImageResource(R.drawable.pot5);

  }
  //选中的设置为橙色
  pots[position].setImageResource(R.drawable.pot1);

 }

 @Override
 public void onClick(View v) {
  // TODO Auto-generated method stub
  int i = (Integer) v.getTag();
  //设置当前页为i所对应的图片
  viewPager.setCurrentItem(i);
  if(i==2){
   et_into_login.setVisibility(View.VISIBLE);
  }
 }

 //跳转到登录界面
 public void goLogin(View v){
  Intent goLogin = new Intent(this,LoginActivity.class);
  startActivity(goLogin);
  finish();
 }
}

三、初始化期间自定义ViewPager适配器

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

import java.util.List;

/**
 * Created by yyp on 2015/10/25.
 */
public class ViewPagerAdapter extends PagerAdapter {

 //获得导航页的图片集
 private List<View> views;

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

 //获得界面个数
 @Override
 public int getCount() {

  //返回图片页数
  return views.size();
 }

 //初始化position位置的界面
 @Override
 public Object instantiateItem(ViewGroup container, int position) {

  ((ViewGroup)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) {
  container.removeView(views.get(position));
 }
}

在用户体验方面,我们能发掘的东西还有很多,说不定下次流行的视图,就是我们某个人做出来的。

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

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索viewpager
引导页
viewpager引导页、viewpager实现引导页、viewpager引导页 demo、多系统引导工具 漂亮、漂亮的html5引导页面,以便于您获取更多的相关知识。

时间: 2024-07-31 22:50:28

Android开发实战之漂亮的ViewPager引导页_Android的相关文章

Android开发实战之漂亮的ViewPager引导页

目前很多软件安装时都会出现引导页面,用户体验很好. 下面就来DIY下: 因为视频上传很麻烦,所以截图了. 首先看看效果图: 点击小点可自由切换,滑动也可以自由切换,最后一个导航页添加了点击跳转. 开始实现引导页: 一.采集需要的图片放入drawable文件里 二.初始化每个导航页的视图 import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.suppo

《Java和Android开发实战详解》——2.1节如何构建应用程序

2.1 如何构建应用程序 Java和Android开发实战详解 一般来说,我们使用Java程序语言的目的,就是编写程序代码构建应用程序,以期让计算机执行来解决问题. 2.1.1 如何编写程序代码 程序设计(Programming)很困难吗?事实上,如果你可以引导问路人到达目的地.走迷宫或开车到你家,一步一步详细列出活动流程,就表示你一定可以编写程序代码.不过,在列流程时请注意!计算机一点都不聪明,也不会举一反三,所以,我们需要告诉计算机详细的步骤和信息,不能只有模棱两可的内容. 例如,在北京开车

我的 Android 开发实战经验总结

我的 Android 开发实战经验总结 字数4440 阅读5137 评论43 喜欢250 以前一直想写一篇总结 Android 开发经验的文章,估计当时的我还达不到某种水平,所以思路跟不上,下笔又捉襟见肘.近日,思路较为明朗,于是重新操起键盘开始码字一番.先声明一下哈,本人不是大厂的程序猿.去年毕业前,就一直在当前创业小团队从事自己热爱的打码事业至今.下面总结是建立在我当前的技术水平和认知上写的,如有不同看法欢迎留下评论互相交流. 1.理解抽象,封装变化 目前 Android 平台上绝大部分开发

《Java和Android开发实战详解》——1.1节编程语言基础知识

1.1编程语言基础知识 Java和Android开发实战详解 "编程语言"(Programming Language)是人类告诉计算机如何工作的一款语言,如同人与人之间沟通使用自然语言,编程语言被设计用于人类与计算机之间进行沟通.从技术角度来说,编程语言就是一款将执行指令传达给计算机的标准通信技术. 1.1.1 程序.软件与应用程序 在说明编程语言之前,我们需要了解什么是程序.软件与应用程序.简单地说来,编程语言提供了语法,可以让我们编写程序代码来建立程序,程序经编译建立成应用程序后,

《Java和Android开发实战详解》——2.4节Eclipse IDE的项目管理与使用

2.4 Eclipse IDE的项目管理与使用 Java和Android开发实战详解 一个Eclipse的工作空间可以同时拥有多个项目,在Eclipse IDE可以切换不同的工作空间,对于已有的Java项目或Java程序文件,我们可以直接导入到目前打开的工作空间或项目. 2.4.1 切换工作空间 step01Eclipse的工作空间中可以新增项目,但不能打开非此工作空间的其他项目,不过,我们可以将当前工作空间切换成其他工作空间.例如,本书每一章的范例都对应有一个工作空间,我们可以在打开第2章工作

《Java和Android开发实战详解》——1.4节搭建Java开发环境

1.4 搭建Java开发环境 Java和Android开发实战详解 在开发Java应用程序前需要搭建Java的开发环境,首先需要安装JDK,然后即可配合编辑工具或集成开发环境来创建Java应用程序.本书主要介绍如何使用Eclipse集成开发环境来创建Java和Android应用程序. 1.4.1 安装与设置JDK 一般来说,有些集成开发环境会一并安装JDK,例如JBuilder,不过,大部分集成开发环境需要用户自行安装JDK.本书使用的JDK版本是JDK 7(Java SE Developmen

《Java和Android开发实战详解》——1.2节Java基础知识

1.2 Java基础知识 Java和Android开发实战详解 Java语言类似于C++是一种编译型语言,不过两者并不完全相同,严格说来,Java是结合编译和解释优点的一种编程语言. 1.2.1 Java平台 "平台"(Platform)是一种结合硬件和软件的执行环境.Java既是一种高级的面向对象的编程语言,也是一个平台.Java平台是一种纯软件平台,它可以在各种基于硬件的平台上运行,与硬件无关,主要是由JVM和Java API两个部分组成. 1.JVM虚拟机 JVM(Java Vi

《Java和Android开发实战详解》——1.3节Java语言的开发环境

1.3 Java语言的开发环境 Java和Android开发实战详解 编程语言的"开发环境"(Development Environment)指的是一组工具程序,可用来创建.编译和维护编程语言所构建的应用程序.一般来说,我们可以使用两种Java开发环境来创建Java应用程序. 1.终端机模式的开发环境 或称为"命令行模式",对于传统MS-DOS或UNIX.Linux系统的用户,程序执行时的输入数据和输出数据都是使用"命令行界面"(Command-

《Java和Android开发实战详解》——1.5节习题

习题 Java和Android开发实战详解 1.请说明什么是程序与软件,以及编程语言的种类. 2.第五代编程语言主要是使用在人工智能和专家系统的逻辑分析语言,也称为----语言.请说明低级和高级编程语言的差异为何? 3.请比较编译型和解释型编程语言的差异.各举出两种编程语言说明. 4.请简单说明计算机是如何执行.计算机CPU访问内存数据的主要步骤是什么? 5.请问什么是Java平台?Java平台是由----和----组件组成.为什么Java是一种跨平台的编程语言? 6.请简单说明JVM是什么,并