相关疑难解决方法(0)

如何在应用程序上修复白屏启动?

我有一个Android应用程序,在启动时显示白色屏幕2秒.我的其他应用程序不这样做,但这个应用程序.我还实现了一个启动画面,希望能解决这个问题.我应该增加闪屏的睡眠时间吗?谢谢.

android splash-screen app-startup

103
推荐指数
6
解决办法
9万
查看次数

Android SplashScreen

我正在开发一个应用程序,它基本上在应用程序本身的开始下载大量数据并将其显示在ListActivity中.我打算做的是显示启动画面,直到数据加载完毕.

直到现在我的所有尝试都是徒劳的.我试过anddev.org提到的方法,但我的问题是主Activity应该开始但是Splash Screen应该是可见的,直到我填充我的ListActivity.所以简而言之,我必须完成以下步骤:

  1. 开始我的主要活动.
  2. 显示启动画面.
  3. 继续在后台运行该过程.
  4. 处理完成后退出Splashscreen并显示主List.

希望你明白它是什么样的....

android splash-screen

80
推荐指数
2
解决办法
9万
查看次数

在AsyncTask中使用wait

当我使用a waitAsyncTask,我得到了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 wait android-asynctask

44
推荐指数
3
解决办法
8万
查看次数

WindowBackground可以定位在状态栏下方和导航栏上方吗?

基于本教程这个答案,也引用了这个其他教程,使用主题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)

android splash-screen android-layout android-theme

12
推荐指数
1
解决办法
2074
查看次数

如何在后台开始活动并在之后显示?

我有两项活动,一个是 SplashActivity,另一个是MainActivity,包含网页视图的活动.

我需要在显示启动画面时加载webview.所以我正在寻找一种在后台加载MainActivity的方法SplashActivity::onCreate();

如果直接调用intend,MainActivity会立即显示在前面,并且会停留在webview中.

我抬起头来了很多关于启动画面像解决方案的这个 .但是,在启动时间到期之前,它们不会初始化MainActivity.

android splash-screen android-activity

7
推荐指数
2
解决办法
1万
查看次数

Android启动错误的活动

当我启动应用时,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)

android android-activity android-launcher

7
推荐指数
1
解决办法
6649
查看次数

Android共享元素从初始屏幕转换为主要活动

在显示主要活动之前,我的应用程序显示启动画面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)

这种方法存在两个问题:

  1. 在调用finish()之后立即调用startActivity()会导致在动画开始之前隐藏/销毁启动活动窗口,这导致主屏幕在动画期间暂时闪烁进入视图.
  2. 从主活动按回来会自动触发共享元素返回转换,导致主活动窗口关闭后图像在主屏幕上显示为500毫秒.返回转换失败,因为splash活动已经调用了finish(),因此不再在后台堆栈上.

为了解决第一个问题,我将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

7
推荐指数
1
解决办法
1642
查看次数

使用Fragment在Android中启动画面

我正在设计一个Android应用程序,我需要添加我的应用程序的启动画面.一般来说,我习惯只使用Activity高达到现在,但该项目的ADT是创建FragmentActivity.

现在我有一个困惑,我应该写的代码timerTask,并Timer安排在执行任何任务onCreateActivityonCreateView方法或别的东西吗?

目前我写的是这样但我不确定它是对还是错.

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)

android fragment android-fragments

5
推荐指数
2
解决办法
1万
查看次数

离子电容器:启动画面显示错误图像

我尝试用我的启动图像替换默认的启动图像,但它显示错误的图像。初始屏幕显示我的自定义图标图像,而不是我的自定义初始图像。

在 iOS 中,启动屏幕显示正确的启动图像。安卓中没有。我该如何解决这个问题?

我已经尝试过了capacitor-resources -p androidcordova-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)

icons android splash-screen ionic-framework capacitor

2
推荐指数
1
解决办法
2364
查看次数

带有(架构导航组件)和 BottomNavigationView 的初始屏幕

我试图在包含BottomNavigationView三个片段的应用程序中实现启动屏幕,并且我使用了最著名的方法,例如在不创建新活动或片段的情况下执行此操作的答案,但在直接启动启动屏幕后出现问题,它得到“RuntimeException”和空指针异常”

\n
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

1
推荐指数
1
解决办法
2142
查看次数