2017-08-27 9 views
0

私はアンドロイドスタジオでアンドロイド用のアプリを開発し始めましたが、少しのジレンマがあります。アプリケーションで使用するXMLアニメーションをいくつか作成しました。そのうちの1つに次のコードがあります:アンドロイド:startOffsetなしアニメーション遅延を作成しますか?

<?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アニメーションを取得しているしたい方法を実行します問題。

本当にありがとうございます。

答えて

0

android:startOffsetはすべてのアニメーションの繰り返しに適用され、アニメーションの繰り返しはすべて15秒の遅延で適用されます。代わりにアンドロイドを使用する:そのアニメーションの後に15秒が1秒ごとに繰り返すことになります後startOffsetは、私たちはアニメーションを開始します。

言及したコードの下にしてみてください。

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); 
    } 
} 

anim.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> 
関連する問題