1

Androidでactcityをフェードさせる方法は?次のコードを使用しましたが、何も起こりません

public class MetroActivity extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);
        setContentView(R.layout.metro_splash);
        getWindow().setWindowAnimations(R.anim.intro_anim);
        Runnable r= new Runnable() {

            @Override
            public void run() {
                Intent i = new Intent(getApplicationContext(),MainActivity.class);
                startActivity(i);

            }
        };
        Handler h = new Handler();
        h.postDelayed(r, 3000);


    }
}

アニメーション xml:

<?xml version="1.0" encoding="utf-8"?>
<alpha xmlns:android="http://schemas.android.com/apk/res/android"
    android:duration="100"
    android:fromAlpha="0.0"
    android:interpolator="@android:anim/accelerate_interpolator"
    android:toAlpha="1.0" />
4

1 に答える 1

4

このコードを使用して、2 つのアクティビティ間でスムーズなフェードを行います。

res/anim 内の fadein.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="100" />

res/anim 内の fadeout.xml

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

Activity MainActivity の onCreate メソッドに以下を入れます。setContentView が機能する前に。

overridePendingTransition(R.anim.fadein, R.anim.fadeout);

注 : Android2.o 以降を使用している場合は、overridePendingTransition が動作します

編集:

または、このコードを MainActivity に入れてから試してください

 @Override
    public void onCreate(Bundle savedInstanceState){
    super.onCreate(savedInstanceState);
    setContentView(R.layout.metro_splash);
    getWindow().setWindowAnimations(R.anim.intro_anim);
    Animation anim = AnimationUtils.loadAnimation(this,R.anim.animation);
    // 'body' is root layout id  which is for MainActivity
    findViewById(R.id.body).startAnimation(anim);
    }
于 2012-05-12T20:01:14.053 に答える