Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何在kotlin中将旧progressdialog转换为新progressbar_Android_Xml_Kotlin_Progress Bar_Progressdialog - Fatal编程技术网

Android 如何在kotlin中将旧progressdialog转换为新progressbar

Android 如何在kotlin中将旧progressdialog转换为新progressbar,android,xml,kotlin,progress-bar,progressdialog,Android,Xml,Kotlin,Progress Bar,Progressdialog,因此,我目前得到一个随机发生的错误,progressdialog在java中被弃用。由于我们不希望我们的应用程序崩溃,我被选中将progressdialog迁移到progressbar。现在我似乎不知道如何适应,我们需要3个函数,createProgressBar,showProgressBar,hideProgressBar。 下面是我们现在拥有的progressDialog代码: fun createProgressDialog() { if (SharedInstance

因此,我目前得到一个随机发生的错误,progressdialog在java中被弃用。由于我们不希望我们的应用程序崩溃,我被选中将progressdialog迁移到progressbar。现在我似乎不知道如何适应,我们需要3个函数,createProgressBar,showProgressBar,hideProgressBar。 下面是我们现在拥有的progressDialog代码:


fun createProgressDialog() {
        if (SharedInstance.instance.progressDialog != null) {
            if (SharedInstance.instance.progressDialog!!.isShowing) {
                SharedInstance.instance.progressDialog!!.cancel()
                SharedInstance.instance.progressDialog!!.dismiss()
            }
            SharedInstance.instance.progressDialog = null
        }

        SharedInstance.instance.progressDialog = ProgressDialog(SharedInstance.instance.context, R.style.CustomAlertDialogStyle)
        SharedInstance.instance.progressDialog!!.isIndeterminate = true
        SharedInstance.instance.progressDialog!!.setProgressStyle(android.R.style.Widget_ProgressBar_Small)
    }

fun showProgressDialog() {
        createProgressDialog()
        if (SharedInstance.instance.progressDialog != null && !SharedInstance.instance.progressDialog!!.isShowing) {
            try {
                var view: View = View.inflate(SharedInstance.instance.context, R.layout.custom_loading_dialog, null)

                SharedInstance.instance.progressDialog!!.show()
                SharedInstance.instance.progressDialog!!.setContentView(view)

                val rotate = RotateAnimation(0f, 360f, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f)
                rotate.duration = 600
                rotate.repeatCount = Animation.INFINITE
                (view.findViewById(R.id.progress_img) as ImageView).startAnimation(rotate)
            } catch (e: WindowManager.BadTokenException) {
                e.printStackTrace()
            }
        }
    }

fun hideProgressDialog() {
        if (SharedInstance.instance.progressDialog != null && SharedInstance.instance.progressDialog!!.isShowing) {
            Handler().postDelayed(Runnable {
                SharedInstance.instance.context.runOnUiThread(Runnable {
                    if (SharedInstance.instance.progressDialog != null && !SharedInstance.instance.context.isFinishing) {
                        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
                            if (SharedInstance.instance.context.isDestroyed) return@Runnable
                        }

                        val window = SharedInstance.instance.progressDialog!!.window
                        if (window != null && window.decorView != null && ViewCompat.isAttachedToWindow(window.decorView)) {
                            SharedInstance.instance.progressDialog!!.dismiss()
                        }
                    }
                })
            }, 150)
        }
    }
CustomAlertDialogStyle:

  <style name="CustomAlertDialogStyle" parent="Theme.AppCompat.Light.Dialog">
        <item name="android:windowFrame">@null</item>
        <item name="android:windowBackground">@android:color/transparent</item>
        <item name="android:windowIsFloating">true</item>
        <item name="android:windowContentOverlay">@null</item>
        <item name="android:windowTitleStyle">@null</item>
        <item name="android:windowAnimationStyle">@android:style/Animation.Dialog</item>
        <item name="android:windowSoftInputMode">stateUnspecified|adjustPan</item>
        <item name="android:backgroundDimEnabled">true</item>
        <item name="android:background">@android:color/transparent</item>
    </style>

@空的
@android:彩色/透明
真的
@空的
@空的
@android:style/Animation.Dialog
状态未指定|调整盘
真的
@android:彩色/透明
我想知道我需要保留什么,我可以放弃什么。以及将什么更改为ProgressBar等。 我已经尝试了两天了,从头开始构建ProgressBar非常容易,但不知何故,我的大脑不想通过改变它使其能够像上面的3种方法一样工作来帮助我。 有没有人能帮我/给我指点我该怎么做? 非常感谢您的帮助

你诚挚的


Frank

只需使用progressBar,根据逻辑使视图可见和不可见即可。您还可以添加一个水平进度条。您不需要在布局中使用进度视图来设置对话框的样式,这本身就是一个很好的解决方案,在这种情况下,您只需要使用可见性。我觉得这应该很容易,我只是似乎迷失在所有选项中。那么我该如何填写它,以便调用方法来创建、显示和隐藏它呢?我会只做visibility=View.visibility for show方法,visibility=View.go for hide吗?那么create方法呢,您需要在xml中添加progressbar来调用它,对吗?