我希望在我的基于Cocoa的应用程序启动时向用户显示启动画面(图片).这怎么可能?
首先,非常感谢.因为我的应用程序运行了一段时间,所以我想在应用程序运行之前显示启动.现在,如果我在里面显示一个带有图像的窗口,那么如何运行该应用程序?如何确保应用程序在启动后显示?如何获得序列?
首先非常感谢你.我在applicationWillFinishLaunching方法中使用orderFront显示窗口,然后在applicationDidFinishLaunching中隐藏它:使用orderOut,现在我发现mainWindow不显示和app终止,为什么?如何解决这个问题呢?谢谢!
我通过在运行主表单之前立即启动新线程来显示启动表单.
在这个线程运行的方法中,我正在使用Application.Run,如下面的选项1所示.这是一个正确的方法,或者是否有问题等我,因为我已经两次调用Application.Run?另一种选择是选项2,也在下面显示,我调用.ShowDialog()来显示表单.
启动表单本身在指定时间后关闭,在表单本身内控制,两个选项似乎都运行良好.
所以我的问题是:哪个更受欢迎 - 选项1还是选项2?如果你能给出一个或那个很好的具体原因.
谢谢.
主要片段:
// Run splash screen thread.
Thread splash = new Thread(new ThreadStart(ShowSplash));
splash.Start();
// Run main application.
Application.Run(new MainForm());
Run Code Online (Sandbox Code Playgroud)
显示启动表单选项1:
static void ShowSplash()
{
Application.Run(new SplashForm());
}
Run Code Online (Sandbox Code Playgroud)
显示启动表单选项2:
static void ShowSplash()
{
using (SplashForm splash = new SplashForm())
{
splash.ShowDialog();
}
}
Run Code Online (Sandbox Code Playgroud) 我正在优化WinForms应用程序的启动.我发现的一个问题是加载了启动画面.它需要大约半秒到一秒.
我知道多线程在UI片段上是禁止的,然而,看看启动画面是一个相当独立的应用程序片段,是否有可能以某种方式通过抛出其他一些线程来缓解其性能损失(可能在Chrome的方式),以便应用程序的重要部分实际上可以开始.
我打算创建一个类似于Visual Studio 2010为我的桌面应用程序运行的启动画面(随意使用任何版本的C#/ VB.NET/CLR).
根据Visual Studio博客,启动屏幕不是使用WPF开发的,因为它会导致CLR和WPF库加载,从而导致应用程序加载的大量延迟.因此,出于性能原因,他们还原为C++和Win32堆栈.
Windows Forms或WPF开发人员是否有可行的选项来利用相同的品牌?我们的想法是在闪屏中拥有类似的丰富品牌,而不会失去性能和启动时间.
使用PNG和透明效果对Windows窗体没有帮助(一个已知问题,我已经在此网站上阅读了相关问题).只是为了强调:它是一个闪屏,所以启动时间不能受到影响.
嘿伙计们,我正在SDK iOS模拟器上测试我的应用程序,以确保它正常运行.首先,我决定删除一个闪屏图像因为我认为我不想要一个.当我再次运行我的应用程序时,它再次显示启动图像,认为我在那里有点困惑,所以我从引用中删除了图像并将图像从文件夹中删除到了垃圾箱.当我再次运行我的ap时,它仍然再次显示相同的闪屏图像!我不知道我的项目发生了什么,因为我删除的愚蠢的闪屏图像一遍又一遍地显示.然后我尝试运行其他项目,看看它们没问题,但是对于一些问题,我完全删除的同样的启动画面图像仍然出现!希望有人可以帮我快速解决这个问题!
我有一个使用MEF引导程序的prism 4应用程序.我已经从引导程序实现了一个启动画面,并希望在模块管理器加载app/modules时为用户提供模块信息(当它们被加载时).
我想我需要在模块管理器中订阅LoadModuleCompleted事件.我无法做到这一点,因为当我使用MEF引导程序中的容器解析模块管理器时,PRISM框架调用OnImportsSatisfied来加载所有模块.(这是为时已晚,因为我想听听这个).
如何显示带有显示模块信息/进度的进度条的启动窗口?
非常感谢!
我的应用程序需要一个启动画面.试图为我的启动画面创建一个具有图像的活动; 并尝试使用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