android - 带有动画更改的自定义进度对话框的大小

标签 android android-layout kotlin themes progress-bar

当应用程序开发开始时,我创建了一个带有动画的自定义进度对话框。但在进一步开发中,我更改了该应用程序中的一些主题。但是这个进度条的代码没有变化。但是现在进度对话框没有显示所需的宽度和高度。主题的任何变化都会影响对话框 View 的宽度和高度。 MainActivity 的主题是-

 <style name="AppTheme.NoActionBar">
        <item name="windowActionBar">false</item>
        <item name="windowNoTitle">true</item>
    </style> 

而对于 AuthActivity 和 Splash 是

<style name="fullScreen" parent="@style/Theme.AppCompat.Light.NoActionBar">
        <item name="android:windowNoTitle">true</item>
        <item name="android:windowActionBar">false</item>
        <item name="android:windowFullscreen">true</item>
        <item name="android:windowContentOverlay">@null</item>
    </style>

进度对话的主题是-

 <style name="NewDialog" parent="android:Theme.Black.NoTitleBar.Fullscreen">
<item name="android:windowFrame">@null</item>
<item name="android:windowMinWidthMajor">90%</item>
<item name="android:windowMinWidthMinor">90%</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:backgroundDimEnabled">true</item>
<item name="android:background">@android:color/transparent</item>
</style>

全屏主题也被赋予了 mainActivity 中的全屏视频对话框。进度对话的代码是 -

 override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)

        if (dialog == null)
            dialog = Dialog(this, R.style.NewDialog)
    }
fun showProgressDialog() {
    val ANIM_TIME: Long = 3000
    dialog!!.setCancelable(false)
    dialog!!.setContentView(R.layout.progress_dialoge)
    val img = dialog!!.findViewById<ImageView>(R.id.iv_image)
    var i = 0
    val r= object:Runnable {
        override fun run() {
            img.setImageResource(mThumbIds[i])
            i++
            if(i >= mThumbIds.size){
                i = 0
            }
            img.postDelayed(this,50)
        }
    }
    img.postDelayed(r,50)
    val anim = CircularRotateAnimation(img, 150f)
    anim.duration = ANIM_TIME
    anim.repeatCount = 50
    img.animation = anim
    if (dialog!!.isShowing) {
        dialog!!.dismiss()
    }
    dialog!!.show()
}

他们是否可以通过任何方式影响此进度对话框的另一个对话框或 Activity 主题的主题?。此外,对于所有 Activity ,此进度对话框都已损坏。谁能解释在不更改 Activity 主题的情况下修复进度对话框大小的方法。还尝试使用布局参数给出宽度和高度。 我的 list 是 -

    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
              package="com.dnbs.consumerapp">
        <uses-permission android:name="android.permission.CAMERA"/>
    <other permimssions>
        <application
                android:allowBackup="true"
                android:icon="@mipmap/ic_launcher"
                android:label="@string/app_name"
                android:largeHeap="true"
android:hardwareAccelerated="false"
                android:roundIcon="@mipmap/ic_launcher_round"
                android:supportsRtl="true"
                android:theme="@style/AppTheme">
            <activity
                    android:name=".activities.MainActivity"
                    android:label="@string/app_name"
                    android:configChanges="orientation|screenSize|screenLayout"
                    android:theme="@style/AppTheme.NoActionBar"/>
            <activity android:name=".activities.SplashActivity"
                      android:theme="@style/fullScreenDialog">
                <intent-filter>
                    <action android:name="android.intent.action.MAIN"/>

                    <category android:name="android.intent.category.LAUNCHER"/>
                </intent-filter>
            </activity>
            <activity android:name=".activities.AuthenticationActivity"
                      android:windowSoftInputMode="adjustPan"
                      android:configChanges="orientation"
                      android:theme="@style/fullScreenDialog"/>
        </application>
    </manifest>

最佳答案

我找到了解决方案。我错误地在应用程序标签内添加了 hardwareAccelerated = false。通过更多的研究,我发现它会影响自定义 View 。对于高于或等于 API 级别 14 的所有设备,默认情况下 hardwareAccelerated 处于打开状态。如果我们使用标准 View 和 Drawables,全局开启它应该不会造成任何不利的绘图效果。所以我在 list 中做了如下更改-

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
              package="com.dnbs.consumerapp">
        <uses-permission android:name="android.permission.CAMERA"/>
    <other permimssions>
        <application
                android:allowBackup="true"
                android:icon="@mipmap/ic_launcher"
                android:label="@string/app_name"
                android:largeHeap="true"
                android:roundIcon="@mipmap/ic_launcher_round"
                android:supportsRtl="true"
                android:theme="@style/AppTheme">
            <activity
                    android:name=".activities.MainActivity"
                    android:label="@string/app_name"
                    android:configChanges="orientation|screenSize|screenLayout"
                    android:theme="@style/AppTheme.NoActionBar"/>
            <activity android:name=".activities.SplashActivity"
                      android:theme="@style/fullScreenDialog">
                <intent-filter>
                    <action android:name="android.intent.action.MAIN"/>

                    <category android:name="android.intent.category.LAUNCHER"/>
                </intent-filter>
            </activity>
            <activity android:name=".activities.AuthenticationActivity"
                      android:windowSoftInputMode="adjustPan"
                      android:configChanges="orientation"
                      android:theme="@style/fullScreenDialog"/>
        </application>
    </manifest>

我从 This link 得到了解决方案

关于android - 带有动画更改的自定义进度对话框的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55626422/

相关文章:

带有下拉列表的android按钮小部件,这个特定小部件的名称是什么?

android - 如何在 ViewModel Android 中存储分页数据?

android - 应用程序在数组末尾崩溃

android - 如何在特定模块的 logcat 中获取详细日志记录

java - 背景图片不显示

android - 如何复制包含所有 View 的线性布局?

kotlin - 在 Kotlin 中,当使用 Kovenant Promise.of(value) 时,有时会泄漏异常

kotlin - 在 HttpClient Ktor 中处理异常

android - 使用onAudioFocusChange停止其他音乐应用

javascript - 在手机/平板电脑中的文本字段上隐藏键盘