Android 如何在kotlin中将旧progressdialog转换为新progressbar
因此,我目前得到一个随机发生的错误,progressdialog在java中被弃用。由于我们不希望我们的应用程序崩溃,我被选中将progressdialog迁移到progressbar。现在我似乎不知道如何适应,我们需要3个函数,createProgressBar,showProgressBar,hideProgressBar。 下面是我们现在拥有的progressDialog代码: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
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来调用它,对吗?