Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
Star2016
5 / 5 / 0
Регистрация: 26.07.2016
Сообщений: 233
1

Анимация плавного исчезновения ImageView

16.12.2016, 14:08. Просмотров 973. Ответов 9
Метки нет (Все метки)

Пытаюсь сделать плавное исчезновение imageView (zoomin в коде) , все компилируется , но программа сначала долго не реагирует а потом zoomin исчезает как при простом GONE
toast - старт вообще не появляется. Стоп появляется в конце

В логе Skipped 551 frames! Как такое может быть ведь AsyncTask не главный поток ????????


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
25
26
27
28
29
30
31
32
33
34
35
36
37
38
  @Override
        protected void onPreExecute() {
            super.onPreExecute();
 
            Toast.makeText(getApplicationContext(), "Старт", Toast.LENGTH_LONG).show();
 
                float getA=1f;
 
                for (int i=0; i<20; i++) {
 
                    if ((getA-0.1f)>0) {
 
                        try {
                        TimeUnit.SECONDS.sleep(1);
 
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
 
                    getA=getA-0.1f;
                        zoomin.setAlpha(getA);
 
                    }
                    else
                    {
                        zoomin.setAlpha(0f);
                    }
 
                    testtextView.setText(Float.toString(getA));
 
                }
 
 
 
 
            Toast.makeText(getApplicationContext(), "Стоп", Toast.LENGTH_LONG).show();
 
        }
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.12.2016, 14:08
Ответы с готовыми решениями:

ImageView и анимация
Всем привет! Как можно переместить ImageView за пределы правой границы экрана...

Анимация ImageView
Здравствуйте. Как реализовать анимацию Imageview таким образом,что бы при...

Скопировать картинку из одной ImageView в другую ImageView
В ImageView поставлена картинка методом setImageResource. По нажатию на неё,...

ImageView
Добрый день ! Делал проект с нуля, все как обычно, но при поиске id для...

ImageView
Подскажите как правильно выводить картинку из URL Вроде нашел какой то пример...

9
fraley
110 / 110 / 43
Регистрация: 24.05.2015
Сообщений: 329
16.12.2016, 15:05 2
А где функция doInBackground, которая и выполняет всю работу в отдельном потоке?
И которая кстати не имеет доступ к главному треду.
1
Pablito
2812 / 2236 / 754
Регистрация: 12.05.2014
Сообщений: 7,824
Завершенные тесты: 1
16.12.2016, 15:09 3
onPreExecute выполняется в главном потоке, а там в коде sleep 20 раз вызывается

почему нельзя просто создать анимацию и запустить ее на zoomin прямо перед стартом асинктаска?
1
Star2016
5 / 5 / 0
Регистрация: 26.07.2016
Сообщений: 233
16.12.2016, 15:16  [ТС] 4
Можно пример такой анимации????

Добавлено через 1 минуту
doInBackground - я ее оставил пустой так как нет смысла мне же нужно управлять видимостью вьюшки а doInBackground не имеет доступа к ним насколько я понял.
0
Pablito
2812 / 2236 / 754
Регистрация: 12.05.2014
Сообщений: 7,824
Завершенные тесты: 1
16.12.2016, 15:17 5
то есть асинк таск для того, что бы управлять прозрачностью вьюшки? это печально
0
Star2016
5 / 5 / 0
Регистрация: 26.07.2016
Сообщений: 233
16.12.2016, 15:22  [ТС] 6
я понимаю что решение не лучшее , но как иначе реализовать затухание???????
0
Pablito
2812 / 2236 / 754
Регистрация: 12.05.2014
Сообщений: 7,824
Завершенные тесты: 1
16.12.2016, 15:25 7
Лучший ответ Сообщение было отмечено Star2016 как решение

Решение

1. в папке res/anim создаем например файл fade.xml с таким содержимым
XML
1
2
3
4
5
6
7
8
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
    android:duration="5000"
    android:fillAfter="true">
    <alpha
        android:fromAlpha="1"
        android:toAlpha="0" />
</set>
2. используем где надо в коде, без всяких асинктасков
Java
1
2
        Animation a = AnimationUtils.loadAnimation(this, R.anim.fade);
        view.startAnimation(a);
1
Star2016
5 / 5 / 0
Регистрация: 26.07.2016
Сообщений: 233
16.12.2016, 16:11  [ТС] 8
Спасибо!!! Такого решения я не знал буду пробовать!!!

Добавлено через 43 минуты
Появилась маленькая проблемка. После того как анимация выполнена нужно еще выполнить GONE иначе элемент (кнопка ) остается активным. Причем сделать это надо после того как кнопка стала невидима. Как отследить что анимация завершилась?
0
Pablito
2812 / 2236 / 754
Регистрация: 12.05.2014
Сообщений: 7,824
Завершенные тесты: 1
16.12.2016, 16:21 9
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
        final View view = findViewById(R.id.view);
        Animation a = AnimationUtils.loadAnimation(this, R.anim.fade);
        view.startAnimation(a);
        a.setAnimationListener(new Animation.AnimationListener() {
            @Override
            public void onAnimationStart(Animation animation) {
            }
 
            @Override
            public void onAnimationEnd(Animation animation) {
                view.setVisibility(GONE);
            }
 
            @Override
            public void onAnimationRepeat(Animation animation) {
            }
        });
2
Star2016
5 / 5 / 0
Регистрация: 26.07.2016
Сообщений: 233
16.12.2016, 17:16  [ТС] 10
Спасибо!
0
16.12.2016, 17:16
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.12.2016, 17:16

ImageView
Добрый день. Вы не подскажите, как передать изображение из одного ImageView в...

Координаты imageView
Доброго времени суток. Как программно установить координаты появления...

Квадратный ImageView
Как заставить ImageView всегда быть квадратным и при этом максимального размера...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru