У меня есть флиппер полноэкранного просмотра на вкладке галактики, содержащий два относительных макета, каждый из которых отображает от пяти до десяти изображений.
У меня возникают проблемы, когда я пытаюсь сдвинуть один из видов флиппера, а другой - внутрь, «анимация» ничего не делает, а затем просто переключается.
Если я удалю все изображения, кроме одного, в каждом из дочерних элементов просмотра, анимация будет в порядке.
Могу ли я каким-то образом заставить его использовать смешанную версию изображения для анимации, или относительный контейнер макета вызывает проблему с производительностью?
Во время анимации флиппера ничего не должно происходить, поэтому я не могу понять проблему.
Благодарность
РЕДАКТИРОВАТЬ: Некоторый проблемный код: возможно, это может указывать на области, вызывающие проблемы с производительностью?
У меня есть в моем onClick два вызова метода, используемые для переключения назад через представления и вперед. Представление «генерируется» непосредственно перед добавлением во флиппер и переключением.
Так, по нажатию кнопки "Назад" (например) у меня (между прочим) ....
nextView = new RelativeLayout(this);
makeAView(selectedViewObjects, viewHolder2);
switchViewNow(-1);
currentView = nextView;
...
private void makeAView(ViewObjects vObjects, RelativeLayout nextView)
{
for(Object obj : vObjects.viewObjects)
{
if(obj instanceof Image)
{
addImageView(nextView, obj);
{
else
{
if(obj instanceof Anim)
{
addAnimView(nextView, obj);
}
}
Где Image — это настраиваемая реализация View для отображения статического изображения, а Anim — это настраиваемая реализация View для отображения AnimationDrawable (многокадровый цикл изображения).
Далее у нас есть метод переключения:
private void switchViewNow(int direction)
{
if(direction == -1)
{
viewFrame.setInAnimation(AnimClass.inFromLeftAnimation(null));
viewFrame.setOutAnimation(AnimClass.outToRightAnimation(null));
viewFrame.showNext();
}
else
if(direction == 1)
{
viewFrame.setInAnimation(AnimClass.inFromRightAnimation(null));
viewFrame.setOutAnimation(AnimClass.outToLeftAnimation(null));
viewFrame.showNext();
}
}
1 ответ
Я могу ошибаться, но мне кажется, что вы перегрузили nextView запутанным образом.
Он определен вне makeAView, но makeAView ожидает параметр, который он называет nextView.
Вы передаете viewHolder2 как nextView этой функции.
Это означает, что makeAView НЕ изменит «глобальный» nextView, он изменит viewHolder2.
Но тогда вы, кажется, предполагаете, что «глобальный» nextView был изменен, потому что вы используете его для назначения currentView.
Я думаю, было бы неплохо начать, если бы вы присвоили этим двум версиям nextView уникальные имена.
Интересно, вы все еще ищете решение: этот пост довольно старый и игнорируется.
Похожие вопросы
Новые вопросы
android
Android — это мобильная операционная система Google, используемая для программирования или разработки цифровых устройств (смартфонов, планшетов, автомобилей, телевизоров, одежды, очков, IoT). Для тем, связанных с Android, используйте теги, специфичные для Android, такие как android-intent, android-activity, android-adapter и т. д. Для вопросов, отличных от разработки или программирования, но связанных с Android framework, используйте эту ссылку: https://android .stackexchange.com.