Android "Weiches wechseln" zwischen Views in einer Activity

Stroker89

Bekanntes Mitglied
Hallo,

ich habe zwei RelativeLayouts in einer Activity. Eine "Loading"-View und eine View um Daten anzuzeigen.

gewechselt wird zwischen den Views so:

Java:
private void showLoadingView(){
    	loading_view.setVisibility(View.VISIBLE);
    	start_view.setVisibility(View.INVISIBLE);
    }
    
    private void showStartView(){
    	loading_view.setVisibility(View.INVISIBLE);    	
    	start_view.setVisibility(View.VISIBLE);
    }

Das Problem ist jetzt nur, dass das Ganze recht "steif und starr" aussieht.

Versucht hab ich es schon mit einer Animation.

Java:
Animation anim = AnimationUtils.loadAnimation(
                Activity_Start.this, android.R.anim.fade_out);
        anim.setDuration(100);

Java:
private void showStartView(){
    	loading_view.setVisibility(View.INVISIBLE);
    	loading_view.startAnimation(anim);
    	
    	start_view.setVisibility(View.VISIBLE);
    }

Das bewirkt allerdings nur, dass die "Loading"-View länger angezeigt wird.

Ich würde es gerne so haben, dass der "Loading"-View verschwindet, dann eine ganz kurze Pause ist und dann die "Daten"-View langsam "reingefadet" wird.

Wie kann das bewerkstelligen?

Gruß
 
Ok ich hab mir jetzt zwei XML Dateien erstellt. Einmal für den FadeIn einmal für den FadeOut.

FadeOut:

[XML]<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/linear_interpolator">
<alpha
android:fromAlpha="1.0"
android:toAlpha="0.1"
android:interpolator="@android:anim/accelerate_interpolator"
android:duration="100"
/>
</set>[/XML]

FadeIn:

[XML]<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/linear_interpolator">
<alpha
android:fromAlpha="0.1"
android:toAlpha="1.0"
android:interpolator="@android:anim/accelerate_interpolator"
android:duration="100"
/>
</set>[/XML]

Mein Code dazu:

Java:
fadeout = AnimationUtils.loadAnimation(this, R.anim.fadeout);
fadein= AnimationUtils.loadAnimation(this, R.anim.fadein);

Java:
fadeout.setAnimationListener(new AnimationListener(){

			@Override
			public void onAnimationEnd(Animation arg0) {
		    	start_view.setVisibility(View.VISIBLE);
		    	start_view.startAnimation(fadein);
			}

			@Override
			public void onAnimationRepeat(Animation arg0) {
				// TODO Auto-generated method stub
				
			}

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

Java:
private void showStartView(){
    	loading_view.setVisibility(View.INVISIBLE);
    	loading_view.startAnimation(fadeout);
    }

Also die FadeOut Animation klappt super. Wenn diese fertig ist, erscheint aber SOFORT die andere View ohne eine Animation, was ich aber leider gar nicht nachvollziehen kann. Mach ich hier etwas falsch?

Gruß
 

Zurück
Oben