我有这个splash_screen.xml:
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:drawable="@color/colorPrimary"/>
<item
android:gravity="center"
android:src="@mipmap/ic_launcher"/>
</layer-list>
Run Code Online (Sandbox Code Playgroud)
然后我想将其添加为<item>to styles.xml:
<style name="SplashTheme" parent="Theme.AppCompat.NoActionBar">
<item name="android:windowBackground">@drawable/splash_screen</item>
</style>
Run Code Online (Sandbox Code Playgroud)
但这会抛出:
Caused by: android.content.res.Resources$NotFoundException: File res/drawable/splash_screen.xml from drawable resource ID #0x7f070099
Run Code Online (Sandbox Code Playgroud)
当我尝试时:
<item name="android:windowBackground">@color/colorPrimary</item>
Run Code Online (Sandbox Code Playgroud)
我的代码工作正常并以 colorPrimary 显示屏幕。
我该如何修复它?
我尝试重建、清理、重新启动 Android Studio 以及 SO 上的每一篇文章。没有任何帮助。
编辑
splash_screen.xml肯定是在drawable文件夹中。
Android Studio 正在建议该文件。
我的绘图文件夹:
我基本上将以下 xml 用于 Android启动屏幕:空活动windowBackground:
<style name="SplashTheme" parent="Theme.AppCompat.NoActionBar">
<item name="android:windowBackground">@drawable/background_splash</item>
</style>
Run Code Online (Sandbox Code Playgroud)
background_splash.xml:
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<color android:color="@color/defaultBackground" />
</item>
<item>
<bitmap
android:src="@drawable/logo"
android:tileMode="disabled"
android:gravity="center"/>
</item>
</layer-list>
Run Code Online (Sandbox Code Playgroud)
只要logo.png小于屏幕尺寸,就可以正常工作。如果logo.png比屏幕大,它就会超出屏幕。
我看到了 3 种解决方法,但都有缺点:
left/ right,<item但这需要 API 23+@drawable/logo异xhdpi,xxhdpi但我使用的是密度分割,当为其他设备重用 apk 时(apk 网站、“移动到新设备”-传输 apk 的应用程序等),这会破坏它ImageView,但这有明显的延迟如何正确/没有缺点地做到这一点?
android splash-screen android-layout pixel-density screen-density
所以我有以下启动画面:
正常加载,但随后跳转到以下内容:
我的约束如下:S 所以我认为我的元素受到了正确的约束,并且在检查 xcode 中的不同设备时一切看起来都不错。但是,一旦应用程序启动,它就会正确加载,但在加载下一个视图之前,所有内容都会跳到顶部。
<?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="16096" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" launchScreen="YES" colorMatched="YES" initialViewController="01J-lp-oVM">
<device id="retina3_5" orientation="portrait" appearance="light"/>
<dependencies>
<deployment identifier="iOS"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="16086"/>
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
</dependencies>
<scenes>
<!--View Controller-->
<scene sceneID="EHf-IW-A2E">
<objects>
<viewController id="01J-lp-oVM" sceneMemberID="viewController">
<layoutGuides>
<viewControllerLayoutGuide type="top" id="Ydg-fD-yQy"/>
<viewControllerLayoutGuide type="bottom" id="xbc-2k-c8Z"/>
</layoutGuides>
<view key="view" contentMode="scaleToFill" id="Ze5-6b-2t3">
<rect key="frame" x="0.0" y="0.0" width="320" height="480"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<imageView opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleAspectFill" image="LaunchImage" translatesAutoresizingMaskIntoConstraints="NO" id="YRO-k0-Ey4">
<rect …Run Code Online (Sandbox Code Playgroud) 我是 Flutter 新手,仍在练习中
我正在创建一个启动屏幕,但启动屏幕的颜色没有改变
我的代码:
-launch_background.xml
<?xml version="1.0" encoding="utf-8"?>
<!-- Modify this file to customize your launch splash screen -->
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@android:color/black" />
<!-- You can insert your own image assets here -->
<!-- <item>
<bitmap
android:gravity="center"
android:src="@mipmap/launch_image" />
</item> -->
</layer-list>
Run Code Online (Sandbox Code Playgroud)
-main.dart
import 'package:flutter/material.dart';
import 'package:id_locker/Screens/HomeScreen.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
// This widget is the root of your application.
@override
Widget build(BuildContext context) {
return MaterialApp(
debugShowCheckedModeBanner: false,
home: HomeScreen(),
); …Run Code Online (Sandbox Code Playgroud) 我正在寻找一种可能性,使我的 Wear OS 3 应用程序具有简单的启动屏幕。我找不到任何具体内容,但我读到 Android 12 为每个应用程序引入了自动启动屏幕。不知道这是否适用于 Wear OS 3。
我可以在 Galaxy Watch 4 上看到多个应用程序(例如 Spotify 和 Strava),并以类似的启动画面开始:单击“应用程序抽屉”中的应用程序图标,该图标会从应用程序抽屉位置移动到中心 1- 2 秒后出现黑色背景。之后将显示该应用程序。我的猜测是那些闪屏是由 Android 生成的。但我的应用程序仅显示黑屏,直到应用程序首次绘制。我通过 OnCreate 中的 Thread.sleep 人为地延迟了应用程序的启动。(如果这是一个问题,请告诉我如何人为地创建延迟来测试闪屏)
如果还不清楚:我希望我的应用程序拥有与其他应用程序相同类型的启动屏幕。
非常感谢帮助!预先感谢您的任何建议
当应用程序的启动屏幕显示时,它需要从 FTP 服务器下载文件并处理数据。实现了颤动的启动屏幕
class Home extends StatelessWidget {
const Home({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
return FutureBuilder(
future: Future.delayed(Duration(seconds: 3)),
builder: (BuildContext context, AsyncSnapshot snapshot){
if(snapshot.connectionState == ConnectionState.waiting)
return SplashUI(); ///Splash Screen
else
return MainUI(); ///Main Screen
},
);
}
}
Run Code Online (Sandbox Code Playgroud)
现在,延迟 3 秒后,启动屏幕将显示 3 秒,在此期间从 FTP 下载文件并处理数据。我想保留启动屏幕直到数据处理完成而不是指定的时间。
启动画面
Widget _splashUI(Size size){
return SafeArea(
child: Center(
child: Container(
width: size.width * 0.5,
height: size.height * 0.1,
child: Image(
fit: BoxFit.fill,
image: AssetImage('assets/images/elf_logo.png'),
),
),
),
); …Run Code Online (Sandbox Code Playgroud) 我正在使用react-native-splash-screen库从 iOS 和 Android 上的图像在应用程序中制作自定义启动屏幕。
然而,谷歌在 Android 12 中引入了新的启动屏幕方法,这会导致启动屏幕重复、缺乏自定义以及需要迁移到删除旧屏幕的新实现等问题。
我喜欢我的旧启动画面,不想删除它,而且我看到 Instagram 应用程序(也在 React Native 上)似乎使用的不是 Android 12 原生启动画面,而是自定义启动画面,所以绝对应该是实现这一目标的一种方式。
那么,我怎样才能让我的自定义实现准确地保持不变,而不出现任何性能问题,并且能够像以前一样使用全屏图像呢?
我的资源文件夹中有两个图像Default-Portrait.png和Default-Landscape.png.我想在相应的方向模式下将它们设置为我的应用程序的初始图像.但是当我运行应用程序时,我无法看到任何闪屏.
我可能错过了什么?
尼蒂什
在我的Phonegap/Cordova应用程序启动期间,我得到一个黑屏3秒钟,然后webview变为现实.在这3秒黑色期间是否可以设置原生闪屏?
我制作了一个启动图像,以便在我的活动开始时显示..图像显示完美.但问题是我称之为
public class SplashImageActivity extends Activity {
protected boolean active = true;
protected int splashTime = 5000; // time to display the splash screen in ms
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.splash);
// thread for displaying the SplashScreen
Thread splashTread = new Thread() {
@Override
public void run() {
try {
int waited = 0;
while(active && (waited < splashTime)) {
sleep(100);
if(active) {
waited += 100;
}
} …Run Code Online (Sandbox Code Playgroud) splash-screen ×10
android ×6
dart ×2
flutter ×2
android-12 ×1
cordova ×1
exception ×1
file ×1
ios ×1
ipad ×1
iphone ×1
native ×1
react-native ×1
storyboard ×1
swift ×1
wear-os ×1