Слияние кода завершено, страница обновится автоматически
Анимационные функции замедления
Функция замедления анимации | Функция замедления анимации |
---|---|
![]() |
![]() |
Способ один:
В файле build.gradle проекта измените версию classpath на соответствующую версию (то есть версию, используемую в вашем новом проекте IDE).
Добавьте har в папку libs файла entry.
Добавьте следующий код в файл build.gradle entry:
implementation fileTree(dir: 'libs', include: ['*.jar', '*.har'])
Способ два:
allprojects{
repositories{
mavenCentral()
}
}
implementation 'io.openharmony.tpc.thirdlib:AnimationEasingFunctions:1.0.2'
private ListContainer mEasingList;
private EasingAdapter mAdapter;
private Component mTarget;
private long mDuration = 2000;
private DrawView mHistory;
mEasingList = (ListContainer) findComponentById(ResourceTable.Id_easing_list);
mAdapter = new EasingAdapter(this);
mEasingList.setItemProvider(mAdapter);
mTarget = findComponentById(ResourceTable.Id_target);
mHistory = (DrawView) findComponentById(ResourceTable.Id_history);
mEasingList.setItemClickedListener(new ListContainer.ItemClickedListener() {
@Override
public void onItemClicked(ListContainer listContainer, Component component, int position, long var4) {
mHistory.clear();
Skill skill = (Skill) component.getTag();
// Анимационная группа
AnimatorGroup set = new AnimatorGroup();
mTarget.setTranslationX(0);
mTarget.setTranslationY(0);
// Числовая анимация
AnimatorValue animator = new AnimatorValue();
animator.setDuration(mDuration);
BaseEasingMethod easing = skill.getMethod(mDuration);
// Рисование начальной точки
mHistory.drawPoint(0, mDuration, 0 - vpToPixels(getContext(), 60));
set.runSerially(
Glider.glide(skill, mDuration, animator,new AnimatorValue.ValueUpdateListener() {
@Override
public void onUpdate(AnimatorValue animatorValue, float value) {
float start = 0;
float end = -vpToPixels(getContext(), 157) ;
float result = easing.evaluate(value, start, end);
mTarget.setTranslationY(result);
mHistory.drawPoint(mDuration * value, mDuration, result - vpToPixels(getContext(), 60));
}
}));
set.setDuration(mDuration);
set.start();
}
});
/**
* Установить анимацию
*
* @param skill Тип анимации
* @param duration Продолжительность
* @param animator Числовая анимация
* @param valueUpdateListener Анимационный прослушиватель
* @return Объект анимации
*/
public static AnimatorValue glide(
Skill skill,
float duration,
AnimatorValue animator,
AnimatorValue.ValueUpdateListener valueUpdateListener)
/**
* Установить анимацию
*
* @param skill Тип анимации
* @param duration Продолжительность
* @param animator Числовая анимация
* @return Объект анимации
*/
public static AnimatorValue glide(
Skill skill,
float duration,
AnimatorValue animator)
/**
* Управлять выражением анимации
*
* @param duration Продолжительность
* @return BaseEasingMethod
*/
public BaseEasingMethod getMethod(float duration)
/**
* Получить результат анимации
*
* @param fraction Степень завершения анимации
* @param startValue Начальное положение анимации
* @param endValue Конечное положение анимации
* @return Результат анимации
``` ```
public final float evaluate(float fraction, Float startValue, Float endValue)
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )