Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
dedlovscky
16 / 11 / 0
Регистрация: 06.03.2015
Сообщений: 149
Завершенные тесты: 2
1

Сохранить анимацию при повороте устройства

17.08.2017, 22:01. Просмотров 287. Ответов 4
Метки нет (Все метки)

Доброго времени суток!!!
Возникла проблема о которой не подозревал, при повороте устройства анимация пропадает, но через установленный интервал выполнения анимации, фрагмент заменяется как надо.
Вопрос как это фиксить?
И еще один момент, стоит ли (декларативно ли) запрещать смену ориентации экрана?

Добавлено через 44 минуты
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
        ObjectAnimator translationYCoordinates = ObjectAnimator
                .ofFloat(mImageButtonCoordinates, "translationY", y, -y)
                .setDuration(1000);
        translationYCoordinates.setInterpolator(new LinearOutSlowInInterpolator());
 
        ObjectAnimator translationYHistory = ObjectAnimator
                .ofFloat(mImageButtonHistory, "translationY", -y, y)
                .setDuration(1000);
        translationYHistory.setInterpolator(new LinearOutSlowInInterpolator());
 
        AnimatorSet animatorSet = new AnimatorSet();
        animatorSet
                .play(translationYCoordinates)
                .with(translationYHistory);
        animatorSet.start();
Использую в проекте фрагменты из библиотеки поддержки.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.08.2017, 22:01
Ответы с готовыми решениями:

Ошибка с фрагментами при повороте устройства
Здравствуйте! Имеется такой код activity: public class MainActivity extends...

Fragment некорректно работает при повороте устройства
При выводе на экран фрагмента после поворота устройства получаю такую ошибку: ...

Сохранить imageview при повороте экрана
Доброго времени суток. При повороте екрана нужно сохранить imageView. Знаю что...

Как сделать так, чтобы при повороте устройства экран оставался вертикальным?
Как сделать так, чтобы при повороте устройства экран оставался вертикальным?...

Как сохранить все данные при повороте
При повороте нужно сохранить все данные activity. Как это делают и делают ли?

4
Pablito
2811 / 2235 / 754
Регистрация: 12.05.2014
Сообщений: 7,820
Завершенные тесты: 1
18.08.2017, 11:32 2
где вас клонируют?

100500 раз уже писалось - если разметка для ориентаций одинаковая то можно дописывать в манифест запрет на пересоздание при повороте

если разметки разные - очищать анимацию при перевороте, но этот кусок кода ниочем вообще
1
dedlovscky
16 / 11 / 0
Регистрация: 06.03.2015
Сообщений: 149
Завершенные тесты: 2
18.08.2017, 11:54  [ТС] 3
Цитата Сообщение от Pablito Посмотреть сообщение
очищать анимацию при перевороте
Чуток подробнее, если можно.
0
Pablito
2811 / 2235 / 754
Регистрация: 12.05.2014
Сообщений: 7,820
Завершенные тесты: 1
18.08.2017, 13:00 4
пальцем в небо
Java
1
2
3
4
5
    @Override
    public void onSaveInstanceState(Bundle outState) {
        if (animatorSet != null) animatorSet.cancel();
        super.onSaveInstanceState(outState);
    }
1
dedlovscky
16 / 11 / 0
Регистрация: 06.03.2015
Сообщений: 149
Завершенные тесты: 2
18.08.2017, 17:10  [ТС] 5
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
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
111
112
113
114
115
116
117
118
119
120
121
122
123
124
package ru.object941.keen.fragments;
 
import android.animation.AnimatorSet;
import android.animation.ObjectAnimator;
import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.support.v4.view.animation.LinearOutSlowInInterpolator;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageButton;
 
import ru.object941.keen.R;
import ru.object941.keen.data.PasswordVerification;
import ru.object941.keen.system.StartElement;
 
 
public class MenuFragment extends Fragment{
 
    private ImageButton mImageButtonCoordinates;
    private ImageButton mImageButtonHistory;
 
    private StartElement mStartElement;
 
    private AnimatorSet mAnimatorSet;
 
    @SuppressWarnings("deprecation")
    @Override
    public void onAttach(Activity activity) {
        super.onAttach(activity);
        if (activity instanceof StartElement) {
            mStartElement = (StartElement) activity;
        }
    }
 
    @Override
    public void onAttach(Context context) {
        super.onAttach(context);
        if (context instanceof StartElement) {
            mStartElement = (StartElement) context;
        }
    }
 
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment_menu, container, false);
 
        mImageButtonCoordinates = view.findViewById(R.id.imageButtonCoordinates);
        mImageButtonHistory = view.findViewById(R.id.imageButtonHistory);
 
        mImageButtonCoordinates.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                startAnimator();
            }
        });
 
        mImageButtonHistory.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                startAnimator();
            }
        });
 
        return view;
    }
 
    @Override
    public void onActivityCreated(@Nullable Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);
 
        if (savedInstanceState == null){
            float y = PasswordVerification.getMetricY(getContext());
 
            ObjectAnimator translationYCoordinates = ObjectAnimator
                    .ofFloat(mImageButtonCoordinates, "translationY", -y, y * .1f)
                    .setDuration(5000);
            translationYCoordinates.setInterpolator(new LinearOutSlowInInterpolator());
 
            ObjectAnimator translationYHistory = ObjectAnimator
                    .ofFloat(mImageButtonHistory, "translationY", y, -y * .1f)
                    .setDuration(5000);
            translationYHistory.setInterpolator(new LinearOutSlowInInterpolator());
 
            mAnimatorSet = new AnimatorSet();
            mAnimatorSet
                    .play(translationYCoordinates)
                    .with(translationYHistory);
            mAnimatorSet.start();
        }
    }
 
    private void startAnimator(){
        float y = PasswordVerification.getMetricY(getContext());
 
        ObjectAnimator translationYCoordinates = ObjectAnimator
                .ofFloat(mImageButtonCoordinates, "translationY", y, -y)
                .setDuration(1000);
        translationYCoordinates.setInterpolator(new LinearOutSlowInInterpolator());
 
        ObjectAnimator translationYHistory = ObjectAnimator
                .ofFloat(mImageButtonHistory, "translationY", -y, y)
                .setDuration(1000);
        translationYHistory.setInterpolator(new LinearOutSlowInInterpolator());
 
        AnimatorSet animatorSet = new AnimatorSet();
        animatorSet
                .play(translationYCoordinates)
                .with(translationYHistory);
        animatorSet.start();
    }
 
    @Override
    public void onSaveInstanceState(Bundle outState) {
        if (mAnimatorSet != null){
            mAnimatorSet.cancel();
        }
        super.onSaveInstanceState(outState);
    }
}
Добавлено через 3 минуты
Мне так же необходимо продолжить анимацию, прерванную поворотом уст-ва, в новой ориентации с места прерывания.
Или я велосипед делаю? Может есть стандартное решение?
Цитата Сообщение от dedlovscky Посмотреть сообщение
Pablito
тоько на тебя надежда походу, выручай
0
18.08.2017, 17:10
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.08.2017, 17:10

Сохранить состояние презентера при пересоздании (повороте) активити
Вот у презентера можно реализовать метод onDetach() в котором он обнуляет...

Сохранить, восстановить данные при повороте (Фрагмент, Поток)
Помогите разобраться как сделать правильно поворот экрана. Есть МаинАктивити в...

Как сохранить состояние хронометра при повороте экрана?
в программе запускается хронометр Chronometer chronometer = (Chronometer)...


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

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

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