Android开发:Android使用ViewPager实现启动APP时向导界面 引导页

Android开发--实现Android引导页 Android开发——实现引导页 阅读详情

目录

引言

效果图

一、Activity页

二、layout布局页

 三、viewpager适配器代码

四、资源文件

结束语


 

 

引言

最近项目中需要引入滑动引导页,于是,在网上查了一下资料,然后进行了具体的实现。

 

效果图

    

 

首先写一个layout布局来展示引导页内容,在布局中放入一个viewpager控件。

具体实现代码如下

一、Activity页


/**
 * Created by  wsl
 * on 2019/6/18 12:52
 */
public class EZActivity extends BaseActivity {
    private ViewPager viewpager;
    private Button btnSubmit;
    private ImageView ivPoint1, ivPoint2, ivPoint3, ivPoint4;
    private List<ImageView> guidePointList;
   
    private Animation animation01 = null;

    /**
     * 启动activity
     *
     * @param context 上下文
     */
    public static void startActivity(Context context) {
        Intent intent = new Intent();
        intent.setClass(context, EZActivity.class);
        context.startActivity(intent);
    }

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        //设置是否显示标题栏
        setShowTitle(true);
        //设置是否显示状态栏
        setShowStatusBar(true);
        //是否允许屏幕旋转
        setAllowScreenRoate(true);
        //以上设置一定要在 super.onCreate(savedInstanceState) 方法之前设置
        super.onCreate(savedInstanceState);

    }

    @Override
    protected int initLayout() {
        //初始化布局
        return R.layout.activity_ez_layout;
    }

    @Override
    protected void initView() {
        guidePointList = new ArrayList<>();
        viewpager = findViewById(R.id.viewpager);
        btnSubmit = findViewById(R.id.btnSubmit);
        ivPoint1 = findViewById(R.id.ivPoint1);
        ivPoint2 = findViewById(R.id.ivPoint2);
        ivPoint3 = findViewById(R.id.ivPoint3);
        ivPoint4 = findViewById(R.id.ivPoint4);

        addGuidePointToList();
        animation01 = AnimationUtils.loadAnimation(context, R.anim.animation_guide_alpha_0_1);
    }

    /**
     * 添加引导点 到 list
     */
    private void addGuidePointToList() {
        guidePointList.add(ivPoint1);
        guidePointList.add(ivPoint2);
        guidePointList.add(ivPoint3);
        guidePointList.add(ivPoint4);
    }

    @Override
    protected void initData() {
        final List<Integer> list = new ArrayList<>();
        list.add(R.drawable.book_1);
        list.add(R.drawable.book_2);
        list.add(R.drawable.book_3);
        list.add(R.drawable.book_4);
        final GuideAdapter guideAdapter = new GuideAdapter(context, list);
        viewpager.setAdapter(guideAdapter);
        viewpager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
            @Override
            public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

            }

            @Override
            public void onPageSelected(int position) {
                if (position == list.size() - 1) {
                    btnSubmit.setVisibility(View.VISIBLE);
                    if (animation01 != null) {
                        btnSubmit.setAnimation(animation01);
                        animation01.start();
                    }
                } else {
                    btnSubmit.setVisibility(View.GONE);
                }

                setGuidePoint(position);
            }

            @Override
            public void onPageScrollStateChanged(int state) {

            }
        });
//        viewpager.setPageTransformer(false, new DepthPageTransformer());

      
    }

    /**
     * 设置引导点  的状态 (选中、未选中)
     *
     * @param position 当前滑动到的位置
     */
    private void setGuidePoint(int position) {
        for (int i = 0; i < guidePointList.size(); i++) {
            if (position == i) {
                guidePointList.get(i).setImageResource(R.drawable.shape_guide_point_big);
            } else {
                guidePointList.get(i).setImageResource(R.drawable.shape_guide_point_small);
            }
        }
    }

    /**
     * 点击事件
     */
    public OnSingleClickListener onSingleClickListener = new OnSingleClickListener() {
        @Override
        public void onSingleClick(View view) {
            switch (view.getId()) {
                default:
                    break;
            }
        }
    };



    @Override
    protected void onDestroy() {
        super.onDestroy();

    }
}

 

二、layout布局页

 

<?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:overScrollMode="never" />

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal|bottom"
        android:orientation="vertical">

        <Button
            android:id="@+id/btnSubmit"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_horizontal"
            android:text="进入主页"
            android:visibility="gone" />

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="center_horizontal"
            android:layout_margin="8dp"
            android:gravity="center"
            android:orientation="horizontal">

            <ImageView
                android:id="@+id/ivPoint1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_margin="@dimen/margin_5"
                android:src="@drawable/shape_guide_point_big" />

            <ImageView
                android:id="@+id/ivPoint2"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_margin="@dimen/margin_5"
                android:src="@drawable/shape_guide_point_small" />

            <ImageView
                android:id="@+id/ivPoint3"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_margin="@dimen/margin_5"
                android:src="@drawable/shape_guide_point_small" />

            <ImageView
                android:id="@+id/ivPoint4"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_margin="@dimen/margin_5"
                android:src="@drawable/shape_guide_point_small" />
        </LinearLayout>

    </LinearLayout>

   
</FrameLayout>

 

 三、viewpager适配器代码


/**
 * Created by  wsl
 * on 2019/9/4 16:35
 */
public class GuideAdapter extends PagerAdapter {
    private List<Integer> list;
    private Context context;

    public GuideAdapter(Context context, List<Integer> list) {
        this.context = context;
        this.list = list;
    }

    @Override
    public int getCount() {
        return list == null ? 0 : list.size();
    }

    @Override
    public boolean isViewFromObject(@NonNull View view, @NonNull Object object) {
        return view == object;
    }

    @NonNull
    @Override
    public Object instantiateItem(@NonNull ViewGroup container, int position) {
        ImageView imageView = new ImageView(context);
        imageView.setScaleType(ImageView.ScaleType.FIT_XY);
        imageView.setImageResource(list.get(position));
        container.addView(imageView);
        return imageView;
    }

    @Override
    public void destroyItem(@NonNull ViewGroup container, int position, @NonNull Object object) {
        container.removeView((View) object);
    }
}

 

 

四、资源文件

 animation_guide_alpha_0_1.xml文件:

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <alpha
        android:duration="1000"
        android:fromAlpha="0"
        android:toAlpha="1" />
</set>

shape_guide_point_big.xml文件:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="#FFFFFF" />
<size
    android:width="8dp"
    android:height="8dp" />
<corners android:radius="4dp" />
</shape>

 

shape_guide_point_small.xml文件:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <solid android:color="#FFFFFF" />
    <size
        android:width="5dp"
        android:height="5dp" />
    <corners android:radius="2.5dp" />
</shape>

 

结束语

BaseActivity在之前的文章中有详细描述,如有需要,请查看之前的文章。

 

 

Android 实现闪屏页+功能引导页 转载请注明出处: http://blog.youkuaiyun.com/like_program/article/details/52961753 闪屏页和功能引导页想必大家都很熟悉了,现在很多 App 启动都有闪屏页和功能引导页,那么今天我来教下大家怎么实现闪屏页和功能引导页。 阅读详情

相关推荐

实现 Android 引导页面的步骤详解

在这个示例代码中,我们使用了一个静态的图片资源数组、标题数组和描述数组来定义引导页面的内容。在本文中,我将逐步介绍如何使用Android开发实现一个简单的引导页面,并附上相应的源代码。在这个示例布局中,我们使用了一个垂直排列的 LinearLayout,并添加了一个 ImageView 来显示图片,两个 TextView 分别用于显示标题和描述文本。至此,我们已经完成了 Android 引导页面的实现。你可以根据需要自定义引导页面的布局和内容,使其适应你的应用需求。步骤四:设定引导页面为应用的启动页。

2301_79326891的博客 969

Android滑动页面ViewPager的详细总结

ViewPager是谷歌官方给我们提供的一个兼容低版本安卓设备的软件包,里面包囊了只有在安卓3.0以上可以使用的api。而viewpager就是其中之一利用它,我们可以做很多事情,从最简单的导航,到页面菜单等等。

wenzhi的博客 1万+

Android自定义启动向导APP

启动向导是指在用户首次打开应用程序时显示的引导页面,用于向用户展示应用程序的功能和特性,并帮助用户完成初始化设置。至此,我们已经完成了一个简单的Android自定义启动向导应用程序的开发。用户在首次打开应用程序时,将会看到欢迎页面和多个引导页面,以帮助用户了解和设置应用程序的功能。首先,我们需要创建一个新的Android项目,并设置基本的应用程序配置。接下来,我们将创建一个欢迎页面作为启动向导的第一页。在之后的步骤中,我们将创建每一页的Fragment,并将它们添加到。的控件,用于显示启动向导的页面。

DevGlider的博客 298

Android ViewPager实现应用启动界面

Android应用启动界面可以使用Google提供的ViewPager来实现。ViewPager的使用可以对比ListView的使用,即设计UI、构造数据源、创建适配器,设置适配器。启动页面上显示的一般是版本、宣传等信息,因此不需要构造数据源,只需创建适配器,设置适配器。详细内容如下: 1、UI设计     启动页面的设计分为两部分,一部分是宿主页面即ViewPager所在页面,另一部分是滑动

laichunlin的专栏 1223

【Android笔记57】Android之实现应用程序启动页、引导页功能

android引导页的功能效果,在很多的APP应用程序里面,都可以见到,当我们第一次下载APP的时候,进入主页面之前,都会有一些引导步骤页面,当滑动到最后一个页面的时候,就会出现一个开始体验之类的按钮,之后就是进入到APP的主界面,下面给出一个引导页的运行效果。引导页功能,主要是利用ViewPager翻页视图组件来实现的,将多个引导页的内容通过ViewPager来展示,当滑动到最后一个页面视图的时候,再显示一个按钮,给这个按钮添加点击事件。当APP启动的时候,引导页作为第一个启动的活动页面,首先判断是否

✅ Java 开发工程师 1465

Android启动页与引导页设计及应用更新实战

引导页,又称“首次引导页”或“教程页”,通常在用户首次安装并启动应用时展示。它的主要作用包括:功能介绍:向用户介绍应用的主要功能与操作方式。流程引导:引导用户完成关键操作路径,如注册、授权、设置等。品牌传达:通过视觉设计传达品牌理念与调性。情感连接:建立用户与应用之间的情感连接,提升好感度。常见的使用场景包括:- 新用户首次打开应用。- 应用重大版本更新后首次启动。- 用户首次使用某个新功能模块时。

weixin_42418754的博客 1211

使用ViewPager实现Android启动引导页

学习了ViewPager的基本知识,可以尝试着实实现一个Android的启动项 基础部分可以见我的另一篇博文 https://blog.youkuaiyun.com/nishigesb123/article/details/88706036 首先当然是 布局 和之前的ViewPager demo不一样,这里没有用到PagerTabStrip。布局方式也小有不同,选择了FrameLayout 关于布局...

旧日灯塔 632

手把手教你用FPGA实现SerDes高速接口设计(附避坑指南)

本文是一份详尽的FPGA SerDes高速接口设计实战指南。文章深入剖析了SerDes硬核(如GTX/GTH)的时钟管理、发送端均衡、接收端CDR与均衡等核心模块,并提供了Verilog代码示例。重点分享了信号完整性分析、眼图调试与误码率测试等实战经验,附有自定义高速视频流接口的完整实现案例与避坑指南,帮助工程师从“会用”到“懂”且能独立驾驭高速接口设计。

ik678901234的博客 1145

Android开发-Android应用中启动时引导页的实现

前 言 在一个Android App启动的流程中,一般先是显示启动页,然后接着是引导页(初次安装或者清除应用缓存信息或者应用更新后第一次启动会经历该流程),在接着进入登录页面或者主页(如果应用之前在安装后或者清除缓存信息后有启动过,那么应用启动时就没有经历引导页的流程,直接由启动页进入登录页或者主页的流程)。那么,下面就来看看Android App是如何实现应用启动时引导页的功能的。 新建一个...

_彼岸雨敲窗_的博客 2万+

JetLinks社区版VS企业版:手把手教你用PostgreSQL+Redis搭建物联网中台(Win7实测)

本文详细对比了JetLinks社区版与企业版的核心差异,并提供了在Windows 7系统上,使用PostgreSQL和Redis搭建物联网中台的完整部署教程。文章深入解析了从环境准备、后端服务构建到前端部署的每一步,为开发者在资源有限环境下构建高性价比物联网平台提供了清晰的实战指南。

w1x2y3的博客 305

整理的15个公开且可直接使用的电力视觉输电线路领域数据集

而巡检数据是目前来说影响我们做科研的最大阻碍,为此本内容主要总结了,现有的且公开免费的巡检数据集,供大家使用。STN PLAD数据集133个航拍图像,五个电力部件:电力塔及其塔的ID、绝缘子,防震锤,联板(yoke),图像的尺寸在5472×3648到5472×3078。IDID数据集:2000张图像,包含三个类别,正常绝缘子,破损绝缘子和闪络绝缘子三个类别,用于目标检测的实验。TTPLA数据集,用于实例分割,1100张尺寸为3840×2160,包含两个类别,电力杆塔和电力线。主要用于电力杆塔的目标检测。

weixin_42048361的博客 5011

【Android】如何实现启动APP时引导页、欢迎页功能之(一)引导页功能的实现

基本上APP在第一次启动时都有引导页,本人在做APP开发时想实现这一功能,当时还不大知晓这个功能的页的具体名字,因为一直是一个人在默默的自学。我在这里就简单的给予个解释,引导页——就是APP在第一次启动时,引导用户操作,给予APP功能简单介绍的页面,一般都是APP第一次启动时才会出现,而后就不在出现。欢迎页——就是我们每次打开APP会出现的页面,接着才会自动跳转到主界面,其实现在这个欢迎页被各大厂

大帅Douk的博客 3万+

仿真每日一练 | Workbench如何在网格节点施加载荷

打开Workbench 2020 R2,在分析系统中双击静力分析工程项目,双击Geometry打开Design Modeler,在菜单栏的单位(Units)修改为毫米(Millimeter),在XY平面创建草图,在草图内绘制矩形并标注尺寸,拉伸长方体,如图1所示。:单个零部件,无连接关系,但需定义一个节点组件,如图5所示,选择Create Named Selection。对添加的节点组件施加Y方向50N的力,如图8所示。1-1-3.有限元系统模型构建。1-1-1.几何模型构建。1-1-2.材料定义。

ansysxuexizhe的博客 1236

android使用ViewPager实现欢迎引导页

android使用ViewPager实现欢迎引导页大多数APP第一次启动的时候,都会有一个引导界面,左右滑动,到最后一张,用户点击才再次进入主界面。当第二次启动的时候,则直接进入主界面。 这种效果一般使用ViewPager实现。今天就来为大家介绍一下ViewPager的使用。实现步骤:使用SharedPerferences来记录是否是第一次启动APP,如果是,则转跳到Guide页面,如果不是第一次启

旋转 跳跃 然后 团灭 2348

jenkins安装、打包、部署

一个可以让小白部署发布项目的软件;git 配置 一定要配置git的命令路径jenkins启动命令,一定要加这一段 -Dhudson.util.ProcessTree.disable=true一定要配置jenkins的节点,BUILD_ID和DONTKILLME 否则会导致打包后,会将运行的java程序进程也杀死创建任务SSH中执行服务器B的命令的时候,cd /opt;一定要cd 打开那个目录,否则文件无法传输过去。

学海无涯,我用JAVA 5215

Trimble RealWorks处理点云数据(一)之坐标转换

Trimble RealWorks处理点云数据之坐标转换

yilvyangguang520的博客 3615

Android实现过渡动画、引导页 Android判断是否第一次启动App

最近参加比赛联系模拟题其中有一道题是:结合上学期期末实训整理的资料,加上网上博主的博文参考。再次整理一遍,以供以后参考。这篇是基于Android自身的控件View做出的效果。文章最后附上利用RXJAVA技术做成的引导页。首先是过渡动画,因为它不论App是否第一次启动都会显示。这里我使用了Handler的postDelayed()方法。把过渡动画的Activity设为默认启动的Activity。在当...

liumce的博客 4239

YOLOv8改进系列:RepVGG重参数化结构——训练多分支,推理单路,极致提速

本文将详细介绍如何将RepVGG的重参数化思想融入到YOLOv8的骨干网络中,实现一种训练时多分支、推理时单路的改进版YOLOv8。我们将提供完整的代码实现、详细的原理讲解,并在COCO数据集和自定义数据集上进行充分的实验验证。

YOLO 200

Android Studio启动引导页,Android使用ViewPager完成app引导页

本文实例为大家分享了Android使用ViewPager完成app引导页的具体代码,供大家参考,具体内容如下public class MainActivity extends AppCompatActivity {// int[] resourceId = {// R.layout.first,// R.layout.second,// R.layout.third...

weixin_42314711的博客 592

如何在非序列模式下使用类似图像模功能

如何在非序列模式下使用类似图像模功能

weixin_72050316的博客 552

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

android实现引导页代码,Android使用ViewPager实现启动引导页

我们在安装某个APP的时候,基本都会有一个引导页的提示,他们可以打广告,或者介绍新功能的加入和使用说明等。一般都支持滑动并且下面有几个点,显示共有多少页和当前图片的位置,在IOS上这个实现起来比较简单,但在安卓上如何实现呢。今天就和大家一起来学习用官方v4支持包下的ViewPager来实现这个效果。/p>先上图:下面是我的实现,一个xml布局,一个GuideActivity和一个GuideP...

weixin_39520353的博客 230

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

android 引导页加动画,APP启动引导页的制作,用ViewPager实现翻页动画

Android网络与数据存储第一章学习一个启动引导页的制作####概要:这次制作App的引导页,主要用到2个知识“SharedPreferences 和 ViewPager”Genymotion的Android模拟器,版本5.1.0以下是默认root的,可以使用RootExplorer4软件操作系统目录,其它包括SDK内的官方模拟器……洗洗睡吧……太烦了,还不如下个Genymotion,血的教训1...

weixin_28873663的博客 567

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Android零基础入门第69节:ViewPager快速实现引导页

ViewPager是一个容器类,可以让用户左右滑动切换当前的View。

鑫鱻的博客 1896

利用ViewPager实现app的启动画面

要实现的效果: 1,程序启动时进入启动画面 2,依次滑动4个画面以后,点击最后一个画面中的"开始体验"按钮,进入到主界面,滑动的过程中,界面下方有指示器,指示已经滑动到哪张图片 3,在主界面拦截后退按钮操作,让点击后退按钮后直接退出程序,而不回到启动动画 话不多说,进入正题 1,程序启动时进入启动画面: 其实这个没什么好说的,只要在manifest.xml清单文件配置好启动界面即可

qiang_xi的专栏 1683

Android上实现一个简单的天气预报APP(十三) 导航ViewPager

ViewPager是安装软件后,第一次打开软件时展示的导航。 1)在进入天气界面之前,先进入导航界面 1.建立一个导航布局 guide.xml一个布局文件 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent"

赞美月亮的专栏 4543

利用ViewPager实现启动引导页

——热爱开源,乐于分享利用ViewPager实现启动引导页实现以下3项功能:1.在第一次使用启动App时,都会首先进入一个欢迎界面; 2.然后出现一个引导页,最后点击进入主界面; 3.在以后的启动时,不会出现引导页,而是直接从欢迎界面进入主界面。 今天利用ViewPager实现这样一个引导页。直接上代码(不用担心,我在代码中把注释写得很详细了,不清楚的地方欢迎留言)一、导入图片资源二、编写欢迎

weixin_37921492的博客 539
上一篇: Android开发:Android实现动态显示或隐藏密码输入框的内容
下一篇: Android开发:解决”found an invalid color“问题
android157
博客等级 码龄9年 193粉丝 95原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值