gpt4 book ai didi

android - android中不流畅,滞后的动画

转载 作者:行者123 更新时间:2023-11-30 03:21:17 27 4
gpt4 key购买 nike

我在我的游戏 Activity 中使用了动画,用户可以看到他的分数以星星的形式显示(最高分数为 3 星)。我在每个星星上都使用了动画(使用 startAnimation() 方法)。金色的星星被放置在空白的灰色星星上,带有平移、缩放和 alpha 动画(我使用了设置动画)。但是,每当该分数 Activity 开始时,动画就会显示出抖动/滞后/不平滑。什么是使动画流畅及时的解决方案

以下是显示 3 星(满分 3 星)的 java 代码

protected void onCreate(Bundle savedInstanceState) 
{
............
Myanim1 = AnimationUtils.loadAnimation(getApplicationContext(), R.anim.alpha_scale_left);
Myanim2= AnimationUtils.loadAnimation(getApplicationContext(), R.anim.aplha_scale_mid);
Myanim3= AnimationUtils.loadAnimation(getApplicationContext(), R.anim.alpha_scale_right);
......}

if(pattern_Score>targetScore*90/100)
{
mCountDownTimer = new CountDownTimer(1000,100) {

@Override
public void onTick(long millisUntilFinished) {
starIv1.setImageResource(R.drawable.star_gray);
}

@Override
public void onFinish() {
starIv1.startAnimation(Myanim1);
starIv1.setImageResource(R.drawable.star);
Toast.makeText(getApplicationContext(), "timer1 stopped", Toast.LENGTH_SHORT).show();
}
};
mCountDownTimer.start();
starIv1.clearAnimation();


mCountDownTimer1=new CountDownTimer(2000,100) {

@Override
public void onTick(long millisUntilFinished) {
starIv2.setImageResource(R.drawable.star_gray);
}

@Override
public void onFinish() {
//starIv2.clearAnimation();
starIv2.startAnimation(Myanim2);
starIv2.setImageResource(R.drawable.star);
}
};
mCountDownTimer1.start();
starIv2.clearAnimation();

mCountDownTimer2=new CountDownTimer(3000,100) {

@Override
public void onTick(long millisUntilFinished) {
starIv3.setImageResource(R.drawable.star_gray);
}

@Override
public void onFinish() {
//starIv3.clearAnimation();
starIv3.startAnimation(Myanim3);
starIv3.setImageResource(R.drawable.star);
}
};
mCountDownTimer2.start();
starIv3.clearAnimation();....}

alpha_scale_left.xml(左星动画)

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">

<translate android:fromYDelta="-100%"
android:fromXDelta="-20%"
android:toYDelta="0"
android:toXDelta="0"
android:duration="600"/>
<scale
android:fromXScale="3000%"
android:fromYScale="3000%"
android:toXScale="1"
android:toYScale="1"
android:pivotX="50%"
android:pivotY="50%"
android:duration="900"
/>
<alpha android:fromAlpha="0.0" android:toAlpha="1.0" android:duration="600" />


</set>

alpha_scale_mid.xml(中星动画)

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">

<translate android:fromYDelta="-100%"
android:fromXDelta="-5%"
android:toYDelta="0"
android:toXDelta="0"
android:duration="600"/>
<scale
android:fromXScale="3000%"
android:fromYScale="3000%"
android:toXScale="1"
android:toYScale="1"
android:pivotX="50%"
android:pivotY="0%"
android:duration="600"
/>
<alpha android:fromAlpha="0.0" android:toAlpha="1.0" android:duration="600" />

</set>

alpha_scale_right.xml(右星动画)

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate android:fromYDelta="-100%"
android:fromXDelta="5%"
android:toYDelta="0"
android:toXDelta="0"
android:duration="600"/>
<scale
android:fromXScale="3000%"
android:fromYScale="3000%"
android:toXScale="1"
android:toYScale="1"
android:pivotX="50%"
android:pivotY="0%"
android:duration="600"
/>
<alpha android:fromAlpha="0.0" android:toAlpha="1.0" android:duration="600" />

</set>

最佳答案

  • 我不明白你的 xmls3000% 的含义尝试在 ~100% 范围内更改

查看代码,我可以建议您使用一些线程,而不是在主线程上加载所有动画,您应该使用 Asynctask 并且根据一些进展,您可以使用 onprogressupdate 方法来更改 UI 线程。

Graphics and Animations are handled by the GPU or in more common term the Processor of your device. If not rendered properly then it could possibly be the result of a processor with low clock rate.

关于android - android中不流畅,滞后的动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19095308/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com