当前位置: 首页 > 知识库问答 >
问题:

Android闪屏加载白屏

郗缪文
2023-03-14

我在主活动中有以下代码

public class MainActivity extends AppCompatActivity {



    ImageView my_flash_screen;
    DB db;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main_layout);
        my_flash_screen= (ImageView) findViewById(R.id.my_flash_screen);



        MainTask task = new MainTask();
        task.execute();

       AnimationSet animation = new AnimationSet(true);
        animation.addAnimation(new AlphaAnimation(0.0F, 1.0F));
        animation.addAnimation(new ScaleAnimation(0.0f, 1, 0.0f, 1, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f)); // Change args as desired
        animation.setDuration(1500);

        my_flash_screen.startAnimation(animation);

        new CountDownTimer(5000, 1000) {

            public void onTick(long millisUntilFinished) {

            }

            public void onFinish() {


                Intent i = new Intent(MainActivity.this, NavigationActivity.class);
                startActivity(i);
                finish();
            }
        }.start();


    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.menu_main, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {

        int id = item.getItemId();

        //noinspection SimplifiableIfStatement
        if (id == R.id.action_settings) {
            return true;
        }

        return super.onOptionsItemSelected(item);
    }


    private class MainTask extends AsyncTask<String, Void, String> {
        @Override
        protected String doInBackground(String... urls) {

            if(FontUtil.storeSharedPreference(getApplicationContext()).getString("font", "").isEmpty())
            {
                FontUtil.savePrefs("font", "SKN.TTF",getApplicationContext());
                FontUtil.savesize("fb",22, getApplicationContext());

                Log.d("Test","insidefont");
            }

            try {
                if(db==null){
                    db=new DB(getApplicationContext());
                    db.createdatabase();
                    Log.d("Test","intialise first");
                }
                Log.d("Test","intialise second");
            } catch (IOException e) {
                e.printStackTrace();
            }
            return null;
        }

        @Override
        protected void onPostExecute(String result) {

        }

        @Override
        protected void onPreExecute() {
            super.onPreExecute();

        }

        @Override
        protected void onProgressUpdate(Void... values) {
            super.onProgressUpdate(values);
        }

        @Override
        protected void onCancelled() {
            super.onCancelled();
        }
    }
}

可扩展置标语言

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/mynew"
    android:gravity="center"
    android:layout_weight="1"
    android:orientation="vertical">


    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:scaleType="centerCrop"
        app:srcCompat="@drawable/mynew"

        android:id="@+id/my_flash_screen"
        android:contentDescription="loading image" />
</LinearLayout>

有时当我打开我的应用程序时,只会显示白屏。我已经使用AsyncTask将数据库从资产文件夹复制到设备,共享首选项将设置字体类型和大小。谁能帮我解决这个问题。谢谢你。

在提出问题之前,我已经阅读了以下问题

Android应用程序启动时的白色背景

android闪屏前几秒钟的白色背景

闪屏活动背景色

共有1个答案

包沈义
2023-03-14

是的,因为它不能立即识别你的图像。这花了一些时间。直到它显示白屏。

我会告诉你如何使用和避免这个问题。

将您的图像设置为样式并将其用作主题。

<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
    <!-- Customize your theme here. -->
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorText</item>
</style>

<!--SplashActivity theme.-->

<style name="Theme.Splash" parent="AppTheme">
    <item name="android:windowBackground">@drawable/ic_splash</item>
</style>

并使用你的 xml 只是空白

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
</LinearLayout>

然后,只需在启动活动中使用该主题即可。

<activity
        android:name=".module.splash"
        android:screenOrientation="portrait"
        android:theme="@style/Theme.Splash">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>

第二种选择:

我的第一种方法是完美的,但你想使用一些动画或其他东西,然后你这种风格,并使用相同的布局,你在你的布局设置图像。

<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">

    <item name="colorPrimary">@color/kitean_primary_color</item>
    <item name="colorPrimaryDark">@color/kitean_primary_dark</item>
    <item name="colorAccent">@color/kitean_color_accent</item>
</style>

这是避免这个问题的最好方法。谢谢

 类似资料:
  • 前段时间我问(并解决了)我的应用程序的iOS版本的相同问题(Cordova iOS 6.1.1白色闪屏),现在我对Android有同样的问题。 我正在使用cordoa-cli-10.0.0使用在线工具构建apk 应用程序运行,但我只看到一个白屏,而不是我的闪屏文件。 在我的配置.xml文件中,我有以下初始屏幕设置(我在这里跳过了其他设置,如果需要,我可以发布它们): 我添加了xxhdpi和xxxh

  • WebView可以很好地处理http请求和https(其中知名的可信站点如https://www.online.citibank.co.in/),但我试图使用第三方颁发的CA访问私有站点,它显示的是空白屏幕。证书通过SD卡安装到电话上,并列在受信任的证书列表下。 当我在将证书添加到TrustManager后使用HttpsURLConnection尝试相同的URL时,它工作得很好(能够获取内容)。

  • 本文向大家介绍Android中闪屏实现方法小结(普通闪屏、倒计时闪屏、倒计时+动画闪屏),包括了Android中闪屏实现方法小结(普通闪屏、倒计时闪屏、倒计时+动画闪屏)的使用技巧和注意事项,需要的朋友参考一下 一、项目目录结构 二、activity_main.xml代码 三、activity_splashscreen.xml代码 四、SplashScreenActiviy.java代码 五、Ma

  • 我试图在Web视图中加载内容时显示progressDialog。完成后,progressDialog将被取消。 我有两个测试设备Android2.3.6和Android4.0。在Android2.3.6中,完全没有问题。对于Android 4.0平板电脑,在显示进度对话框时,点击它将隐藏或删除进度对话框,并使屏幕变为空白。 我的对话有什么问题? 谢谢

  • 我在Eclipse中导入了lwjgl。老师也给了我们一个BaseWindow应用程序来导入Eclipse。应用程序应显示1024x768黑色窗口。但我看到的不是黑色的窗口,而是黑白条纹在显示屏上闪烁。截图:http://i.stack.imgur.com/JHsMC.png我无法显示条纹的图片,因为它们在屏幕截图上不可见。但还有一个明显的错误。 这是BaseWindow的源代码。java文件: 这

  • 我有一个Xamarin。表单应用程序,但这个问题只涉及Android。 我有一个闪屏,有一个标志和背景颜色,我想更新。我使用了一个spash主题样式,它指的是包含图像的xml。 主题: XML 然后我使用一个飞溅活动来使它工作,它完美地工作。 现在我想用一个图像作为背景,而不是颜色,所以我所做的是创建这个背景图像,上面有徽标,保存为一个图像,并将其用作启动屏幕。这造成了一些问题。 该图像在屏幕上显