【问题标题】:I want to add the same splash screen across multiple activity in android with less number of codes.?我想用更少的代码在android中的多个活动中添加相同的启动画面。?
【发布时间】:2017-05-06 03:24:18
【问题描述】:

我希望在打开活动之前显示启动画面。为此,我创建了一个启动画面。但我的问题是我的应用程序中有多个活动,现在我正在使用那个单一的启动屏幕。那么正确的方法是什么,要么我必须将它一个一个地添加到所有活动中,要么可以一次完成,那么如何?那是什么方法呢?

【问题讨论】:

  • 为什么要在加载任何活动之前显示启动画面?你连android中splash的用途都知道吗?
  • 是的,我知道 splash 的目的,这就是我使用它的原因!!而且我正在为我的应用程序使用firebase,我的每个活动通常需要3-4秒才能从那里加载数据..这不好。所以我在那里使用 splash 将数据加载到缓存中...
  • 你肯定对闪屏感到困惑。 Splash 用于启动应用程序以覆盖系统延迟以及一些初始应用程序设置。为了显示下载和其他繁重的任务,Android、iOS、web 有一个叫做ProgressBar 的东西,你绝对可以给它加上一个坚实的背景,但它仍然会被称为进度条,并且会很好地满足你的目的。
  • (stackoverflow.com/questions/41939769/…) 启动画面比进度条看起来更漂亮...我的应用程序是为孩子准备的,所以如果我在那里使用启动画面,那么这也会吸引他们,我的数据也会那时也在缓存中下载..从UI的角度来看,我需要像这样实现..这就是为什么我要使用splash而不是progressBar..
  • 不错。但!你甚至通过我的解决方案?你甚至尝试过我发布的内容吗?首先尝试一下,然后让我知道您的观点是否有效。

标签: android splash-screen


【解决方案1】:

在那里详细说明我的评论,您对启动画面的目的感到困惑。顾名思义,它应该只是在开始时出现一秒钟然后消失,为了进一步反馈给用户以显示您必须使用的下载ProgressBar

您可以在此处将ProgressBar 的代码外部化,以使用最少的代码。

progress_bar_layout.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/colorAccent">
    <ProgressBar
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />
    <!-- Customize yoiur progress bar screen here--> 
</RelativeLayout>

然后在任何你想要的地方包含这个布局

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    app:layout_behavior="@string/appbar_scrolling_view_behavior"
    tools:context="com.example.android.myApp.MainActivity"
    tools:showIn="@layout/app_bar_main">

    <include
        android:id="@+id/progress_bar"
        android:visibility="gone"
        layout="@layout/progress_bar_layout" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Hello World!"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

</android.support.constraint.ConstraintLayout>

然后在你的 java 类中

private RelativeLayout progressBar;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    //some code
    progressBar = (RelativeLayout)findViewById(R.id.progress_bar);
    //control parent instead of progress bar only
}

private void beginDownload(){
    progressBar.setVisibility(View.VISIBLE);
    //your download code
}

private void downloadComplete(){
    progressBar.setVisibility(View.GONE);
    //codes once download is completed
}

附:如果您的设计特别需要其他一些不同的屏幕 而不是旋转进度条,然后使用相同的方法,只需更改 progress_bar_layout.xml 反映您的设计,其他一切都会 保持不变。 因此对于此任务没有启动画面的概念,只是 进度条。

【讨论】:

    猜你喜欢
    • 2021-07-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-11
    • 1970-01-01
    相关资源
    最近更新 更多