Форум программистов, компьютерный форум, киберфорум
Наши страницы

Программирование Android

Войти
Регистрация
Восстановить пароль
 
Otori86
0 / 0 / 0
Регистрация: 14.12.2015
Сообщений: 9
#1

Координаты анимации - Программирование Android

17.06.2017, 11:33. Просмотров 214. Ответов 1
Метки нет (Все метки)

Здравствуйте, писал приложение и столкнулся с одной проблемой: нужно определить координаты анимации, чтобы фиксировать пересечение двух объектов (textView и imageView). Т.е. большой робот должен ловить кружочки (см. скрин). Подскажите, как это можно сделать.
Код
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
public class MainActivity extends Activity {
 
    private float xCoOrdinate;
    private Rect mDisplaySize = new Rect();
 
    public int genRandom(int min, int max) {
        Random r = new Random();
        return r.nextInt(max - min) + 1;
    }
 
    private RelativeLayout mRootLayout;
    private ArrayList<View> mAllTextViews = new ArrayList<View>();
    int op = 0;
    private float mScale;
    float x;
    float y;
 
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
 
        Display display = getWindowManager().getDefaultDisplay();
        display.getRectSize(mDisplaySize);
 
        DisplayMetrics metrics = new DisplayMetrics();
        display.getMetrics(metrics);
        mScale = metrics.density;
 
        mRootLayout = (RelativeLayout) findViewById(R.id.main_layout);
        ImageView imageView = (ImageView) findViewById(img);
        imageView.setOnTouchListener(new View.OnTouchListener() {
            @Override
            public boolean onTouch(View view, MotionEvent event) {
                x = event.getX();
                y = event.getY();
                switch (event.getActionMasked()) {
                    case MotionEvent.ACTION_DOWN:
                        xCoOrdinate = view.getX() - event.getRawX();
                        break;
                    case MotionEvent.ACTION_MOVE:
                        view.animate().x(event.getRawX() + xCoOrdinate).setDuration(0).start();
                        break;
                    default:
                        return false;
                }
                return true;
            }
        });
        new Timer().schedule(new ExeTimerTask(), 0, 5000);
    }
 
    public void startAnimation(final TextView aniView) {
 
        aniView.setPivotX(aniView.getWidth() / 2);
        aniView.setPivotY(aniView.getHeight() / 2);
 
        long delay = new Random().nextInt(Constants.MAX_DELAY);
 
        final ValueAnimator animator = ValueAnimator.ofFloat(0, 1);
        animator.setDuration(Constants.ANIM_DURATION);
        animator.setInterpolator(new AccelerateInterpolator());
        animator.setStartDelay(delay);
 
 
        animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
 
            int movex = genRandom(mDisplaySize.left, mDisplaySize.right - aniView.getWidth());
 
            @Override
            public void onAnimationUpdate(ValueAnimator animation) {
                float value = ((Float) (animation.getAnimatedValue())).floatValue();
 
                aniView.setTranslationX(movex - (mScale * 150));
                aniView.setTranslationY((mDisplaySize.bottom + (150 * mScale)) * value);
            }
 
        });
        
        animator.start();
    }
 
    private Handler mHandler = new Handler() {
        @Override
        public void handleMessage(Message msg) {
            super.handleMessage(msg);
            LayoutInflater inflate = LayoutInflater.from(MainActivity.this);
            TextView textView = (TextView) inflate.inflate(R.layout.ani_image_view, null);
            textView.setText(String.valueOf(op));
            mRootLayout.addView(textView);
            mAllTextViews.add(textView);
 
            LayoutParams animationLayout = (LayoutParams) textView.getLayoutParams();
            animationLayout.setMargins(0, (int) (-150 * mScale), 0, 0);
            op++;
            startAnimation(textView);
        }
    };
 
    private class ExeTimerTask extends TimerTask {
        @Override
        public void run() {
            mHandler.sendEmptyMessage(Constants.EMPTY_MESSAGE_WHAT);
        }
    }
 
}

Координаты анимации
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.06.2017, 11:33
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Координаты анимации (Программирование Android):

Точные координаты анимации - Программирование Android
Добрый день ! Я задал анимацию не в XML файле а програмно: imageView = (ImageView) findViewById(R.id.kursor); ...

Как задать координаты анимации - Программирование Android
Добрый день ! Сначала задавал анимацию с помощью TranslateAnimation animationLeft = new TranslateAnimation(300, -300, 0, 0); Я...

Тормоза анимации - Программирование Android
Есть некоторое приложение с анимацией. Анимация выводится на SurfaceView и сделана таким образом, что примерно 2/3 экрана движутся с...

Остановка анимации - Программирование Android
Здравствуйте, мне нужно запрограммировать кнопку(button1) на остановку анимации. Пока получился только старт анимации. import...

Отмена возврата анимации - Программирование Android
Добрый день решил попробовать реализовать простую анимацию, все получилось, но после реализации анимации объект возвращается на начальную...

Воспроизведение видео- анимации - Программирование Android
Эсли создать анимацию в стороннем пакете, конвертировать в видео, то как можно воспроизвести эту анимацию в качестве заставки?

1
Otori86
0 / 0 / 0
Регистрация: 14.12.2015
Сообщений: 9
19.06.2017, 18:12  [ТС] #2
Решил изменить подход, отрисовываю все в SurfaceView. Мне кажется, это не оч хорошее решение в плане производительности. Что бы хорошо подошло под эту задачу?
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.06.2017, 18:12
Привет! Вот еще темы с ответами:

Анимации открытия и закрытия активностей - Программирование Android
Для анимации перехода между активностями использовал метод overridePendingTransition(R.anim.dt,R.anim.alpha). Анимация открытия...

Оптимизация просмотра гиф-анимации - Программирование Android
Я написал программку для просмотра прикольных гифок: https://play.google.com/store/apps/details?id=com.comics.codefun&amp;hl=ru Для...

Прекращение проигрывания музыки и анимации - Программирование Android
как сделать так чтобы при нажатии кнопок на телефоне (назад и свернуть) прекращалась и анимация и проигрывание...

Добавление gif анимации в приложение - Программирование Android
Возможно ли в Android Studio добавить gif анимацию в приложение? Анимация берётся не из сети а загружается сразу.


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

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

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