【问题标题】:How to make a loading screen before reteofit gets data from server如何在改造之前制作加载屏幕从服务器获取数据
【发布时间】:2021-05-02 15:12:53
【问题描述】:

我正在使用改造从服务器获取数据。在应用程序启动时,会显示一个空的回收器视图,直到从服务器获取数据。为此目的制作加载屏幕的最佳做法是什么?我尝试显示一个片段,直到它完成,然后删除他并总是得到“主机已被破坏”错误。我看到了一些使用新活动制作启动闪屏的方法,但这样我仍然必须等到数据设置好。由于项目很大,我没有放任何代码。但如果需要会添加一些代码。

【问题讨论】:

    标签: android kotlin android-fragments retrofit2


    【解决方案1】:

    您可以将 ProgressBar 用作布局中的顶视图,使其可见,并可以根据您的布局设计使其他视图 invisiblegone

    一旦您从服务器获得 API 响应成功或失败,只需隐藏进度条并显示带有相关数据的所需视图(如果成功则在您的 recylerview 中显示数据,如果失败则显示失败视图而不是 recylerview)。

    这是一个非常高的级别,可以让您有一个开始的想法。如果您需要更多帮助,请告诉我。

    【讨论】:

    • 我已经完成了旋转动画的图像,我可以用它来代替进度条。但这是在完成后隐藏视图的正确做法吗?
    • 是的,这是最好的方式,您查看(ProgressBar 或用于加载程序的任何视图)始终存在的布局,您只需根据需要隐藏和显示。
    【解决方案2】:

    您可以创建一个对话框类,其中包含您的进度图像(或您想在加载进度时显示的任何内容)并设置它,在您的 Base Activity/Base Fragment 类中初始化它,以便您可以在您的活动/片段中调用它.

    示例:

    在您的 BaseActivity(或类似)类中

    val loadingDialog: LoadingDialog by lazy(mode = LazyThreadSafetyMode.NONE) {
        LoadingDialog(this)
    }.......
    
    fun showLoading(isLoading: Boolean) {
        loadingDialog.let {
            if (isLoading && !loadingDialog.isShowing)
                loadingDialog.show()
            else if (loadingDialog.isShowing) {
                loadingDialog.dismiss()
            }
        }
    }
    .......
    override fun onDestroy() {
        super.onDestroy()
        loadingDialog.dismiss()
    }
    

    因此,在实现 BaseActivity 的 Activity 类中,您只需调用 showLoading(true)showLoading(false)

    【讨论】:

      猜你喜欢
      • 2014-04-08
      • 2011-05-28
      • 1970-01-01
      • 2021-05-05
      • 1970-01-01
      • 2019-02-01
      • 1970-01-01
      • 2022-01-15
      • 1970-01-01
      相关资源
      最近更新 更多