Форум программистов, компьютерный форум, киберфорум
Программирование Android
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
1 / 0 / 1
Регистрация: 22.09.2016
Сообщений: 13

Перезапуск animatedvectordrawable

19.04.2017, 14:12. Показов 1558. Ответов 5

Студворк — интернет-сервис помощи студентам
Добрый день.
Пытаюсь сделать так чтобы
Java
1
animatedVectorDrawable
постоянно перезапускался автоматически.
вот код самой анимации
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
<animated-vector
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:aapt="http://schemas.android.com/aapt">
    <aapt:attr name="android:drawable">
        <vector
            xmlns:android="http://schemas.android.com/apk/res/android"
            android:width="24dp"
            android:height="24dp"
            android:viewportWidth="24"
            android:viewportHeight="24"
            android:alpha="1">
            <path
                android:name="path"
                android:pathData="M 12.5 12 L 12 11.5 L 12 11.5 L 12.01 11.5 L 11.5 12 L 11.5 12 L 11.5 12 L 12 12.5 L 12 12.5 L 12 12.5 L 12.5 12 L 12.5 12 L 12.5 12 Z"
                android:fillColor="#000000"/>
        </vector>
    </aapt:attr>
    <target android:name="path">
        <aapt:attr name="android:animation">
            <set xmlns:android="http://schemas.android.com/apk/res/android"
                android:ordering="sequentially">
                <objectAnimator
                    android:name="path"
                    android:propertyName="pathData"
                    android:startOffset="200"
                    android:duration="100"
                    android:valueFrom="M 12.5 12 L 12 11.5 L 12 11.5 L 12.01 11.5 L 11.5 12 L 11.5 12 L 11.5 12 L 12 12.5 L 12 12.5 L 12 12.5 L 12.5 12 L 12.5 12 L 12.5 12 Z"
                    android:valueTo="M 13.4 11.99 L 12.01 10.59 L 12 10.59 L 12.02 10.6 L 10.59 12 L 10.59 12 L 10.59 12 L 11.99 13.41 L 12 13.41 L 12 13.4 L 13.4 11.99 L 13.41 12 L 13.4 11.99 Z"
                    android:valueType="pathType"
                    android:interpolator="@android:anim/accelerate_decelerate_interpolator"/>
                <objectAnimator
                    android:name="path"
                    android:propertyName="pathData"
                    android:startOffset="200"
                    android:duration="100"
                    android:valueFrom="M 13.4 11.99 L 12.01 10.59 L 12 10.59 L 12.02 10.6 L 10.59 12 L 10.59 12 L 10.59 12 L 11.99 13.41 L 12 13.41 L 12 13.4 L 13.4 11.99 L 13.41 12 L 13.4 11.99 Z"
                    android:valueTo="M 13.4 11.99 L 12.01 10.59 L 12 10.59 L 12.02 10.6 L 10.59 12 L 10.59 12 L 10.59 12 L 11.99 13.41 L 12 13.41 L 17.59 19 L 19 17.59 L 13.41 12 L 13.4 11.99 Z"
                    android:valueType="pathType"
                    android:interpolator="@android:anim/accelerate_decelerate_interpolator"/>
                <objectAnimator
                    android:name="path"
                    android:propertyName="pathData"
                    android:startOffset="200"
                    android:duration="100"
                    android:valueFrom="M 13.4 11.99 L 12.01 10.59 L 12 10.59 L 12.02 10.6 L 10.59 12 L 10.59 12 L 10.59 12 L 11.99 13.41 L 12 13.41 L 17.59 19 L 19 17.59 L 13.41 12 L 13.4 11.99 Z"
                    android:valueTo="M 13.4 11.99 L 12.01 10.59 L 12 10.59 L 12.02 10.6 L 10.59 12 L 10.59 12 L 5 17.59 L 6.41 19 L 12 13.41 L 17.59 19 L 19 17.59 L 13.41 12 L 13.4 11.99 Z"
                    android:valueType="pathType"
                    android:interpolator="@android:anim/accelerate_decelerate_interpolator"/>
                <objectAnimator
                    android:name="path"
                    android:propertyName="pathData"
                    android:startOffset="200"
                    android:duration="100"
                    android:valueFrom="M 13.4 11.99 L 12.01 10.59 L 12 10.59 L 12.02 10.6 L 10.59 12 L 10.59 12 L 5 17.59 L 6.41 19 L 12 13.41 L 17.59 19 L 19 17.59 L 13.41 12 L 13.4 11.99 Z"
                    android:valueTo="M 13.4 11.99 L 12.01 10.59 L 12 10.59 L 6.41 5 L 5 6.41 L 10.59 12 L 5 17.59 L 6.41 19 L 12 13.41 L 17.59 19 L 19 17.59 L 13.41 12 L 13.4 11.99 Z"
                    android:valueType="pathType"
                    android:interpolator="@android:anim/accelerate_decelerate_interpolator"/>
                <objectAnimator
                    android:name="path"
                    android:propertyName="pathData"
                    android:duration="100"
                    android:valueFrom="M 13.4 11.99 L 12.01 10.59 L 12 10.59 L 6.41 5 L 5 6.41 L 10.59 12 L 5 17.59 L 6.41 19 L 12 13.41 L 17.59 19 L 19 17.59 L 13.41 12 L 13.4 11.99 Z"
                    android:valueTo="M 19 6.41 L 17.59 4.99 L 12 10.59 L 6.41 5 L 5 6.41 L 10.59 12 L 5 17.59 L 6.41 19 L 12 13.41 L 17.59 19 L 19 17.59 L 13.41 12 L 19 6.41 Z"
                    android:valueType="pathType"
                    android:interpolator="@android:anim/accelerate_decelerate_interpolator"/>
                <objectAnimator
                    android:name="path"
                    android:propertyName="pathData"
                    android:duration="100"
                    android:valueFrom="M 19 6.41 L 17.59 4.99 L 12 10.59 L 6.41 5 L 5 6.41 L 10.59 12 L 5 17.59 L 6.41 19 L 12 13.41 L 17.59 19 L 19 17.59 L 13.41 12 L 19 6.41 Z"
                    android:valueTo="M 19 6.41 L 17.59 4.99 L 12 10.59 L 6.41 5 L 5 6.41 L 10.59 12 L 5 17.59 L 6.41 19 L 12 13.41 L 17.59 19 L 19 17.59 L 13.41 12 L 19 6.41 Z"
                    android:valueType="pathType"
                    android:interpolator="@android:anim/accelerate_decelerate_interpolator"/>
                <objectAnimator
                    android:name="path"
                    android:propertyName="pathData"
                    android:duration="100"
                    android:valueFrom="M 19 6.41 L 17.59 4.99 L 12 10.59 L 6.41 5 L 5 6.41 L 10.59 12 L 5 17.59 L 6.41 19 L 12 13.41 L 17.59 19 L 19 17.59 L 13.41 12 L 19 6.41 Z"
                    android:valueTo="M 17 13.01 L 17 11.01 L 13 11 L 13.01 7 L 11.01 7 L 11 11 L 7 10.99 L 7 12.98 L 11 12.99 L 10.99 17 L 12.98 17 L 12.99 13 L 17 13.01 Z"
                    android:valueType="pathType"
                    android:interpolator="@android:anim/accelerate_decelerate_interpolator"/>
                <objectAnimator
                    android:name="path"
                    android:propertyName="pathData"
                    android:duration="100"
                    android:valueFrom="M 17 13.01 L 17 11.01 L 13 11 L 13.01 7 L 11.01 7 L 11 11 L 7 10.99 L 7 12.98 L 11 12.99 L 10.99 17 L 12.98 17 L 12.99 13 L 17 13.01 Z"
                    android:valueTo="M 13.41 14.84 L 14.82 13.42 L 13.41 12 L 14.84 10.59 L 13.42 9.18 L 12 10.59 L 10.59 9.17 L 9.19 10.57 L 10.59 11.99 L 9.17 13.41 L 10.57 14.81 L 11.99 13.41 L 13.41 14.84 Z"
                    android:valueType="pathType"
                    android:interpolator="@android:anim/accelerate_decelerate_interpolator"/>
                <objectAnimator
                    android:name="path"
                    android:propertyName="pathData"
                    android:duration="100"
                    android:valueFrom="M 13.41 14.84 L 14.82 13.42 L 13.41 12 L 14.84 10.59 L 13.42 9.18 L 12 10.59 L 10.59 9.17 L 9.19 10.57 L 10.59 11.99 L 9.17 13.41 L 10.57 14.81 L 11.99 13.41 L 13.41 14.84 Z"
                    android:valueTo="M 10.98 13 L 12.99 13 L 13 13 L 13 13.02 L 13 11.02 L 13.01 11 L 13.02 11 L 11.04 11 L 11.02 10.99 L 11 10.98 L 11 12.96 L 11 12.98 L 10.98 13Z"
                    android:valueType="pathType"
                    android:interpolator="@android:anim/accelerate_decelerate_interpolator"/>
                <objectAnimator
                    android:name="path"
                    android:propertyName="pathData"
                    android:duration="100"
                    android:valueFrom="M 10.98 13 L 12.99 13 L 13 13 L 13 13.02 L 13 11.02 L 13.01 11 L 13.02 11 L 11.04 11 L 11.02 10.99 L 11 10.98 L 11 12.96 L 11 12.98 L 10.98 13Z"
                    android:valueTo="M 12.5 12 L 12 11.5 L 12 11.5 L 12.01 11.5 L 11.5 12 L 11.5 12 L 11.5 12 L 12 12.5 L 12 12.5 L 12 12.5 L 12.5 12 L 12.5 12 L 12.5 12 Z"
                    android:valueType="pathType"
                    android:interpolator="@android:anim/accelerate_decelerate_interpolator"
                    />
            </set>
        </aapt:attr>
    </target>
</animated-vector>
В активности запускаю ее следующим образом
Java
1
2
3
4
5
6
7
8
9
10
ImageView imageView = new ImageView(mContext);
        imageView.setLayoutParams(new GridView.LayoutParams(100, 100));
        imageView.setScaleType(ImageView.ScaleType.FIT_CENTER);
        imageView.setImageResource(R.drawable.avd_vector_anim_cancel);
        AnimatedVectorDrawable avd;
        Drawable drawable = imageView.getDrawable();
        avd = (AnimatedVectorDrawable) drawable;
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
            avd.start();
        }
После первого запуска анимация останавливается. Пытался вынести ее запуск. т.е. эту часть кода
Java
1
2
3
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
            avd.start();
        }
в отдельный поток с таймером на запуск, но анимация не перезапускается, если смотреть отладчиком то все ок, а когда просто запускаю то ничего не происходит. Пробовал использовать
Java
1
2
3
4
5
6
avd.registerAnimationCallback(new Animatable2.AnimationCallback() {
                @Override
                public void onAnimationEnd(Drawable drawable) {
                    super.onAnimationEnd(drawable);
                }
            });
но как то тоже не пошло.
Может кто знает как можно перезапускать анимацию автоматически? (если прикрутить кликлистенер и в нем запускать то все работает).
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
19.04.2017, 14:12
Ответы с готовыми решениями:

Перезапуск таймера
Странное поведение таймера. Если он отрабатывает, то в методе run() я посылаю некое событие. Если же я хочу прервать его работу, то...

Перезапуск проектов
Нажимаю первый раз на кнопочку старта (сборки и запуска проекта), вылазит окошко, загружается андройд, открывается приложение. что то...

Перезапуск службы
У меня служба, которая запускается и которая не должна останавливаться. Глобальный BroadcastReceiver получает сообщения и запускает...

5
2884 / 2296 / 769
Регистрация: 12.05.2014
Сообщений: 7,978
19.04.2017, 14:27
а что если set-у дописать
XML
1
android:repeatCount="infinite"
0
1 / 0 / 1
Регистрация: 22.09.2016
Сообщений: 13
19.04.2017, 18:49  [ТС]
ничего не происходит, уже пробовал. set никак не реагирует на android:repeatCount="infinite"

Добавлено через 4 часа 12 минут
В общем сделал следующим образом и вроде все работает.
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
final Thread thread = new Thread(new Runnable() {
                @Override
                public void run() {
                    try {
                        while (true) {
                            Thread.sleep(1500);
                            if (Thread.currentThread().isInterrupted())
                                break;
                            imageView.post(new Runnable() {
                                @Override
                                public void run() {
                                    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
                                        avd.start();
                                    }
                                }
                            });
                        }
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
            });
 
            thread.start();
0
111 / 111 / 43
Регистрация: 24.05.2015
Сообщений: 329
20.04.2017, 14:35
Цитата Сообщение от mrgaric Посмотреть сообщение
В общем сделал следующим образом и вроде все работает.
А вы уверены что ваш thread убивается?
0
2884 / 2296 / 769
Регистрация: 12.05.2014
Сообщений: 7,978
20.04.2017, 14:42
Лучший ответ Сообщение было отмечено mrgaric как решение

Решение

можно было вообще написать
Java
1
2
3
4
5
6
7
8
9
    private final Runnable action = new Runnable() {
        @Override
        public void run() {
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
                avd.start();
                imageView.postDelayed(action, 1500);
            }
        }
    };
и где-то там в коде
Java
1
2
        imageView.post(action); // когда надо стартануть анимацию
        imageView.removeCallbacks(action); // когда надо прекратить анимацию
1
1 / 0 / 1
Регистрация: 22.09.2016
Сообщений: 13
21.04.2017, 15:35  [ТС]
Цитата Сообщение от fraley Посмотреть сообщение
А вы уверены что ваш thread убивается?
А почему ему не убиваться? в коде вызываю
Java
1
thread .interrupt();
и все нормально отрабатывается.

Добавлено через 33 секунды
Цитата Сообщение от Паблито Посмотреть сообщение
можно было вообще написать
Это именно то что я хотел получить. Спасибо.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
21.04.2017, 15:35
Помогаю со студенческими работами здесь

Полный перезапуск приложения
Добрый день подскажите как запилить полный перезапуск приложения, аналогичный ручному.

Обновление/перезапуск layout по нажатию
необходимо, чтобы по нажатию обновлялся/перезапускался layout. как организовать?

Перезапуск сервиса после task killer
Здравствуйте, подскажите пожалуйста, как сделать, что бы сервис перезапускался после того, как пользователь очищает список недавно открытых...

Перезапуск приложения после вкл/выкл разрешения на Marshmallow
Добрый день! Подскажите пожалуйста, может кто сталкивался. Запускаешь приложение, заходишь максимально далеко по экранам (ну или...

Перезапуск страницы
Здравствуйте. Возможно ли как-то в Xamarin Forms реализовать перезапуск текущей страницы? Или же обновление?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Киев стоит - украинская песня
zorxor 28.01.2026
wfWdiRqdTxc О Господи, Вечный, Ты . . . Я помоги, Бесконечный. . . Я прошу Ты. . . Я погибаю, спаси. . . Я прошу Тебя Вечный. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru