Проблема с исчезновением - Android-анимация - PullRequest
0 голосов
/ 03 ноября 2011

Я работаю над своим первым проектом Android, и я начинаю с создания простого заставки, которая становится черной до того, как открывается главное меню. Пока это работает. Проблема заключается в том, что изображение исчезает сразу после того, как оно показывается в главном меню на долю секунды.

Вот код для SplashActivity.java:

public class SplashActivity extends Activity
{   
LinearLayout mLinearLayout;

 @Override
 public void onCreate(Bundle savedInstanceState) 
 {
     super.onCreate(savedInstanceState);
     setContentView(R.layout.splash);

     mLinearLayout = new LinearLayout(this);


     ImageView i = new ImageView(this);
     i.setImageResource(R.drawable.splash);
     mLinearLayout.addView(i);
     setContentView(mLinearLayout);

     Animation fade = AnimationUtils.loadAnimation(this, R.anim.fade_out);
     i.startAnimation(fade);

     fade.setAnimationListener(new AnimationListener() {
         public void onAnimationEnd(Animation animation) 
         {
             startActivity(new Intent(SplashActivity.this, MenuActivity.class));
             SplashActivity.this.finish(); 
         }

         public void onAnimationRepeat(Animation arg0) {            
         }

         public void onAnimationStart(Animation arg0) {
         }
     });
 }
}

Вот код для splash.xml:

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout
 xmlns:android = "http://schemas.android.com/apk/res/android"
 android:orientation = "vertical"
 android:layout_width = "match_parent"
 android:layout_height = "match_parent"
 android:background = "#000">   
</LinearLayout>

Наконец, вот xml для затухания:

<set android:shareInterpolator="false" xmlns:android="http://schemas.android.com/apk/res/android">
  <alpha
    android:fromAlpha="1.0"
    android:toAlpha="0.0"
    android:duration="500"
    android:startOffset="2500">
  </alpha>
</set>

Пара замечаний: Прямо сейчас заставка только для показа (то есть я знаю, что сейчас она не служит никакой реальной цели). Я могу вставить AndroidManifest xml или что-то еще, что, по вашему мнению, может понадобиться.

Любая помощь приветствуется. Спасибо!

Ответы [ 2 ]

3 голосов
/ 03 ноября 2011

Анимация заканчивается, затем она возвращается к тому, что было ранее. Android-анимация сбивает с толку, но представьте, что вы видите, это мираж. Ничего в представлении, которое вы анимируете, на самом деле не меняется. Когда все закончится, оно вернется к тому, что было.

В качестве примера создайте кнопку 100dp x 100dp, и анимация при масштабировании будет небольшой или вращающейся. Очень медленно. По мере запуска, если вы нажмете на области, которые выглядят пустыми, кнопка все равно будет регистрировать попадание. Это потому, что он все еще "там", но вы его не видите.

Что вам нужно сделать, это установить видимость изображения в слушателе анимации:

public void onAnimationEnd(Animation animation) 
     {
         startActivity(new Intent(SplashActivity.this, MenuActivity.class));
         SplashActivity.this.finish(); 
         i.setVisibility(View.INVISIBLE);
     }

Вы можете сделать это в OnAnimationStart. Эксперимент.

Я сделал презентацию по этому вопросу некоторое время назад. Может быть полезно:

https://docs.google.com/present/view?id=djqv5kb_187c62jvbf7

2 голосов
/ 03 ноября 2011

Это помогло бы.

 public void onAnimationEnd(Animation animation) 
         {
             i.setVisibility(View.INVISIBLE);
             startActivity(new Intent(SplashActivity.this, MenuActivity.class));
             SplashActivity.this.finish(); 
         }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...