首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何动画TextureView?

如何动画TextureView?
EN

Stack Overflow用户
提问于 2016-05-11 13:53:38
回答 1查看 1.2K关注 0票数 1

我试图淡出一个TextureView,但出于某种原因,它没有动画。它只是简单地弹出在视频中,一点也不褪色,我真的不知道为什么,因为经过一些研究,我发现TextureView可以正常地动画。

这是我的代码,希望你们能给我一个指向正确方向的指针。

PS,我忽略了所有与文本评论和动画无关的代码。

代码语言:javascript
运行
复制
public class MainActivity extends AppCompatActivity implements MediaPlayer.OnPreparedListener, MediaPlayer.OnCompletionListener
{
    private static final String TAG = MainActivity.class.getSimpleName();

    private MediaPlayer mediaPlayer1;
    private ArrayList<Uri> videoUris = new ArrayList<>();
    private int current_video_index = 0;

    private TextureView textureView;

    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        textureView = (TextureView) findViewById(R.id.textureView);

        mediaPlayer1 = new MediaPlayer();
        mediaPlayer1.setAudioStreamType(AudioManager.STREAM_MUSIC);
        mediaPlayer1.setOnPreparedListener(this);
        mediaPlayer1.setOnCompletionListener(this);

        initVideoUris();
        initNewVideo();
    }

    private void startVideo(final Uri uri)
    {
        textureView.setSurfaceTextureListener(new TextureView.SurfaceTextureListener()
        {
            @Override
            public void onSurfaceTextureAvailable(SurfaceTexture surface, int width, int height)
            {
                try {
                    mediaPlayer1.setDataSource(MainActivity.this, uri);
                    mediaPlayer1.setSurface(new Surface(surface));
                    mediaPlayer1.setOnCompletionListener(MainActivity.this);
                    mediaPlayer1.setOnPreparedListener(MainActivity.this);
                    mediaPlayer1.setAudioStreamType(AudioManager.STREAM_MUSIC);

                    mediaPlayer1.prepareAsync();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }

            @Override
            public void onSurfaceTextureSizeChanged(SurfaceTexture surface, int width, int height)
            {

            }

            @Override
            public boolean onSurfaceTextureDestroyed(SurfaceTexture surface)
            {
                return false;
            }

            @Override
            public void onSurfaceTextureUpdated(SurfaceTexture surface)
            {

            }
        });
    }

    @Override
    public void onPrepared(MediaPlayer mp)
    {
        mp.start();
        fadeInView(textureView);
    }

    @Override
    public void onCompletion(MediaPlayer mp)
    {
        if (!moreVideosAvailable())
        {
            finish();
        }
    }

    private boolean moreVideosAvailable()
    {
        return current_video_index < videoUris.size();
    }

    private void fadeInView(View view)
    {
        view.setAlpha(0f);
        view.setVisibility(View.VISIBLE);
        view.animate().alpha(1f).setDuration(2000).setListener(null).start();
    }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-06-01 13:21:51

我通过制作一个videoPlayerFragment来解决这个问题,它使用TextureView作为显示视频的表面。然后简单地动画整个片段,而不是textureView。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37164790

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档