Lasst uns wiederbeleben
Das Zeichnen von Text und Bildern ist eine Sache, aber der eigentliche Test eines UI-Frameworks besteht darin, wie gut es mit animierten Inhalten ist.
Und mein Test für Animationen ist das klassische MoveMe, das auf dem Beispielcode von Apple basiert.
Die Idee besteht darin, drei Kästchen auf dem Bildschirm zu zeichnen. Wenn die Box ausgewählt ist, ändert sie ihre Farbe und vergrößert sich. Anschließend kann sie mit der Ziehgeste verschoben werden und stellt beim Loslassen schließlich wieder die ursprüngliche Farbe und Größe wieder her.
Lassen Sie uns dieses Beispiel mit der Reanimated-Bibliothek von React Native erstellen.
Aufstellen
Ich folge den offiziellen Dokumenten, verwende jedoch nicht deren Vorlage. Also habe ich ein Basisprojekt mit der leeren Vorlage erstellt und die Abhängigkeiten installiert
npx create-expo-app playground --template blank npx expo install react-native-reanimated npx expo install react-native-gesture-handler
Als nächstes habe ich das Plugin hinzugefügt
module.exports = function (api) { api.cache(true); return { presets: ["babel-preset-expo"], plugins: ["react-native-reanimated/plugin"], }; };
Und dann zeichnen Sie 3 Quadrate auf dem Bildschirm:
import { StatusBar } from "expo-status-bar"; import { StyleSheet, View } from "react-native"; import Animated from "react-native-reanimated"; function Square() { return <Animated.View style={styles.square}></Animated.View>; } export default function App() { return ( <View style={styles.container}> <StatusBar style="auto" /> <Square /> <Square /> <Square /> </View> ); } const styles = StyleSheet.create({ container: { flex: 1, backgroundColor: "#fff", alignItems: "center", justifyContent: "space-evenly", }, square: { width: 100, height: 100, backgroundColor: "blue", }, });
Gestenhandler hinzufügen
Um Unterstützung für Gestenhandler hinzuzufügen, müssen wir zunächst den Inhalt in die GestureHandlerRootView einschließen
<GestureHandlerRootView style={styles.container}> <Square /> <Square /> <Square /> </GestureHandlerRootView>
Und dann jedes Quadrat in GestureDetector einschließen
function Square() { const gesture = Gesture.Pan(); return ( <GestureDetector gesture={gesture}> <Animated.View style={styles.square} /> </GestureDetector> ); }
Behandeln Sie Gestenereignisse
Um Gesten zu verarbeiten, müssen wir zunächst einen SharedValue erstellen, der State ähnelt, jedoch für Animationszustände. Um beispielsweise die Hintergrundfarbe bei Auswahl zu ändern, müssen wir die Ereignisse onBegin und onFinalize abhören und den Stil aktualisieren:
function Square() { const isPressed = useSharedValue(false); const animStyle = useAnimatedStyle(() => { return { backgroundColor: isPressed.value ? "red" : "blue", }; }); const gesture = Gesture.Pan() .onBegin(() => { isPressed.value = true; }) .onFinalize(() => { isPressed.value = false; }); return ( <GestureDetector gesture={gesture}> <Animated.View style={[styles.square, animStyle]} /> </GestureDetector> ); }
Die Unterstützung des Widerstands ist ähnlich. Wir müssen die Start- und aktuelle Position speichern und dann die aktuelle Position beim onChange-Ereignis aktualisieren. Der onChange stellt die Delta-Änderung bereit, die wir dann zur Startposition hinzufügen müssen, um die endgültige aktuelle Position zu berechnen. Und dann können wir beim onFinalize-Event endlich die Start- und aktuelle Position synchronisieren.
function Square() { const isPressed = useSharedValue(false); const startPos = useSharedValue({ x: 0, y: 0 }); const pos = useSharedValue({ x: 0, y: 0 }); const animStyle = useAnimatedStyle(() => { return { backgroundColor: isPressed.value ? "red" : "blue", transform: [ { translateX: pos.value.x }, { translateY: pos.value.y }, { scale: withSpring(isPressed.value ? 1.2 : 1) }, ], }; }); const gesture = Gesture.Pan() .onBegin(() => { isPressed.value = true; }) .onChange((e) => { pos.value = { x: startPos.value.x + e.translationX, y: startPos.value.y + e.translationY, }; }) .onFinalize(() => { isPressed.value = false; startPos.value = { x: pos.value.x, y: pos.value.y, }; }); return ( <GestureDetector gesture={gesture}> <Animated.View style={[styles.square, animStyle]} /> </GestureDetector> ); }
Und da haben Sie es
Referenzen
- react-native-reanimated
- react-native-gesture-handler
- Die Grundlagen von PanGestureHandler mit React Native Reanimated 2
- Datengesteuerte Benutzeroberfläche mit UIKit
Das obige ist der detaillierte Inhalt vonLasst uns wiederbeleben. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



In Artikel werden JavaScript -Bibliotheken erstellt, veröffentlicht und aufrechterhalten und konzentriert sich auf Planung, Entwicklung, Testen, Dokumentation und Werbestrategien.

In dem Artikel werden Strategien zur Optimierung der JavaScript -Leistung in Browsern erörtert, wobei der Schwerpunkt auf die Reduzierung der Ausführungszeit und die Minimierung der Auswirkungen auf die Lastgeschwindigkeit der Seite wird.

Häufig gestellte Fragen und Lösungen für das Ticket-Ticket-Ticket-Ticket in Front-End im Front-End-Entwicklungsdruck ist der Ticketdruck eine häufige Voraussetzung. Viele Entwickler implementieren jedoch ...

In dem Artikel werden effektives JavaScript -Debuggen mithilfe von Browser -Entwickler -Tools, der Schwerpunkt auf dem Festlegen von Haltepunkten, der Konsole und der Analyse der Leistung erörtert.

In dem Artikel wird erläutert, wie Quellkarten zum Debuggen von JavaScript verwendet werden, indem er auf den ursprünglichen Code zurückgegeben wird. Es wird erläutert, dass Quellenkarten aktiviert, Breakpoints eingestellt und Tools wie Chrome Devtools und WebPack verwendet werden.

Es gibt kein absolutes Gehalt für Python- und JavaScript -Entwickler, je nach Fähigkeiten und Branchenbedürfnissen. 1. Python kann mehr in Datenwissenschaft und maschinellem Lernen bezahlt werden. 2. JavaScript hat eine große Nachfrage in der Entwicklung von Front-End- und Full-Stack-Entwicklung, und sein Gehalt ist auch beträchtlich. 3. Einflussfaktoren umfassen Erfahrung, geografische Standort, Unternehmensgröße und spezifische Fähigkeiten.

In diesem Tutorial wird erläutert, wie man mit Diagramm.js Kuchen-, Ring- und Bubble -Diagramme erstellt. Zuvor haben wir vier Chart -Arten von Charts gelernt. Erstellen Sie Kuchen- und Ringdiagramme Kreisdiagramme und Ringdiagramme sind ideal, um die Proportionen eines Ganzen anzuzeigen, das in verschiedene Teile unterteilt ist. Zum Beispiel kann ein Kreisdiagramm verwendet werden, um den Prozentsatz der männlichen Löwen, weiblichen Löwen und jungen Löwen in einer Safari oder den Prozentsatz der Stimmen zu zeigen, die verschiedene Kandidaten bei der Wahl erhalten. Kreisdiagramme eignen sich nur zum Vergleich einzelner Parameter oder Datensätze. Es ist zu beachten, dass das Kreisdiagramm keine Entitäten ohne Wert zeichnen kann, da der Winkel des Lüfters im Kreisdiagramm von der numerischen Größe des Datenpunkts abhängt. Dies bedeutet jede Entität ohne Anteil

Sobald Sie das Typscript-Tutorial für Einstiegsklasse gemeistert haben, sollten Sie in der Lage sein, Ihren eigenen Code in eine IDE zu schreiben, die TypeScript unterstützt und in JavaScript zusammenfasst. Dieses Tutorial wird in verschiedenen Datentypen in TypeScript eingetaucht. JavaScript hat sieben Datentypen: NULL, UNDEFINED, BOOLEAN, NUMMER, STRING, SYMBOL (durch ES6 eingeführt) und Objekt. TypeScript definiert mehr Typen auf dieser Grundlage, und dieses Tutorial wird alle ausführlich behandelt. Null -Datentyp Wie JavaScript, null in TypeScript
