Размер настраиваемого диалогового окна с изменениями анимации

1

Когда начинается разработка приложения, я создаю собственный диалог прогресса, в котором есть анимация. Но в дальнейшем развитии я изменю некоторые темы в этом приложении. Но без изменений в коде для этого индикатора выполнения. Но теперь этот диалог прогресса не отображается с необходимой шириной и высотой. любое изменение темы влияет на ширину и высоту диалогового окна. Тема для MainActivity is-

 <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>

И тема, используемая для диалога прогресса is-

 <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()
}

Есть ли у них какой-либо способ повлиять на тему "Другой диалог" или тему деятельности в этом диалоге? Также для всей деятельности этот диалог прогресса не работает. Может кто-нибудь объяснить способ исправить этот размер диалогового окна прогресса, не меняя эту тему для деятельности. Также попытался дать ширину и высоту, используя layoutparams. Мой манифест -

    <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>
Теги:
kotlin
themes
progress-bar
android-layout

1 ответ

0

Я нахожу решение. По ошибке я добавил hardwareAccelerated = false внутри тега приложения. Из более подробного изучения я обнаружил, что это повлияет на пользовательские представления. для всех устройств выше или равных API уровня 14 hardwareAccelerated включено по умолчанию. И если мы используем стандартные виды и Drawables, его глобальное включение не должно вызывать каких-либо негативных эффектов при рисовании. поэтому я внес изменения в свой манифест как follows-

<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>

Я получил решение по этой ссылке

Ещё вопросы

Сообщество Overcoder
Наверх
Меню