Mercurial > dwindows
diff android/DWindows.kt @ 2496:3bf2f08fdc45
Android: Remove ugly workaround for initialization issues.
Solved by a change to AndroidManifest.xml to prevent recreation on
configuration changes. Add some code to detect the changes.
author | bsmith@81767d24-ef19-dc11-ae90-00e081727c95 |
---|---|
date | Mon, 03 May 2021 07:15:11 +0000 |
parents | 5664c91d03fb |
children | 7b210f156eef |
line wrap: on
line diff
--- a/android/DWindows.kt Mon May 03 01:17:40 2021 +0000 +++ b/android/DWindows.kt Mon May 03 07:15:11 2021 +0000 @@ -4,6 +4,7 @@ import android.content.ClipboardManager import android.content.DialogInterface import android.content.pm.ActivityInfo +import android.content.res.Configuration import android.graphics.drawable.GradientDrawable import android.media.AudioManager import android.media.ToneGenerator @@ -57,15 +58,33 @@ // Turn on rotation setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR) - // Get the Android app path - val m = packageManager - var s = packageName - val p = m.getPackageInfo(s!!, 0) - s = p.applicationInfo.dataDir + // We only want to call this once when the app starts up + // By default Android will call onCreate for rotation and other + // changes. This is incompatible with Dynamic Windows... + // Make sure the following is in your AndroidManifest.xml + // android:configChanges="orientation|screenSize|screenLayout|keyboardHidden" + if(savedInstanceState == null) { + // Get the Android app path + val m = packageManager + var s = packageName + val p = m.getPackageInfo(s!!, 0) + s = p.applicationInfo.dataDir - // Initialize the Dynamic Windows code... - // This will start a new thread that calls the app's dwmain() - dwindowsInit(s) + // Initialize the Dynamic Windows code... + // This will start a new thread that calls the app's dwmain() + dwindowsInit(s) + } + } + + override fun onConfigurationChanged(newConfig: Configuration) { + super.onConfigurationChanged(newConfig) + + // Checks the orientation of the screen + if (newConfig.orientation === Configuration.ORIENTATION_LANDSCAPE) { + Toast.makeText(this, "landscape", Toast.LENGTH_SHORT).show() + } else if (newConfig.orientation === Configuration.ORIENTATION_PORTRAIT) { + Toast.makeText(this, "portrait", Toast.LENGTH_SHORT).show() + } } /*