我有一个Android应用程序,在启动时显示白色屏幕2秒.我的其他应用程序不这样做,但这个应用程序.我还实现了一个启动画面,希望能解决这个问题.我应该增加闪屏的睡眠时间吗?谢谢.
我正在开发一个应用程序,它基本上在应用程序本身的开始下载大量数据并将其显示在ListActivity中.我打算做的是显示启动画面,直到数据加载完毕.
直到现在我的所有尝试都是徒劳的.我试过anddev.org提到的方法,但我的问题是主Activity应该开始但是Splash Screen应该是可见的,直到我填充我的ListActivity.所以简而言之,我必须完成以下步骤:
希望你明白它是什么样的....
当我使用a wait时AsyncTask,我得到了ERROR/AndroidRuntime(24230): Caused by: java.lang.IllegalMonitorStateException: object not locked by thread before wait()
是否有可能使用Asynctask等待?怎么样?
谢谢
class WaitSplash extends AsyncTask<Void, Void, Void> {
protected Void doInBackground(Void... params) {
try {
wait(MIN_SPLASH_DURATION);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
protected void onPostExecute() {
waitSplashFinished = true;
finished();
}
}
Run Code Online (Sandbox Code Playgroud) 基于本教程和这个答案,也引用了这个其他教程,使用主题android:windowBackground和一个<layer-list/>似乎是最批准的创建Android启动画面的方法
使用这种技术将徽标集中在屏幕上很容易; 但是,我想在屏幕的顶部或底部放置图形.我遇到了问题,因为如下面的屏幕截图所示,windowBackground屏幕顶部的状态栏和底部的导航栏背后都显示出来,因此图形显示为截止
问题: 是否可以指示将windowBackground自己定位在状态栏下方和导航栏上方?如果没有,使用windowBackground启动画面技术是否可以创建状态栏或导航栏未涵盖的启动画面?
要重现该问题,请创建一个新的Android Studio项目,该项目将为您提供ic_launcherdrawable并按照上面链接的其中一个教程但使用以下layer-listdrawable
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android"
android:opacity="opaque">
<item android:drawable="#000000"/>
<item>
<bitmap
android:gravity="left|top"
android:src="@drawable/ic_launcher"/>
</item>
<item>
<bitmap
android:gravity="center"
android:src="@drawable/ic_launcher"/>
</item>
<item>
<bitmap
android:gravity="bottom"
android:src="@drawable/ic_launcher"/>
</item>
</layer-list>
Run Code Online (Sandbox Code Playgroud) 我有两项活动,一个是
SplashActivity,另一个是MainActivity,包含网页视图的活动.
我需要在显示启动画面时加载webview.所以我正在寻找一种在后台加载MainActivity的方法SplashActivity::onCreate();
如果直接调用intend,MainActivity会立即显示在前面,并且会停留在webview中.
我抬起头来了很多关于启动画面像解决方案的这个 .但是,在启动时间到期之前,它们不会初始化MainActivity.
当我启动应用时,Android正在启动错误的活动.
Manifest.xml:
<activity
android:name="com.company.app.activities.RS_SplashScreenActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name="com.company.app.activities.RS_PreviousLauncherActivity"
android:label="@string/app_name"
android:theme="@style/myTheme" >
</activity>
Run Code Online (Sandbox Code Playgroud)
我添加了一个新的Activity RS_SplashScreenActivity并将其设置为启动器活动.它还试图RS_PreviousLauncherActivity在添加之前启动曾经是一个启动器活动RS_SplashScreenActivity.
我确信android会从控制台的以下日志中选择错误的启动器活动.
安慰 :
[2013-10-10 12:03:58 - app] Android Launch!
[2013-10-10 12:03:58 - app] adb is running normally.
[2013-10-10 12:03:58 - app] Performing com.company.app.activities.RS_PreviousLauncherActivity activity launch
[2013-10-10 12:04:01 - app] Uploading app.apk onto device '5C78E6332221CD6A1'
[2013-10-10 12:04:05 - app] Installing app.apk...
[2013-10-10 12:04:12 - app] Success!
[2013-10-10 12:04:12 - app] Starting activity com.company.app.activities.RS_PreviousLauncherActivity …Run Code Online (Sandbox Code Playgroud) 在显示主要活动之前,我的应用程序显示启动画面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
我正在设计一个Android应用程序,我需要添加我的应用程序的启动画面.一般来说,我习惯只使用Activity高达到现在,但该项目的ADT是创建Fragment也Activity.
现在我有一个困惑,我应该写的代码timerTask,并Timer安排在执行任何任务onCreate的Activity或onCreateView方法或别的东西吗?
目前我写的是这样但我不确定它是对还是错.
public class SplashActivity extends Activity {
// using timer to do operation at certain 3 seconds after.
private Timer mTimer;
private TimerTask mTimerTask;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_splash);
if (savedInstanceState == null) {
getFragmentManager().beginTransaction()
.add(R.id.container, new PlaceholderFragment()).commit();
// execute this after 3 seconds
mTimerTask = new TimerTask() {
@Override
public void run() {
// start the activity (Login/Home) …Run Code Online (Sandbox Code Playgroud) 我尝试用我的启动图像替换默认的启动图像,但它显示错误的图像。初始屏幕显示我的自定义图标图像,而不是我的自定义初始图像。
在 iOS 中,启动屏幕显示正确的启动图像。安卓中没有。我该如何解决这个问题?
我已经尝试过了capacitor-resources -p android,cordova-res android --skip-config --copy并且node resources.js。一切都不起作用...
这是我的resource.js根。
const fs = require('fs');
function copyImages(sourcePath, targetPath, images) {
for (const icon of images) {
let source = sourcePath + icon.source;
let target = targetPath + icon.target;
fs.copyFile(source, target, err => {
if (err) throw err;
console.log(`${source} >> ${target}`);
});
}
}
const SOURCE_ANDROID_ICON = 'resources/android/icon/';
const SOURCE_ANDROID_SPLASH = 'resources/android/splash/';
const TARGET_ANDROID_ICON = 'android/app/src/main/res/';
const TARGET_ANDROID_SPLASH = 'android/app/src/main/res/';
const ANDROID_ICONS …Run Code Online (Sandbox Code Playgroud) 我试图在包含BottomNavigationView三个片段的应用程序中实现启动屏幕,并且我使用了最著名的方法,例如在不创建新活动或片段的情况下执行此操作的答案,但在直接启动启动屏幕后出现问题,它得到“RuntimeException”和空指针异常”
E/AndroidRuntime: FATAL EXCEPTION: main\n Process: com.mml.foody, PID: 6868\n java.lang.RuntimeException: Unable to start activity ComponentInfo{com.mml.foody/com.mml.foody.ui.MainActivity}: java.lang.NullPointerException: Attempt to invoke virtual method \'void androidx.appcompat.app.ActionBar.setTitle(java.lang.CharSequence)\' on a null object reference\n at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3449)\n at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3601)\n at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:85)\n at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)\n at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)\n at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2066)\n at android.os.Handler.dispatchMessage(Handler.java:106)\n at android.os.Looper.loop(Looper.java:223)\n at android.app.ActivityThread.main(ActivityThread.java:7656)\n at java.lang.reflect.Method.invoke(Native Method)\n at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)\n at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)\n Caused by: java.lang.NullPointerException: Attempt to invoke virtual method \'void androidx.appcompat.app.ActionBar.setTitle(java.lang.CharSequence)\' on a null object reference\n at androidx.navigation.ui.ActionBarOnDestinationChangedListener.setTitle(ActionBarOnDestinationChangedListener.java:48)\n at androidx.navigation.ui.AbstractAppBarOnDestinationChangedListener.onDestinationChanged(AbstractAppBarOnDestinationChangedListener.java:103)\n at androidx.navigation.NavController.addOnDestinationChangedListener(NavController.java:233)\n …Run Code Online (Sandbox Code Playgroud) android splash-screen android-theme kotlin android-databinding