Android-анимация Высокая загрузка ЦП - PullRequest
0 голосов
/ 25 сентября 2018

Я пытаюсь создать простую анимацию для Android.Прыгающий маркер на карте Google.Я уже реализовал простой код для этого, но когда я запускаю его на API 28, это почти нормально.Когда я запускаю код в любой другой версии API, на нескольких эмуляторах и даже на моем телефоне, загрузка ЦП выглядит чрезвычайно высокой, от 35% до 80-90% в течение всего времени работы.Все мои основные действия выглядят медленнее.

Я использую макет ограничения, я не знаю, может ли это быть полезным

Это мой bounce.xml:

<set xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/bounce_interpolator">
    <translate
        android:duration="800"
        android:toYDelta="-50"
        android:repeatCount="infinite"
        android:repeatMode= "reverse"
     />
</set>

Это мое простое основное занятие:

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.animation.AnimationUtils;

public class Home extends AppCompatActivity
{
    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_home);

        findViewById(R.id.img_pointer1_id).startAnimation(AnimationUtils.loadAnimation(getApplicationContext(), R.anim.bounce));
    }
}

Любое предложение о том, как исправить это / любое альтернативное решение?

1 Ответ

0 голосов
/ 26 сентября 2018

Это версия ObjectAnimator вашей анимации.Не могли бы вы попробовать это?Надеюсь, это поможет.

    @Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    //findViewById(R.id.img_pointer1_id).startAnimation(AnimationUtils.loadAnimation(getApplicationContext(), R.anim.bounce));

    ObjectAnimator animator = ObjectAnimator.ofFloat(findViewById(R.id.img_pointer1_id), "translationY", 0, -50, 0);
    animator.setInterpolator(new BounceInterpolator());
    animator.setDuration(800);
    animator.setRepeatCount(ValueAnimator.INFINITE);
    animator.setRepeatMode(ValueAnimator.REVERSE);
    animator.start();
}
...