Mercurial > dwindows
changeset 2498:4ae2b3b77f25
Android: Get the notebook control functional. Disable recylcing of the views.
Even though we are using the RecylerView we don't actually want the views recycled.
Attempt to prevent the activity from restarting immediately in the simulator by
enabling the required options in the AndroidManifest.xml. This didn't work so
I am putting that ugly workaround back in, since in the simulator we get called
twice and we want to actually run dwmain() on the second call in the simulator.
author | bsmith@81767d24-ef19-dc11-ae90-00e081727c95 |
---|---|
date | Wed, 05 May 2021 09:15:08 +0000 |
parents | 7b210f156eef |
children | ff3310fa6d72 |
files | android/AndroidManifest.xml android/DWindows.kt android/dw.cpp |
diffstat | 3 files changed, 27 insertions(+), 23 deletions(-) [+] |
line wrap: on
line diff
--- a/android/AndroidManifest.xml Wed May 05 01:19:21 2021 +0000 +++ b/android/AndroidManifest.xml Wed May 05 09:15:08 2021 +0000 @@ -10,7 +10,9 @@ android:supportsRtl="true" android:theme="@style/Theme.Dwtest"> <activity android:name=".DWindows" - android:configChanges="orientation|screenSize|screenLayout|keyboardHidden"> + android:configChanges="orientation|screenSize|screenLayout|keyboardHidden" + android:screenOrientation="fullSensor" + android:persistent="true"> <intent-filter> <action android:name="android.intent.action.MAIN" />
--- a/android/DWindows.kt Wed May 05 01:19:21 2021 +0000 +++ b/android/DWindows.kt Wed May 05 09:15:08 2021 +0000 @@ -23,7 +23,6 @@ import androidx.appcompat.app.AlertDialog import androidx.appcompat.app.AppCompatActivity import androidx.collection.SimpleArrayMap -import androidx.core.view.marginStart import androidx.recyclerview.widget.RecyclerView import androidx.viewpager2.widget.ViewPager2 import com.google.android.material.tabs.TabLayout @@ -38,43 +37,42 @@ public var currentPageID = 0L override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = - DWEventViewHolder(viewList.get(0)) + DWEventViewHolder(viewList.get(viewType)) override fun getItemCount() = viewList.count() + override fun getItemViewType(position: Int): Int { + return position + } override fun onBindViewHolder(holder: DWEventViewHolder, position: Int) { - //(holder.view as? TextView)?.also{ - // it.text = "Page " + eventList.get(position) - //} + holder.setIsRecyclable(false); } - class DWEventViewHolder(val view: View) : RecyclerView.ViewHolder(view) + class DWEventViewHolder(var view: View) : RecyclerView.ViewHolder(view) } class DWindows : AppCompatActivity() { var firstWindow: Boolean = true + // 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" override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) // Turn on rotation setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR) - // 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 + // 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) { @@ -399,7 +397,7 @@ pager.id = View.generateViewId() pager.adapter = DWTabViewPagerAdapter() TabLayoutMediator(tabs, pager) { tab, position -> - //tab.text = "OBJECT ${(position + 1)}" + // This code never gets called? }.attach() var params: RelativeLayout.LayoutParams = RelativeLayout.LayoutParams(w, h)
--- a/android/dw.cpp Wed May 05 01:19:21 2021 +0000 +++ b/android/dw.cpp Wed May 05 09:15:08 2021 +0000 @@ -90,7 +90,11 @@ static int runcount = 0; /* Safety check to prevent multiple initializations... */ +#if defined(__arm__) || defined(__aarch64__) if(runcount == 0) +#else + if(runcount == 1) +#endif { char *arg = strdup(env->GetStringUTFChars((jstring) path, NULL));