0

問題があります。スプラッシュ画面でデバイスを横向きから縦向きまたは逆向きにすると。スプラッシュ後にメイン メニューが 2 回実行され、メイン メニューが 2 つあるため、1 つを強制的に閉じました。この問題を解決するにはどうすればよいですか?

package tr.gov.egm.mobil;

import java.io.IOException;

import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.content.res.Configuration;
import android.graphics.PixelFormat;
import android.graphics.drawable.Drawable;
import android.media.MediaPlayer;
import android.net.Uri;
import android.os.Bundle;
import android.view.Window;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.webkit.WebView;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.MediaController;
import android.widget.VideoView;


public class SplashActivity extends Activity{
 public void onAttachedToWindow() {
        super.onAttachedToWindow();
        Window window = getWindow();
        window.setFormat(PixelFormat.RGBA_8888);
    }
 private void StartAnimations() {
 Animation anim = AnimationUtils.loadAnimation(this, R.anim.push_left_in);
 anim.reset();
 LinearLayout l=(LinearLayout) findViewById(R.id.lin_lay);
 l.clearAnimation();
 l.startAnimation(anim);

 anim = AnimationUtils.loadAnimation(this, R.anim.alpha);
 anim.reset();
 ImageView iv = (ImageView) findViewById(R.id.logo);
 iv.clearAnimation();
 iv.startAnimation(anim);



 }
@SuppressWarnings("deprecation")
@Override
public void onCreate(Bundle savedInstanceState)  {

    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_splash);
    ImageView iv = (ImageView) findViewById(R.id.logo);
    if(isTablet(this)==true)
    {
        if(this.getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT) 
        {
            iv.setImageResource(R.drawable.splashtel);
        } else {
            iv.setImageResource(R.drawable.splashtablet);
        }
    }
    else
    {
        if(this.getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT) 
        {
            iv.setImageResource(R.drawable.splashtel);
        } else {
            iv.setImageResource(R.drawable.splashtablet);
        }
    }
    StartAnimations();

    Thread iplik = new Thread()
        {                
            public void run() {
                try {


                    sleep(4000);
                    Intent in = new Intent(
                            getApplicationContext(), MainMenuActivity.class);
                    startActivity(in);


                // Bu fonksiyon ile bir intent* tanımlanarak 2.ekran olan main.xml çağrılıyor

                } catch (InterruptedException e) {

                    e.printStackTrace();

                }  

                finally{

                    finish();

                }      

    }
        };

         iplik.start();  


}

public void onCompletion(MediaPlayer mp)
{
    Intent intent = new Intent(this, MainMenuActivity.class);
    startActivity(intent);
    finish();
}
public boolean isTablet(Context context) {
    boolean xlarge = ((context.getResources().getConfiguration().screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK) == 4);
    boolean large = ((context.getResources().getConfiguration().screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK) == Configuration.SCREENLAYOUT_SIZE_LARGE);
    return (xlarge || large);
}

}
4

1 に答える 1

0

onConfigurationChanged(Bundle savedInstance)メソッドをオーバーライドして、要件に応じて処理するだけです。

于 2013-07-12T19:50:22.587 に答える