gpt4 book ai didi

java - Android:在没有 startOffset 的情况下创建动画延迟?

转载 作者:行者123 更新时间:2023-11-30 00:23:12 27 4
gpt4 key购买 nike

所以我刚开始在 android studio 中为 android 开发一个应用程序,但有点进退两难,我创建了一些 XML 动画以在我的应用程序中使用,其中一个具有以下代码:

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<alpha
android:fromAlpha="0.0"
android:toAlpha="1.0"
android:duration="1000"
android:startOffset="15000"
android:repeatMode="reverse"
android:repeatCount="infinite"
/>
</set>

此 XML 动画 (swipetext_animation_flash) 正在 TextView (SwipeText) 上使用,应该在开始前等待 15 秒,然后无限淡入淡出,但它并没有这样做。

相反,它等待 15 秒,淡入屏幕,然后等待比 1 秒长得多的时间淡出。我认为这是因为 startOffset 属性,但我无法删除它,因为我不确定还有哪些其他方式可以延迟动画。

这是相应java文件中的代码:

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.widget.ImageView;
import android.widget.TextView;

public class Loading_Menu extends AppCompatActivity {

public Animation animation;
public ImageView Logo;
public TextView Heading, SubHeading, SwipeText;

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

Logo = (ImageView) findViewById(R.id.Logo);
animation = AnimationUtils.loadAnimation(getApplicationContext(), R.anim.logo_animation_in);
Logo.startAnimation(animation);

Heading = (TextView) findViewById(R.id.Heading);
animation = AnimationUtils.loadAnimation(getApplicationContext(), R.anim.introheader_animation_in);
Heading.startAnimation(animation);

SubHeading = (TextView) findViewById(R.id.SubHeading);
animation = AnimationUtils.loadAnimation(getApplicationContext(), R.anim.subheaderintro_animation_in);
SubHeading.startAnimation(animation);

SwipeText = (TextView) findViewById(R.id.SwipeText);
animation = AnimationUtils.loadAnimation(getApplicationContext(), R.anim.swipetext_animation_flash);
SwipeText.startAnimation(animation);

}
}

这个类按照我想要的方式运行,但是它只是让 SwipeText 动画按照我想要的方式运行,这就是问题所在。

任何帮助将不胜感激。

最佳答案

android:startOffset 将应用于每个动画重复,每个动画重复延迟 15 秒。我们将在 15 秒后开始动画,而不是使用 android:startOffset,动画将每 1 秒重复一次。

请尝试下面提到的代码。

public class AnimActivity extends AppCompatActivity {
private Animation mAnimation;
private ImageView mLogo;
private TextView mHeading;

@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_anim);
mAnimation = AnimationUtils.loadAnimation(getApplicationContext(), R.anim.anim);
mLogo = findViewById(R.id.logo);
mHeading = findViewById(R.id.heading);
startAnim();
}

private void startAnim() {
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
mLogo.startAnimation(mAnimation);
mHeading.startAnimation(mAnimation);
}
}, 15000);
}
}

动画.xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<alpha
android:duration="1000"
android:fromAlpha="0.0"
android:repeatCount="infinite"
android:repeatMode="reverse"
android:toAlpha="1.0" />
</set>

关于java - Android:在没有 startOffset 的情况下创建动画延迟?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45900688/

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