Как реализовать заставку в андроиде

У меня есть приложение, которое показывает список элементов. Мне нужно отобразить изображение затухания перед началом основного действия. я попробовал что-то вроде этого в onCreate метод основной деятельности я начал одна анимационная деятельность, например

Intent animationIntent=new Intent(this,AnimationActivity.class);
startActivityForResult(AnimationIntent);

в onCreate метод AnimationActivity.class

super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    ImageView introanim = (ImageView) findViewById(R.id.imgView);
    AnimationSet StoryAnimation = (AnimationSet)AnimationUtils.
loadAnimation(this, R.anim.alphanim);
StoryAnimation.setAnimationListener(new AnimationListener() {

        @Override
        public void onAnimationStart(Animation animation) {
            // TODO Auto-generated method stub

        }

        @Override
        public void onAnimationRepeat(Animation animation) {
                AnimationSubActivity.this.finish();

        }

        @Override
        public void onAnimationEnd(Animation animation) {
            AnimationSubActivity.this.finish();
        }
    });

    introanim.clearAnimation();
    introanim.startAnimation(StoryAnimation);

и мой main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<ImageView  
android:id="@+id/imgView"
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
android:src="@drawable/icon"
/>
</LinearLayout>

Проблема с этим подходом заключается в том, что он отображает амитацию, но изображение просматривается некоторое время, а основное действие происходит с эффектом перехода слайдов

но я хочу, чтобы изображение исчезло, и моя активность исчезла в

любая помощь будет оценена. Спасибо заранее

Ответы

Ответ 1

В принципе, вы ищете экран Splash, который показывает ваше изображение, а затем исчезает. Экран основного действия затем исчезает. Таким образом, вы можете создать активность для экрана Splash, а затем еще один для основного действия, которое вы, возможно, захотите вызвать. Это будет ваша активность Splash Screen.

public class SplashScreen extends Activity {
private static final int SPLASH_DISPLAY_TIME = 4000; // splash screen delay time

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

    new Handler().postDelayed(new Runnable() {
        public void run() {

            Intent intent = new Intent();
            intent.setClass(Splash.this, NextActivity.class);

            Splash.this.startActivity(intent);
            Splash.this.finish();

            // transition from splash to main menu
            overridePendingTransition(R.animate.activityfadein,
                    R.animate.splashfadeout);

        }
    }, SPLASH_DISPLAY_TIME);
}

NextActivity - это любое действие, которое вы хотите затухать и занять его место. Для анимаций вам нужно будет создать два файла xml в папке с именем animimate в ваших ресурсах. Вот файл splashfadeout.xml

<alpha xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/decelerate_interpolator"
android:zAdjustment="top" android:fromAlpha="1.0" android:toAlpha="0.0"
android:duration="4000" />

Это будет файл activityfadein.xml

<alpha xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/accelerate_interpolator"
android:fromAlpha="0.0" android:toAlpha="1.0" android:duration="2000" />

Эти файлы в основном заставляют ваши действия исчезать и выходить

Ответ 2

"Экран всплеска", подобный тому, который предлагает один из них, - это не настоящий. Это действительно просто "полноэкранный коммюник", на который никто не хочет тратить свое время. Он не имеет никакой цели, кроме как быть там, то есть он не маскирует длительное время загрузки или что-то в этом регионе, как настоящий экран всплеска.

Если вы хотите показать заставку, это должно быть потому, что у вас есть начальная активность, которая занимает довольно много времени для загрузки - тогда экран всплеска может быть оправдан, чтобы показать, что пользователь загружает вещи, или убедить его, что приложение не "умерло".

Ознакомьтесь с этим руководством по созданию реального заставки.