当应用程序开发开始时,我会创建一个带有动画的自定义进度对话框.但是在进一步的开发中,我更改了该应用程序中的某些主题.但是此进度条的代码未更改.但是现在该进度对话框没有显示所需的宽度和高度.是主题效果的任何更改(对话框视图的宽度和高度).
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()
}
他们是否有任何方法可以影响“另一个”对话框的主题或此进度对话框的活动主题?同样,对于所有活动,此进度对话框都将中断.任何人都可以解释在不更改活动主题的情况下固定进度对话框大小的方法.还尝试使用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>
最佳答案
我找到了解决方案.由于错误,我在应用程序标签内添加了hardwareAccelerated = false.通过更多的研究,我发现它将影响自定义视图.对于高于或等于API级别14的所有设备,默认情况下将启用硬件加速.而且,如果我们使用标准视图和Drawables,则在全局范围内将其打开不会导致任何不利的绘图效果.所以我在清单上做了如下修改:
<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>