我希望在我的基于Cocoa的应用程序启动时向用户显示启动画面(图片).这怎么可能?
首先,非常感谢.因为我的应用程序运行了一段时间,所以我想在应用程序运行之前显示启动.现在,如果我在里面显示一个带有图像的窗口,那么如何运行该应用程序?如何确保应用程序在启动后显示?如何获得序列?
首先非常感谢你.我在applicationWillFinishLaunching方法中使用orderFront显示窗口,然后在applicationDidFinishLaunching中隐藏它:使用orderOut,现在我发现mainWindow不显示和app终止,为什么?如何解决这个问题呢?谢谢!
我正在优化WinForms应用程序的启动.我发现的一个问题是加载了启动画面.它需要大约半秒到一秒.
我知道多线程在UI片段上是禁止的,然而,看看启动画面是一个相当独立的应用程序片段,是否有可能以某种方式通过抛出其他一些线程来缓解其性能损失(可能在Chrome的方式),以便应用程序的重要部分实际上可以开始.
我打算创建一个类似于Visual Studio 2010为我的桌面应用程序运行的启动画面(随意使用任何版本的C#/ VB.NET/CLR).
根据Visual Studio博客,启动屏幕不是使用WPF开发的,因为它会导致CLR和WPF库加载,从而导致应用程序加载的大量延迟.因此,出于性能原因,他们还原为C++和Win32堆栈.
Windows Forms或WPF开发人员是否有可行的选项来利用相同的品牌?我们的想法是在闪屏中拥有类似的丰富品牌,而不会失去性能和启动时间.
使用PNG和透明效果对Windows窗体没有帮助(一个已知问题,我已经在此网站上阅读了相关问题).只是为了强调:它是一个闪屏,所以启动时间不能受到影响.
我的应用程序需要一个启动画面.试图为我的启动画面创建一个具有图像的活动; 并尝试使用for循环和Timer类来引入时间延迟.但它不会那样工作.我做错了吗?如果有,那么正确的方法是什么?
考虑一个带有以下约束的实时GNU/Linux发行版:所有软件都应该包含在一个initrd映像中(这导致它的大小),并且内核包含尽可能少的静态编译模块.
考虑所描述的发行版的启动过程:引导加载程序(例如grub或isolinux)加载内核,然后内核将initrd加载并提取到内存中.在提取期间(在旧计算机上花费20-30秒)屏幕上没有任何反应.
我想知道,在initrd提取过程中是否有现成的解决方案显示启动画面?如果没有,请您评论以下想法:
将一个例如600x480x8bit的图像静态编译到内核中,并在提取initrd时以某种方式将其刷新到帧缓冲区中.
这样做,但强制加载一个特定的视频驱动程序(例如VESA)并入侵其代码,而不是内核的帧缓冲区.
谢谢.
我正在尝试更改类以从我的启动画面类调用Web服务,但它会触发错误消息.
错误是:
启动画面不允许自定义类
在显示主要活动之前,我的应用程序显示启动画面1秒钟.启动画面和主活动共享一个公共图像,该图像是从启动画面的中心到主活动布局顶部的动画所必需的.
如果<layer-list>在主要活动中将启动画面实现为背景图像(参见启动画面正确的方式或如何制作启动画面?),那么如何完成此动画并不明显,我决定实现启动画面作为正常活动,并使用共享元素转换为两个活动之间的图像设置动画.最初,我onCreate()在splash活动中使用了以下实现:
public class SplashActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_splash);
ImageView imageView = (ImageView)findViewById(R.id.imageView);
String transitionName = ViewCompat.getTransitionName(imageView);
Intent intent = new Intent(this, LoginActivity.class);
ActivityOptionsCompat options =
ActivityOptionsCompat.makeSceneTransitionAnimation(
this, imageView, transitionName);
imageView.postDelayed(() -> {
ActivityCompat.startActivity(SplashActivity.this, intent, options.toBundle());
finish();
}, 1000);
}
}
Run Code Online (Sandbox Code Playgroud)
这种方法存在两个问题:
finish()之后立即调用startActivity()会导致在动画开始之前隐藏/销毁启动活动窗口,这导致主屏幕在动画期间暂时闪烁进入视图.为了解决第一个问题,我将finish()调用包装在postDelay()Runnable中,以确保只有在共享元素转换完成后才会调用它.在我的应用程序中有1500毫秒的延迟,但应根据其他用例所需的时间调整该值.
...
imageView.postDelayed(() -> {
ActivityCompat.startActivity(SplashActivity.this, intent, options.toBundle());
imageView.postDelayed(this::finish, 1500);
}, 1000);
Run Code Online (Sandbox Code Playgroud)
为了解决第二个问题,我重写了主活动的onBackPressed()方法直接调用, …
android splash-screen android-animation android-transitions shared-element-transition
我想用最少的动画(如旋转图像)创建一个启动屏幕。从此处找到的文档中,我认为可以使用“创建自定义 SplashScreen”部分中提到的方法来这样做。但我不知道从哪里开始。我首先使用创建了一个颤振 java 项目
flutter create -a java custom_splash
Run Code Online (Sandbox Code Playgroud)
然后我尝试复制粘贴文件内文档链接中给出的代码MainActivity.java并运行该应用程序,但该应用程序根本无法构建。我也尝试在内部使用旋转可绘制对象,launch_background.xml尽管它确实将图像旋转到特定角度,但它是静态的而不是动画的。
注意:我没有构建任何原生 android 应用程序,java 对我来说也是新的
编辑 1:
我想我必须将它显示为视图而不是可绘制对象。所以我尝试了这个。创建了一个名为SplashScreenWithTransition.javanext的文件MainActivity.java
package com.example.native_splash;
import android.content.Context;
import android.os.Bundle;
import android.view.View;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import com.example.native_splash.mySplashView;
import io.flutter.embedding.android.SplashScreen;
public class SplashScreenWithTransition implements SplashScreen {
@Override
@Nullable
public View createSplashView(
@NonNull Context context,
@Nullable Bundle savedInstanceState
) {
return new mySplashView(context);
}
@Override
public void transitionToFlutter(@NonNull Runnable onTransitionComplete) {
onTransitionComplete.run();
}
}
Run Code Online (Sandbox Code Playgroud)
和另一个名为 mySplashView.java …
当应用程序加载时,有一个白色背景,然后在显示启动画面之前闪烁。我已经从 app.json 文件中删除了启动画面,因为我正在手动加载和隐藏启动画面。(将启动画面留在 app.json 文件中会导致显示启动画面,然后出现白色闪烁,然后再次显示启动画面)
应用程序.js
import React from 'react';
import { StyleSheet, View, Image } from 'react-native'
import { MyAuthStack, MyMainDrawer } from './Screens/Navigators'
import firebase from './firebase'
import { AppLoading, SplashScreen } from 'expo';
import { Asset } from 'expo-asset';
export default class App extends React.Component {
constructor(props) {
super(props);
this.state = {
authState: false,
imgUrl: '',
isSplashReady: false,
isAppReady: false,
}
}
_cacheSplashResourcesAsync = async () => {
const gif = require('./assets/splash.png');
return Asset.fromModule(gif).downloadAsync();
}
_cacheResourcesAsync = …Run Code Online (Sandbox Code Playgroud) 如果您使用@capacitor/splash-screen API 在带有 Capacitor 3 的 Ionic Android 应用程序中显示启动画面,您可能会遇到以下问题:
在几分之一秒内,飞溅图像将扭曲显示,直到以正确的纵横比显示。这意味着它也会在屏幕上“跳跃”一点,如果您在设备处于横向时启动应用程序,或者您的设备已拉伸或显示宽高比,这将特别明显。
发生这种情况是因为AppTheme.NoActionBarLaunch在应用程序启动时使用它MainActivity被设置为将启动图像作为背景图像,但“真实”启动图像在几毫秒后在SplasScreen.buildViews()插件的方法中被初始化。
要修复它,您可以在您的styles.xml文件中更改以下内容/android/app/src/main/values:
老的:
<style name="AppTheme.NoActionBarLaunch" parent="AppTheme.NoActionBar">
<item name="android:background">@drawable/splash</item>
</style>
Run Code Online (Sandbox Code Playgroud)
新(无背景):
<style name="AppTheme.NoActionBarLaunch" parent="AppTheme.NoActionBar">
<item name="android:background">@null</item>
</style>
Run Code Online (Sandbox Code Playgroud)
或者设置启动画面的背景颜色:
<style name="AppTheme.NoActionBarLaunch" parent="AppTheme.NoActionBar">
<item name="android:background">#ffffff</item>
</style>
Run Code Online (Sandbox Code Playgroud)
这将防止在将实际 ImageView 添加到视图层次结构之前将启动图像显示为背景图像。ImageView 将具有androidScaleType插件配置中定义的正确 scaleType 。
使用以下版本进行测试:
使用以下配置:
const config: CapacitorConfig = {
// ...
plugins: {
SplashScreen: {
launchShowDuration: 3000,
launchAutoHide: …Run Code Online (Sandbox Code Playgroud)