Nano Hash - криптовалюты, майнинг, программирование

Правильный способ скрыть представление с помощью анимации?

Я пробовал несколько способов скрыть представление, а затем удалить его из родительского макета:

  1. Вызов альфа-анимации затухания с последующим вызовом setVisibility(GONE);
  2. Вызов альфа-анимации затухания с последующим вызовом setVisibility(GONE) внутри AnimationListener
  3. Вызовите анимацию альфа-затухания с последующим удалением родительского макета внутри AnimationListener.

Каждый раз получающаяся анимация терпит неудачу --- вид дважды исчезает с экрана. Альфа-анимация затухания работает нормально, но когда вы меняете видимость или удаляете ее из родительского представления, она снова быстро появляется снова, прежде чем исчезнуть во второй раз. Результатом является неожиданная дрожащая анимация.

Пример кода:

Animation animation = AnimationUtils.loadAnimation(AddTaskActivity.this,
            R.anim.fade_out);
final LinearLayout parentView = (LinearLayout) findViewById(R.id.addtask_root);
animation.setAnimationListener(new Animation.AnimationListener() {

    @Override
    public void onAnimationEnd(Animation animation) {
    parentView.post(new Runnable() {
            public void run() {
                        parentView.removeView(test);
                }
    });
    }

Эта анимация не работает — тестовое представление дважды исчезает из поля зрения.

Любые идеи?


Ответы:


1

Я предполагаю, что если вы сделаете свое представление прозрачным, прежде чем удалить его или изменить его видимость, вы сможете делать то, что хотите:

@Override
    public void onAnimationEnd(Animation animation) {
    parentView.post(new Runnable() {
            public void run() {
                        // transparent your view
                        ...     
                        parentView.removeView(test);
                }
    });

Изменить:

Я видел документацию по Android об анимации, и в ней говорится:

Еще одним недостатком системы анимации представлений является то, что она модифицировала только то место, где было нарисовано представление, а не само фактическое представление. Например, если вы анимировали кнопку для перемещения по экрану, кнопка отображается правильно, но фактическое место, где вы можете нажать кнопку, не меняется, поэтому вам нужно реализовать собственную логику, чтобы справиться с этим.

С помощью системы анимации свойств эти ограничения полностью снимаются, и вы можете анимировать любое свойство любого объекта (представления и не-представления), а сам объект фактически изменяется. Система анимации свойств также более надежна в том, как она выполняет анимацию. На высоком уровне вы назначаете аниматорам свойства, которые хотите анимировать, такие как цвет, положение или размер, и можете определять такие аспекты анимации, как интерполяция и синхронизация нескольких аниматоров.

Поэтому я предполагаю, что вам нужно использовать property animation.

10.08.2012
  • Неа. Пробовал и это. Проблема в том, что после завершения анимации fade_out представление снова становится видимым на долю секунды, вызывая дрожание. 10.08.2012
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..