[JAVA] Technische Ursachen und Gegenmaßnahmen für Punkte, die von Android-Apps und Kotlin abhängig sind (1. Verarbeitung des Android-Bildschirmübergangs (Fragment))

1. 1. * Android * Bildschirmübergangsverarbeitung (Fragmentverarbeitung)

In der ersten Version von * Android * gab es kein Konzept für Fragmente, und es scheint schwierig zu sein, die Fettaktivität und die terminale Rotation zu kontrollieren. In dieser Anwendung wird die Fragmentkonfiguration für jeden Bildschirm aus der Hauptaktivität ersetzt, und die Steuerung wird weggelassen, indem die Terminalrotation in der Einstellung * AndroidManifest.xml * verhindert wird. Die Möglichkeit, dass * UX * durch das Verbot der Terminalrotation beeinträchtigt wird, wurde durch die Integration eines Prozesses zum Drehen des Bildes behoben. (Ich bin später süchtig danach ...)

1.1 Einfügen des Bildes nach dem Bildschirmübergang

Um in dieser Anwendung zwei Bilder nahtlos zu kombinieren, wählen Sie das zu kombinierende Originalbild (** möchten ) auf dem ersten Bild aus und kombinieren ( möchten **) das Zielbild auf dem zweiten Bild. Wählen. (Der Status von zwei Bildern wird von * FragmentA * und * FragmentB * verwaltet.) Daher wird das Bild nach dem Berühren der Bildauswahlschaltfläche eingefügt, um ein Bild der Galerie oder einer Kamera aufzunehmen.

Nach dem Berühren der Bildauswahlschaltfläche, um ein Bild der Galerie oder der Kamera aufzunehmen, wird das Bild nicht in * ImageView * im Ziellayout des Bildschirmübergangs angezeigt, und es tritt eine Ausnahme auf.

Um das Bild in * ImageView * auf dem Bildschirmübergangsziellayout anzuzeigen, wird das in die Transaktionswarteschlange geladene Fragment sofort ausgeführt, sodass * FragmentManager * Fragmenttransaktionsverarbeitung (* commit () *) unmittelbar nach * Durch Aufrufen von executePendingTransactions () * wird * onCreateView () * aufgerufen und das Layout generiert.

Fragmenttransaktionsverarbeitung und executePendingTransactions()


// .....Abkürzung
	FragmentA.newInstance().let { fragment ->
		fragmentManager?.beginTransaction().let { trans ->
			val fragments = fragmentManager?.fragments ?: return
			for (rFragment in fragments) {
				trans?.remove(rFragment)
			}
			trans?.replace(R.id.topContainer, fragment, FragmentA.TAG)
			trans?.commit()
			fragmentManager?.executePendingTransactions()
			fragment.setImageView(intent) //Aufruf nach Ausführung aller Transaktionswarteschlangen
		}
	}
// .....Abkürzung

1.2 Verarbeitung der Animationsbildanzeige während der nahtlosen Bildkomposition nach dem Bildschirmübergang

In dieser Anwendung werden zwei Bildbilder (kombiniertes (** wollen ) Originalbild und zusammengesetztes ( wollen **) Zielbild) ausgewählt und die Bildbilder werden nach dem Bildschirmübergang nahtlos kombiniert. Passen Sie die Zeit in der animierten Bildanzeige an, da sich die Kompositionszeit je nach Bildgröße unterscheidet.

Nach dem Blockieren, bis die nahtlose Komposition des Bilds beim * Starten * (separater Thread) von Kotlin * Collout während der Anzeige des Animationsbilds abgeschlossen ist, ist es nicht möglich, durch Fragmenttransaktionsverarbeitung zum Ergebnisbildschirm für die nahtlose Komposition überzugehen.

Es gab einen Fehler im Blockierungszeitpunkt für den Hauptthread (* UI *) im Steuerelement bis zum Übergang zum Ergebnisbildschirm für nahtlose Kompositionen, und es war nicht möglich, durch Fragmenttransaktionsverarbeitung zum Bildschirm für nahtlose Kompositionsergebnisse überzugehen.

Während das Animationsbild angezeigt wird, wird es blockiert, bis die nahtlose Komposition des Bilds beim * Starten * (separater Thread) von * Kotlin * Collout abgeschlossen ist. Anschließend wird der Übergang zum Ergebnisbildschirm für nahtlose Kompositionen in * Activity # runOnUiThread * ausgeführt.

Corroutine-Startblockverarbeitung


// .....Abkürzung
	GlobalScope.launch { // Kotlin1.3 Korrespondenz
		launch { //GlobalScope optional
			asyncFunc(Streit).join()
		}.join()
		activity?.runOnUiThread {
			//Fragmenttransaktionsverarbeitung
		}
	}
// .....Abkürzung

Funktion aussetzen


// .....Abkürzung
	private fun asyncFunc(Streit): Job {
		return GlobalScope.launch { // Kotlin1.3 Korrespondenz
			seamlesscollage(Streit)
		}
	}
// .....Abkürzung

1.3 Backstack-Verarbeitung auf dem Ergebnisbildschirm für nahtlose Kompositionen

Berühren Sie in dieser Anwendung die Schaltfläche [Home] auf dem Bildschirm für nahtlose Kompositionsergebnisse, um zum Startbildschirm (oben) zu gelangen.

Nach dem Berühren der Schaltfläche [Home] auf dem Bildschirm für nahtlose Kompositionsergebnisse und dem Backstacking wird die Bildauswahl nicht initialisiert.

Da * addToBackStack () * in der Fragmenttransaktionsverarbeitung für den Backstack aufgerufen wurde, geben Sie beim Berühren der Schaltfläche [Home](Aufruf von * popBackStack () *) im Ergebnisbildschirm für nahtlose Komposition die Häufigkeit der Fragmenttransaktion und den Backstack an Der Status wie der Bildschirmübergangsstatus wurde nicht initialisiert, da die Anzahl der Einträge in nicht identisch ist.

onViewCreated()Wann[Zuhause]Tastenverarbeitung


// .....Abkürzung
	override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
		super.onViewCreated(view, savedInstanceState)
// .....Abkürzung
		homeButton.setOnClickListener {
			backHome()
		}
	}

	private fun backHome() {
// .....Abkürzung
		replaceTopFragment()
	}
// .....Abkürzung

Fragmenttransaktionsverarbeitung (ersetzen)())


// .....Abkürzung
	private fun replaceTopFragment() {
		TopFragment.newInstance().let { fragment ->
			fragment.arguments?.putInt(TopFragment.FLG_VIEW, 0)
			fragmentManager?.beginTransaction().let { trans ->
				trans?.replace(R.id.topContainer, fragment, TopFragment.TAG)
				trans?.commit()
			}
		}
	}
// .....Abkürzung

Verknüpfung

Technische Ursachen und Gegenmaßnahmen für die erste Android-App und Kotlin-Sucht 2. Verarbeitung im Zusammenhang mit der Android-Kamerafunktion 3. Verarbeitung in Bezug auf Android-Bilder

Recommended Posts

Technische Ursachen und Gegenmaßnahmen für Punkte, die von Android-Apps und Kotlin abhängig sind (1. Verarbeitung des Android-Bildschirmübergangs (Fragment))
Technische Ursachen und Gegenmaßnahmen für Punkte, die von Android-Apps und Kotlin abhängig sind (3. Verarbeitung in Bezug auf Android-Bilder)
Technische Ursachen und Gegenmaßnahmen für die Punkte, denen ich mit der ersten Android-App und Kotlin verfallen war
Technische Ursachen und Gegenmaßnahmen für Punkte, denen ich mit der Android-App und Kotlin verfallen war (2. Verarbeitung im Zusammenhang mit der Kamerafunktion von Android *)
[Android / Java] Bildschirmübergang und Rückgabeverarbeitung in Fragmenten
Konvertieren Sie alle Android-Apps (Java) in Kotlin
Zusammenfassung der guten Punkte und Vorsichtsmaßnahmen bei der Konvertierung der Java Android-Anwendung in Kotlin
Geben Sie Optionen für die Java / Kotlin-Kompilierungszeit für Android-Apps an