Czy ktoś może mi powiedzieć, jak to zrobić, np. animować wysokość od 0 po dodaniu i z powrotem do 0 po usunięciu?Animuj elementy listview po ich dodaniu/usunięciu ze źródła danych
Odpowiedz
Animacja gdy dodany jest proste, wystarczy użyć Animated
w componentDidMount
z listRow, na przykład:
componentDidMount =()=> {
Animated.timing(this.state._rowOpacity, {
toValue: 1,
duration: 250,
}).start()
}
Animacja komponentu przed zdejmowania jest znacznie trudniejsze w reagują-rodzimy. Powinieneś ustawić program obsługi dla ListView
. Po zmianie źródła danych zmień dane, uruchom Animowane, aby ukryć usunięty wiersz i ustaw nowe źródło danych na ListView
.
Dzięki za wyjaśnienie. Nie jestem pewien, jak to zrobić z handler'em i diff - czy masz przykładowy kod, który pomoże mi zacząć? – David
Tutaj można uzyskać pełną przykład pracy dla animacji krycia:
import React from 'react-native';
export default class Cell extends React.Component {
constructor(props) {
super(props);
this.state = {
opacity: new React.Animated.Value(0)
};
}
componentDidMount() {
React.Animated.timing(this.state.opacity, {
toValue: 1,
duration: 250,
}).start();
}
render() {
return (
<React.Animated.View style={[styles.wrapper, {opacity: this.state.opacity}]}>
<React.Image source={{uri: 'http://placehold.it/150x150'}} style={styles.image}/>
<React.Text style={styles.text}>
Text
</React.Text>
</React.Animated.View>
);
}
}
const styles = React.StyleSheet.create({
wrapper: {
flex: 1,
flexDirection: 'row',
justifyContent: 'flex-start',
alignItems: 'center',
},
image: {
height: 40,
width: 40,
marginRight: 16,
backgroundColor: '#C9D5E6'
},
text: {
fontSize: 20
}
});
na wypadek konieczności usuwania elementu z listy, oto jak to zrobić komponent ListRow:
class DynamicListRow extends Component {
// these values will need to be fixed either within the component or sent through props
_defaultHeightValue = 60;
_defaultTransition = 500;
state = {
_rowHeight : new Animated.Value(this._defaultHeightValue),
_rowOpacity : new Animated.Value(0)
};
componentDidMount() {
Animated.timing(this.state._rowOpacity, {
toValue : 1,
duration : this._defaultTransition
}).start()
}
componentWillReceiveProps(nextProps) {
if (nextProps.remove) {
this.onRemoving(nextProps.onRemoving);
} else {
// we need this for iOS because iOS does not reset list row style properties
this.resetHeight()
}
}
onRemoving(callback) {
Animated.timing(this.state._rowHeight, {
toValue : 0,
duration : this._defaultTransition
}).start(callback);
}
resetHeight() {
Animated.timing(this.state._rowHeight, {
toValue : this._defaultHeightValue,
duration : 0
}).start();
}
render() {
return (
<Animated.View
style={{height: this.state._rowHeight, opacity: this.state._rowOpacity}}>
{this.props.children}
</Animated.View>
);
}
}
opublikowałem kompletny samouczek na to pytanie w tym poście na blogu. I wyjaśnia krok po kroku, co musisz zrobić, aby osiągnąć zarówno dodawanie i usuwanie przedmiotu, jak i animowanie tego procesu. Dodanie jest całkiem proste, ale w przypadku usuwania wygląda na nieco bardziej skomplikowane. http://moduscreate.com/react-native-dynamic-animated-lists/
- 1. ListView Animuj wiersze po usunięciu zaznaczonego wiersza
- 2. Dlaczego elementy ListView nie rosną, aby zawinąć ich zawartość?
- 3. Wizualizacja modelu danych Haskell ze źródła
- 4. DataTables - Dynamiczne kolumny ze źródła danych Ajax?
- 5. ReactNative ListView ustawienie początkowej pozycji przewijania po załadowaniu danych
- 6. Czy potrafisz usuwać elementy ze std :: list podczas ich iteracji?
- 7. Animowana zmiana danych listview
- 8. Pobierz wszystkie elementy ListView (wiersze)
- 9. Jak podać "Empty ListView Message", gdy nie ma źródła danych
- 10. Połączenia a źródła danych
- 11. Android Listview zachowuje stare elementy po zmianie adaptera.
- 12. DataGridView: Zachowaj wybór po zmianie źródła danych?
- 13. Dynamicznie przeładuj UIPageViewController po zmianie źródła danych
- 14. Jak korzystać z pg_trgm po instalacji PostgreSQL ze źródła
- 15. Jak zresetować elementy do ich oryginalnego stanu, po łańcuchu manipulacji?
- 16. ListView z niestandardowym adapterem, dodając elementy jeden po drugim
- 17. Animowane elementy listy w ListView
- 18. Wyświetl elementy i tytuły ListView
- 19. Zmień plik hibernate.connection.url ze źródła
- 20. Jak zbudować qt ze źródła
- 21. CollectionViewSource Filtr nie odświeżony po zmianie źródła
- 22. Czy powinienem zamknąć połączenie pochodzące ze źródła danych?
- 23. hadoop nie zbudował ze źródła
- 24. Jak załadować klejnot ze źródła?
- 25. Przetwarzanie źródła Java ze Scala
- 26. Jak zaktualizować QAbstractTableModel i QTableView po posortowaniu źródła danych?
- 27. Czy ktoś zdołał zbudować WSO2 ze źródła?
- 28. JasperReporty i niestandardowe źródła danych
- 29. NamedParameterJdbcDaoSupport autowire źródła danych?
- 30. Utwórz własne źródła danych
Ponieważ mój listitem jest komponentem, mogę również przeformułować pytanie: Jak animować komponent tuż przed jego odmontowaniem? – David
To jest świetne pytanie i nie ma jeszcze odpowiedzi. Czy istnieje sposób na animowanie komponentu w ** Unmount **? – manosim