热门标签 | HotTags
当前位置:  开发笔记 > 前端 > 正文

android中使用react-native设置应用启动页过程详解

这篇文章主要介绍了android中使用react-native设置应用启动页过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

一、背景

在我们使用react-native进行编写代码的时候,当启动应用的时候,我们会看到如下界面

 

然而,这样的启动界面是非常的不又好,那么我们该怎么进行处理启动界面呢?有如下两种方案

二、方案

1.使用第三方库(react-native-splash-screen)
2.ios系统设置(仅适用ios系统,在这里不做讲解)

三、具体实现方式

一).react-native-splash-screen

1.安装

npm i react-native-splash-screen --save

2.链接到底层代码

 1.自动配置链接

 react-native link react-native-splash-screen

or

 rnpm link react-native-splash-screen

2.手动配置链接
Android手动配置:

(1)在android/settings.gradle文件中添加如下代码:

include ':react-native-splash-screen'
project(':react-native-splash-screen').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-splash-screen/android')

(2) 在android/app/build.gradle文件中,dependencies对象内添加如下代码:

 dependencies {
  ...
  compile project(':react-native-splash-screen')
  ...
 }

(3)在 MainApplication.java文件中添加如下代码:

 import org.devio.rn.splashscreen.SplashScreenReactPackage;
 ...
  @Override
  protected List getPackages() {
  return Arrays.asList(
   new MainReactPackage(),
   new SplashScreenReactPackage(), // 添加启动页代码
  );
  }

以上就是android系统中链接的方式,下面是ios底层链接的方式
ios手动配置:
(1)在 XCode中, 点击项目,打开展开项目右键点击 Libraries ➜ Add Files to [your project's name],选中路径 node_modules ➜ react-native-splash-screen and add SplashScreen.xcodeproj添加SplashScreen.xcodeproj项目文件

(2)在 XCode中, 点击项目,打开展开项目, 选中你的项目. 添加 libSplashScreen.a 到你的项目的 Build Phases ➜ Link Binary With Libraries中,界面如下所示:

Xcode添加Link Binary With Libraries

(3)修复 'SplashScreen.h' file not found, 选择你的项目 → Build Settings → Search Paths → Header Search Paths to add:

$(SRCROOT)/../node_modules/react-native-splash-screen/ios

界面如下所示:

Build Settings

以上就是ios系统的配置链接的方法,下面就让我们来看看具体在代码中的使用

3.进行使用

  • android:

(1)在MainActivity.java文件中添加如下代码:

 import android.os.Bundle; // here
 import com.facebook.react.ReactActivity;
 import org.devio.rn.splashscreen.SplashScreen; // 启动页设置添加代码

 public class MainActivity extends ReactActivity {
  /**
  * 设置启动页
  */
  @Override
  protected void onCreate(Bundle savedInstanceState) {
   SplashScreen.show(this); // 展示启动页设置代码
   super.onCreate(savedInstanceState);
  }
  // ...other code
 }

(2)添加启动页图片及布局
在路径app/src/main/res/layout创建文件(如果不存在则进行手动创建)命名为 launch_screen.xml. 然后输入下面内容:

 <&#63;xml version="1.0" encoding="utf-8"&#63;>
 
 

(3)在res文件夹下面创建如下文件夹,添加对应分辨率图片,分别对应放入下面文件夹,图片命名和xml中一致,命名为launch_screen

   drawable-ldpi
   drawable-mdpi
   drawable-hdpi
   drawable-xhdpi
   drawable-xxhdpi
   drawable-xxxhdpi

到这里,我们已经能够在界面中能够看到启动页的加载了,但是为了能有更好的效果,我们继续往下看,在文件夹app/src/main/res/values/colors.xml中添加一个颜色命名为status_bar_color ,其中status_bar_color为状态栏颜色设置,代码如下所示:

   <&#63;xml version="1.0" encoding="utf-8"&#63;>
   
    #FF0000
   

同时我们能够在启动的过程中看到有白屏出现,我们将启动背景设置成透明背景,使用下面方式进行处理, 打开android/app/src/main/res/values/styles.xml文件,并且添加 true
到文件中,添加之后结果如下所示:

   
    
    
   

当然,你也可以使用自定义的启动颜色,如下面所示:

在路径android/app/src/main/res/values/colors.xml文件添加如下代码用于设置状态栏

<&#63;xml version="1.0" encoding="utf-8"&#63;>

 

在路径android/app/src/main/res/values/styles.xml中添加自定义样式,代码如下所示:

<&#63;xml version="1.0" encoding="utf-8"&#63;>

 

然后修改启动页展示的样式选择就可以了:

SplashScreen.show(this, R.style.SplashScreenTheme);

效果如下所示,我们能够看到顶部红色的状态栏:

 

[ios_lanch_screen_custom.gif]

  • ios:

更新AppDelegate.m文件如下所示代码:

#import "AppDelegate.h"

#import 
#import 
#import 
#import "RNSplashScreen.h" // 导入启动页组件库

@implementation AppDelegate

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
 NSURL *jsCodeLocation;

 jsCodeLocation = [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@"index" fallbackResource:nil];

 RCTRootView *rootView = [[RCTRootView alloc] initWithBundleURL:jsCodeLocation
              moduleName:@"LoveYouDeeply"
            initialProperties:nil
             launchOptions:launchOptions];
 rootView.backgroundColor = [[UIColor alloc] initWithRed:1.0f green:1.0f blue:1.0f alpha:1];

 self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
 UIViewController *rootViewCOntroller= [UIViewController new];
 rootViewController.view = rootView;
 self.window.rootViewCOntroller= rootViewController;
 [self.window makeKeyAndVisible];
 [RNSplashScreen show]; // 添加启动页展示
 return YES;
}

@end

然后通过LaunchImage or LaunchScreen.xib自定义启动页,其具体过程如下所示,
1、用Xcode打开ios工程,找到Image.xcassets并点击选中,在空白处选择 App Icons & Launch Images &#10140; New ios Launch Image , 完成这步后会生成一个LaunchImage,操作界面如下所示:

new iOS launch image 

2、选中Image.xcassets &#10140; LaunchImage,就是上一步创建的LaunchImage,右侧框中的部分是让你选择要支持的系统,横竖屏之类的(这个按照需求选择,如果你的项目不打算支持ios6可以不选择)。然后点击中间部分选中一个分辨率的框,上传相应分辨率的图片作为启动屏幕

以下是选择框中不同屏幕的分辨率,按照下面给出的像素进行制作特定大小的图片添加即可:

iPhone Portrait iOS 8-Retina HD 5.5 (1242×2208) @3x
iPhone Portrait iOS 8-Retina HD 5.5 (1242×2208) @3x
iPhone Portrait iOS 8-Retina HD 4.7 (750×1334) @2x
iPhone Portrait iOS 7,8-2x (640×960) @2x
iPhone Portrait iOS 7,8-Retina 4 (640×1136) @2x
iPhone Portrait iOS 5,6-1x (320×480) @1x
iPhone Portrait iOS 5,6-2x (640×960) @2x
iPhone Portrait iOS 5,6-Retina4 (640×1136) @2x

3、选中LaunchScreen.xib,会有个弹出框,默认选择确定就行,然后把右边的 Use Launch Screen 取消选中(因为ios可以用来自定义图片启动屏幕或通过 LaunchScreen.xib启动屏幕,ios默认s设置,我们在这里取消掉默认设置的)。
界面如下所示:

remove location 

4、如图选中项目工程,右侧会出现工程的基本配置,设置Launch Images Srouce配置为LaunchImage(如果没有LaunchImage会弹出一个框提示拷贝图片,按照默认点确定就行),然后设置Launch Screen File为空(这个很重要)。

现在,我们所有的准备工作都已经完成,下面就是在js代码中的使用,在React-Native代码中进行隐藏启动页,
当我们准备好js代码之后,我们就可以将我们的启动页进行隐藏掉,其中隐藏启动页的代码如下所思:

import React, { Component } from 'react';
import SplashScreen from 'react-native-splash-screen';
import Router from './src/routerManager';

export default class App extends Component {
 constructor(props) {
 super(props);
  // do anything while splash screen keeps, use await to wait for an async task.
  // 在入口文件处隐藏掉启动页
  SplashScreen.hide(); // 关闭启动屏幕
 }
 render() {
 return (
  
 );
 }
}

在ios系统配置中,

四、效果展示

Android:

 

以上就是启动页的设置解决方案

到此这篇关于android中使用react-native设置应用启动页过程详解的文章就介绍到这了,更多相关android react-native设置应用启动页内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!


推荐阅读
  • 本文总结了在使用React Native开发过程中遇到的一些常见问题及其解决方法,包括配置错误、依赖问题和特定组件的使用技巧。 ... [详细]
  • Android开发经验分享:优化用户体验的关键因素
    随着Android市场的不断扩展,用户对于移动应用的期望也在不断提高。本文探讨了在Android开发中如何优化用户体验,以及为何用户体验的重要性超过了技术本身。 ... [详细]
  • 万事起于配置开发环境
    万事起于配置开发环境 ... [详细]
  • 深入理解SAP Fiori及其核心概念
    本文详细介绍了SAP Fiori的基本概念、发展历程、核心特性、应用类型、运行环境以及开发工具等,旨在帮助读者全面了解SAP Fiori的技术框架和应用场景。 ... [详细]
  • 解析 HTTP 头 'Vary: Accept-Encoding' 的作用与重要性
    本文详细探讨了 'Vary: Accept-Encoding' HTTP 头的作用,即指导缓存系统(如代理服务器和 CDN)根据不同的编码需求存储和提供适当的资源版本,确保不同类型的客户端能够接收到适合自己的内容。 ... [详细]
  • 拖拉切割直线 ... [详细]
  • 代码生成器实战教程:提升编程效率的利器
    本系列文章旨在通过一系列实践案例,详细介绍如何利用代码生成器提高开发效率。本文将引导您完成从下载安装到实际应用的全过程。 ... [详细]
  • 在现代移动应用开发中,尤其是iOS应用,处理来自服务器的JSON数据是一项基本技能。无论是使用Swift还是PHP,有效地解析和利用JSON数据对于提升用户体验至关重要。本文将探讨如何在Swift中优雅地处理JSON,以及PHP中处理JSON的一些技巧。 ... [详细]
  • 本文探讨了Lua中元表和元方法的使用,通过具体的代码示例展示了如何利用这些特性来实现类似C语言中的运算符重载功能。 ... [详细]
  • Python中调用Java代码的方法与实践
    本文探讨了如何在Python环境中集成并调用Java代码,通过具体的步骤和示例展示了这一过程的技术细节。适合对跨语言编程感兴趣的开发者阅读。 ... [详细]
  • VS Code 中 .vscode 文件夹配置详解
    本文介绍了 VS Code 中 .vscode 文件夹下的配置文件及其作用,包括常用的预定义变量和三个关键配置文件:launch.json、tasks.json 和 c_cpp_properties.json。 ... [详细]
  • 去控件化在线文档处理,推动高效信创办公环境
    探讨在线文档处理去控件化的趋势及其对构建高效信创办公生态的影响。 ... [详细]
  • 本周六上午11点左右到达公司,回顾了一周的行业动态并完成了昨日的任务。下午主要解决了Axis2缓存问题以及DBS和KMS的相关技术难题。由于服务替换导致平台访问错误,经过多方查找未能解决,最终决定暂时搁置。此外,还分享了与朋友之间的沟通障碍及个人成长的思考。 ... [详细]
  • Pandas中使用sort_values方法进行数据排序
    本文介绍了如何利用Python的Pandas库中的sort_values方法对DataFrame对象进行排序。首先通过Numpy库生成随机数据,然后详细解释了DataFrame的创建过程及其参数,并重点探讨了sort_values方法的使用技巧。 ... [详细]
  • 抽象工厂模式 c++
    抽象工厂模式包含如下角色:AbstractFactory:抽象工厂ConcreteFactory:具体工厂AbstractProduct:抽象产品Product:具体产品https ... [详细]
author-avatar
男人不用卫生巾
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有