首页 > 解决方案 > 活动之间的淡入淡出

问题描述

我有一个内置在 android studio 中的应用程序,我在放置在纹理中的不同视频之间淡入淡出。我成功创建了淡入淡出,但它从视频淡入白色,而不是淡入新视频的下一个纹理

这是我的淡入淡出代码:淡入:

<?xml version="1.0" encoding="utf-8"?>
<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:fillAfter="true"
    android:duration="2000" />

消退:

<?xml version="1.0" encoding="utf-8"?>
<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:fillAfter="true"
    android:duration="2000" />

我在我的主要活动中实现它,如下所示:

view1.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        if (mediaPlayer != null) {
            mediaPlayer.stop();
            mediaPlayer.release();
            mediaPlayer = null;
        }

        Intent startIntent = new Intent(getApplicationContext(), FirstVideoActivity.class);
        startActivity(startIntent);
        overridePendingTransition(R.anim.fade_in, R.anim.fade_out);

    }
});

就像现在一样,它首先淡化为白色,然后显示 firstvideoActivity。我怎样才能让它在不同的视频之间淡化而不先变成白色

更新

这是我更改为的其他活动:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_first);
    Log.d("oncreateee","I");
    overridePendingTransition(R.anim.fade_in, R.anim.fade_out);

    myTexture = findViewById(R.id.textureBackground);
    myTexture.setSurfaceTextureListener(this);

    myTexture.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            if (mediaPlayer != null) {
                mediaPlayer.stop();
                mediaPlayer.release();
                mediaPlayer = null;
            }

            Intent startIntent = new Intent(getApplicationContext(), MainActivity.class);
            startActivity(startIntent);
            overridePendingTransition(R.anim.fade_in, R.anim.fade_out);

        }
    });
}

@Override
public void onSurfaceTextureAvailable(SurfaceTexture surfaceTexture, int width, int height) {
    Surface surface = new Surface(surfaceTexture);
    mediaPlayer = MediaPlayer.create(this, R.raw.test1);

    mediaPlayer.setLooping(true);
    mediaPlayer.setSurface(surface);
    mediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
        @Override
        public void onPrepared(MediaPlayer mp) {
            mediaPlayer.start();
        }
    });
}

更新 2: 好的,我现在注意到这是 kitkat 中的一个错误(这次需要为那个旧系统开发)是否有其他方法可以创建适用于 kitkat 的过渡?

标签: androidtexturesandroid-animation

解决方案


推荐阅读