#android #angular #nativescript
#Android #angular #nativescript
Вопрос:
У меня есть проект NativeScript, который содержит ListView. Я использовал его событие «onItemTap», и это функция, которую я написал:
onItemTap(args){
let clicked = args.view.bindingContext;
let fav = this.page.getViewById("star-" clicked.id);
fav.animate({
rotate: 360,
duration: 1000
});
}
По сути, я извлекаю элемент, на который я нажал, внутри элемента есть метка с идентификатором "star-N"
[N — это intex элемента], и я его анимирую.
Это работает нормально, проблема в том, что это работает только один раз! Со второго нажатия она больше не анимируется. Консоль не возвращает никаких ошибок. Я использую свое Android-устройство для его отладки.
Есть идеи? Спасибо!
Ответ №1:
По-видимому, после поворота свойство элемента «rotate» не сбрасывается до его начального значения. Это означает, что при первом нажатии ваше свойство поворота переходит с 0 => 360, а затем при втором нажатии с 360 => 360, поэтому анимация не происходит.
Не уверен, действительно ли это так, но вы всегда можете вручную установить для свойства rotate значение 0 после завершения анимации:
onItemTap(args) {
let clicked = args.view.bindingContext;
let fav = this.page.getViewById("star-" clicked.id);
fav.animate({
rotate: 360,
duration: 1000
}).then(() => fav.rotate = 0);
}
Комментарии:
1. Черт возьми, я думал, что метод «анимировать» повлиял на элемент только временно! Я не думал, что он мог бы установить свойство «повернуть» на 360! Спасибо! Не могли бы вы сказать мне, где находятся свойства представления, перечисленные в документах NativeScript?