添加引导页 (引导页的图片根据网络请求获取,张数不一定)

自定义启动页(包括:静态页,动态页,广告页,向导页,自动滚动页) 自定义引导页 (包括: 传统引导页,浮层动画引导,gif引导页,自定义引导页,视频引导页) 自定义启动页(包括:静态页,动态页,广告页,向导页,自动滚动页) 自定义引导页 (包括: 传统引导页,浮层动画引导,gif引导页,自定义引导页,视频引导页) 阅读详情

程序通常会有启动页和引导页.

启动页每一次运行程序都会有;

引导页只有在程序第一次运行时,才有.

下面说一下我做的引导页的过程


在AppDelegate里面.h文件中


@interface AppDelegate : UIResponder <UIApplicationDelegate, UIAlertViewDelegate,UIScrollViewDelegate>

{

    FirstSingleData *userData;

    UIScrollView * introduceView;

    UIImageView * lastView;

}


- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

{

    self.window.backgroundColor = [UIColor whiteColor];

    [self.window makeKeyAndVisible];//一定要在这行代码之后加引导页


//数据类

userData = [FirstSingleData shardFirst];

  [userData getFirstList];


        //添加引导页

        [self addGuideView];

return YES;

}

//引导页只执行一次

- (void)addGuideView

{

    //  读取沙盒数据

    NSUserDefaults * settings1 = [NSUserDefaults standardUserDefaults];

    NSString *key1 = @"is_first";

    NSString *value = [settings1 objectForKey:key1];

    

    //  如果没有数据

    if (!value)

    {

        //  加入引导页

        [self addIntroView];

        //  写入数据

        NSUserDefaults * setting = [NSUserDefaults standardUserDefaults];

        NSString * key = @"is_first";

        [setting setObject:[NSString stringWithFormat:@"false"] forKey:key];

        [setting synchronize];

    }else{


        //如果不是第一次运行程序,直接进入主页面

        MyTabBarViewController * root = [[[MyTabBarViewController alloc]init]autorelease];

        [root.tabBar setHidden:YES];

        [self.window setRootViewController:root];   

    }

}


//添加引导页

- (void)addIntroView

{

    //判断屏幕尺寸

    float height = 0.0;

    if (iPhone5) {

        height = 568;

        

    }else{

        height = 480;

    }

    //图片路径的数组

    NSMutableArray * imageArray = [userData.dataDic objectForKey:@"guide"];

    

    introduceView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, 320, height)];

    

    introduceView.showsHorizontalScrollIndicator = NO;

    

    introduceView.contentSize = CGSizeMake(320 * imageArray.count, 0);

    

    introduceView.pagingEnabled = YES;

    

    introduceView.bounces = NO;

    

    introduceView.delegate = self;

    

    [self.window addSubview:introduceView];

    

    [introduceView release];

    

    for (int i = 0; i < [imageArray count]; i++){

        

        NSDictionary * dic = [imageArray objectAtIndex:i];

        UIImageView * scrollImage = [[UIImageView alloc]initWithFrame:CGRectMake(320*i, 0, 320, height)];

        if (height == 568) {

            NSString * imagePath = [dic objectForKey:@"imgPath1"];

            NSLog(@"image%d = %@",i,imagePath);

            if (i == 0) {

                //由于第一次运行时,启动页运行完,会出现空白一段时间,原因是因为引导页的第一张图片没加载完成,

为了让视觉效果更好,启动页结束马上看到引导页,有连贯的效果,将引导页的第一张图片的placeHoder给

跟启动页一样的图片,这样就解决了这个问题.

                [scrollImage setImageWithURL:[NSURL URLWithString:[self imageAddHandle:imagePath]] placeholderImage:[UIImage imageNamed:@"Default-568h@2x.png"]];

                

            }else{

                

                [scrollImage setImageWithURL:[NSURL URLWithString:[self imageAddHandle:imagePath]] placeholderImage:nil];

            }

            

        }else if (height == 480){

            

            NSString * imagePath = [dic objectForKey:@"imgPath2"];

            

            if (i == 0) {

                

                [scrollImage setImageWithURL:[NSURL URLWithString:[self imageAddHandle:imagePath]] placeholderImage:[UIImage imageNamed:@"Default@2x"]];

                

            }else{

                

                [scrollImage setImageWithURL:[NSURL URLWithString:[self imageAddHandle:imagePath]] placeholderImage:nil];

            }


        }


        scrollImage.tag = 300 + i;

        [introduceView addSubview:scrollImage];

        [scrollImage release];

        

    }

    

    //获取最后一张图片

    lastView = (UIImageView *)[introduceView viewWithTag:imageArray.count - 1 + 300];

    

    lastView.userInteractionEnabled = YES;

    

    //给最后一张图片添加点击进入的手势

    UITapGestureRecognizer *tapGestureRecognizer = [[UITapGestureRecognizer alloc] init];

    

    [tapGestureRecognizer addTarget:self action:@selector(gestureRecognizerHandle:)];

    

    [tapGestureRecognizer setNumberOfTapsRequired:1];

    

    [tapGestureRecognizer setNumberOfTouchesRequired:1];

    

    [lastView addGestureRecognizer:tapGestureRecognizer];

    

    [tapGestureRecognizer release];

}



- (void)gestureRecognizerHandle:(UITapGestureRecognizer *)gesture{


    //移除引导页

    [introduceView removeFromSuperview];

    

    //进入主页面

    MyTabBarViewController * root = [[[MyTabBarViewController alloc]init]autorelease];

    [root.tabBar setHidden:YES];

    [self.window setRootViewController:root];

    

}


//对图片的路径进行处理

- (NSString *)imageAddHandle:(NSString *)aString {

    

    NSString *tempBgSkinPicUrlLString = [aString substringFromIndex:9];

    NSString *tempNewBgSkinPicUrlLString = [SERVERADD stringByAppendingString:tempBgSkinPicUrlLString];

    return tempNewBgSkinPicUrlLString;

   

}



Android小练习:过渡动画,引导页,判断是否第一次启动App 目前的App在安装后,第一次打开,都会显示两秒左右的logo,然后进入引导页。如果关闭App,再重新打开,则只会显示logo,然后直接进入主页。 最近写了这个,记录一下。 项目地址在文章最后。 首先是过渡动画,因为它不论App是否第一次启动都会显示。 这里我使用了Handler的postDelayed()方法。把过渡动画的Activity设为默认启动的Activity。在当 阅读详情

相关推荐

Android闪屏和引导页实现教程及源码解析

在移动应用中,闪屏页(Splash Screen)通常是应用启动后首先展示给用户的一个短暂界面。它不仅能够提升用户体验,还能在后台进行一些初始化操作,如检查更新、初始化配置等。本章将深入探讨Android平台中闪屏页的设计与实现。在Android项目中,每个模块通常都会有一个或多个核心类和方法,它们构成了模块的主要骨架。以下是一些常见的核心类及其功能简述:: 应用的主入口类,负责应用的启动和界面跳转。: 应用的全局Application类,用于全局资源管理、初始化第三方库等。

weixin_30632267的博客 641

IOS 原生网络请求 OC

初次学习IOS 网络请求 在AppDelegate.m中 #import "AppDelegate.h" #import "MainViewController.h" @implementation AppDelegate - (BOOL)application:(UIApplication*)application didFinishLaunchingWithOptions:(NSDict...

前端小白的博客 795

iOS应用启动与引导页实践指南

htmltable {th, td {th {pre {简介:本文介绍了iOS应用中欢迎页和引导页的设计与实现,讲解了如何根据用户是否首次安装决定是否展示引导页。包括欢迎页和引导页的概念、如何设置适应不同设备和屏幕的页面、如何保存和判断用户是否是首次使用应用、以及实际的代码实现和优化。还涵盖了测试与部署的注意事项,旨在帮助开发者提升用户初次使用应用的体验。

weixin_42560991的博客 1236

第二步,引导页和网络请求

1.引导页 引导页可以单一用viewPager,也可以结合fragment。推荐结合,毕竟这东西一个手机一般只调用一次,占不了多大空间,但后期如果增加啥新东西,有fragment会好很多。 viewpage:可以简单理解为书页。采用它主要是为了方便滑动。 fragment:理解为简单化的activity。采用是为了让Activity里有几个可以实现部分功能的子页面。 页面布局里是viewpage,初始化viewpage和fragment。将多个fragment组成一个list adpViewPa

sk43too的博客 232

android引导页图片自动从左到右平移

单张背景图做平移,至图片的最左移动至最右边,ImageView本身没有什么变化,类似Android的桌面单张长图的模式

swift_新手引导页

swift 语言实现通用App安装引导页的实现,其实这个功能和引导页差不多用UIScrollView的contentSize和contentOffset(偏移量)这两个属性

如何优雅的为你的app添加启动引导页

简介我们首次下载一个APP的时候,一般都会有一个可以滑动的引导页面用于介绍该APP的一些基本信息,通常我们都会用ViewPager来实现,本篇文章就对引导页面做了一个简单的封装,以便于开发中的复用。(效果图就不放了,大家应该都知道。。。)使用 ViewPager viewPager; ViewGroup viewGroup; @Override protected void o

怜星的博客 3309

app启动页加载一张图片

app启动页加载一张图片

商城-2.引导页

引导页(路由及tabs组件使用)

weixin_66332516的博客 1423

OGG工具实现MySQL同步到Oracle数据库

OGG工具实现MySQL同步数据到Oracle

Mrzhou的博客 1682

海思MIPI屏调试实战:从参数计算到点亮屏幕的完整指南

本文提供了一份海思平台MIPI屏幕调试的完整实战指南。文章以Hi3516DV300调试800x1280分辨率屏幕为例,详细讲解了从参数计算、配置文件修改到最终点亮屏幕的全流程,并分享了常见问题排查与进阶优化技巧,旨在帮助嵌入式开发者高效解决MIPI屏调试难题。

weixin_29190573的博客 736

Android 项目必备(二)--> 启动页 & 引导页

一个很慢的启动页很容易让用户觉得受不了,进而“逃离” App 的,所以若想产品有更好的用户体验,做一些启动页的优化是一个不错的选择。这里我们简单介绍一下我在实践中对启动页是如何优化的。...

Kevin Learn Android 3703

【Windows Server 2019】活动目录 (Active Directory) ——理论

博文介绍了活动目录 (Active Directory) 的定义,作用以及与 DNS 的关系。同时也介绍了AD的组织结构,包括域控制器,子域,对象,属性,容器,组织单位,域间信任等术语的解释,实验拓扑图。

VMware, Windows, Linux, Cisco, Container, Kubernetes, Kali 7747

uniapp 引导页 启动页 闪屏页功能介绍及部分功能实现

启动页设置 uniapp自带的启动页是一个白底的页面,上面有个uni的logo,然后周围有个圆圈的进度条,这个是启动页。 uniapp中可以自定义启动页,注意两点: 不要勾选“启动界面显示等待雪花” Android启动界面设置中,要选择“自定义启动图”,然后在上传三种不同尺寸的启动图图片即可。 IOS的目前公司还没有要求实现,等到了这一步再写详细步骤。 闪屏页介绍 一直以来,我以为闪屏页就是类似于下方的这种图片。 我一直以为这种图片是出现在app开始启动的时候。结果,上面的这种图片有另一个名字叫:

yehaocheng520的博客 9539

低轨通信 | 手机直连低轨卫星通信:架构、关键技术与未来展望

手机直连低轨卫星通信正推动人类进入"全域连接"时代。当中国星网GW星座与千帆星座的万颗卫星点亮夜空,当普通智能手机在珠峰之巅仍能流畅视频通话,当远洋渔船通过卫星物联网实现精准捕捞——这些场景不仅重构通信产业格局,更将深刻改变人类生产生活方式。正如工信部《指导意见》所规划,到2030年我国将发展超千万卫星通信用户,催生万亿级新市场[1][5]。在这场太空基建竞赛中,技术创新与标准制定的双重突破,将决定未来数字文明的星空版图。

尘世冰封的专栏 938

OpenClaw第2章:快速安装

本章将手把手教你安装 OpenClaw。

Maynor的博客 3236

android从网络获取图片以及异步加载图片

import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.net.HttpURLConnection; import java.net.U

Pig 7432

第 8 篇:TMC2240 电机正反转实现|DIR 引脚控制 + 代码优化(稳定不抖动)

本文详细介绍了TMC2240电机驱动芯片的正反转实现方法,重点解决方向切换时的抖动和冲击问题。文章首先明确了硬件连接、基础配置和使能状态三个前提条件,然后阐述了DIR引脚电平控制方向的核心原理,提供了STM32的GPIO配置代码。针对方向切换时的电流冲击问题,作者提出了"停止-延迟-切换-启动"的平滑切换逻辑,并给出了包含方向枚举、转速控制和方向切换函数的完整代码实现方案。通过这种优化方法,可以有效避免电机在正反转切换时产生的抖动、冲击声和发热问题,实现稳定的双向控制。文章还提示了后续可

BackCatK Chen的博客 2074

Android开发之ViewPager引导页记录

需求: 1、从后台(网络)获取图片 2、滑到最后一张图等待几秒后跳转到主界面 主要代码如下: //XTestUtils.getGuideImages()存放图片的集合list if (XTestUtils.getGuideImages() != null && XTestUtils.getGuideImages().size() > 0) { GuideAd...

wxx314165038的博客 230

PyQt5开发编译器安装(PyCharm安装)

PyCharm 提供了最完整的 PyQt5 开发体验,特别是其集成的调试工具和 Qt Designer 支持,能显著提高开发效率。是最受欢迎和功能最完整的 IDE。它专门为 Python 开发优化,对 PyQt5 有很好的支持。右键运行该文件,如果出现窗口说明配置成功。对于 PyQt5 开发,

啊渊的专栏 417

Unity Hololens2开发|(三)工程发布及真机部署(3种方法)

选择项目->属性,进入项目属性页,选择调试,将HoloLens2的IP地址填写至页面,如下图。确保HoloLens2与计算机在同一网络下,并保持开启状态,点击运行,即开始生成部署.注意:该方式不支持覆盖安装,如果重复安装同一个App,需要先卸载再安装!选择Release下的ARM64,选择远程计算机,如下图。

游戏开发小Y的博客 14万+

swift有一句代码搞定APP引导页(图片/GIF/视频)

APP启动引导页(图片/gif/视频) 在APP启动时候设置引导页,不管图片,gif,还是视频只需要一个方法 视频引导页 视频核心代码如下 URL为本地视频地址,如果为网络视频 建议预下载在本地然后下次进行播放 init(videoURL: URL, isHiddenSkipButton: Bool) { let frame = CGRect.init(x: 0, y: 0, ...

SingleYan的博客 1349

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

uni-app启动页和引导页的配置

因为部分组件如map、video、textarea、canvas通过原生控件实现,原生组件层级高于前端组件,为了能正常覆盖原生组件,所以使用cover-view。这里涉及到一个兼容问题,android,可以在ended事件后,直接到首页,但是iOS会出现一下短暂的暂停样式(显示了播放按钮),所以这里用监听播放进度,来计算快要播放完毕,就跳走。触发频率 250ms 一次。如果配置了“等待首页加载完成在关闭启动界面”,自动播放,就好关闭启动页就进去到了首页,因为视频播放也会占用加载时间,会在启动页面等待。

weixin_44555508的博客 4605

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

网络解析引导页

//导入Gson解析 Glide解析 okgo的依赖 //布局文件 &lt;?xml version="1.0" encoding="utf-8"?&gt; &lt;RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.androi...

qq_43040490的博客 185
上一篇: 下拉刷新和上拉加载更多原理
下一篇: iOS Device问题 -- 解决
SMY_API
博客等级 码龄13年 5粉丝 16原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值