Android,在屏幕上看到视图时播放声音

Android,在屏幕上看到视图时播放声音,android,image,audio,Android,Image,Audio,我在安卓系统中的音频有问题。这里是交易,我有一个非常简单的启动屏幕。我的意图是一旦屏幕加载,它将播放一个非常小的音频文件 问题是,很多时候,音频会在启动屏幕实际出现之前播放 是否有一种通过编程方式验证屏幕是否已加载的方法?我不想添加不必要的计时器,以确保声音在加载之前不会播放。我希望声音在屏幕出现的准确时刻播放 以下是我的xml文件中的一个片段: <ImageView android:src="@drawable/splash" android:layout_width="match_pa

我在安卓系统中的音频有问题。这里是交易,我有一个非常简单的启动屏幕。我的意图是一旦屏幕加载,它将播放一个非常小的音频文件

问题是,很多时候,音频会在启动屏幕实际出现之前播放

是否有一种通过编程方式验证屏幕是否已加载的方法?我不想添加不必要的计时器,以确保声音在加载之前不会播放。我希望声音在屏幕出现的准确时刻播放

以下是我的xml文件中的一个片段:

<ImageView
android:src="@drawable/splash"
android:layout_width="match_parent"
android:layout_height="match_parent"
/>

提前感谢您的帮助

你不是唯一一个有类似问题的人:))有几种方法可以做到这一点,最流行的方法是实现OnGlobalLayoutListener(),例如:

    View yourView = ...;
                yourView.getViewTreeObserver().addOnGlobalLayoutListener(
                    new ViewTreeObserver.OnGlobalLayoutListener() 
                    {
                        // -----------------------------------------
                        //
                        // Callback method to be invoked when the 
                        // global layout state or the visibility 
                        // of views within the view tree changes 
                        //
                        // -----------------------------------------            
                        @Override
                        public void onGlobalLayout() 
                        {

                                        // Remove view
                            View yourView = findViewById( R.id.yourId );

                            if ( yourView != null )
                            {
                                yourView .getViewTreeObserver().removeGlobalOnLayoutListener(this);

                            }
// PLAY SOUND
                        }
                    });

彼得

哇,太快了。非常感谢你。我将关注这项决议。谢谢你的时间!
    View yourView = ...;
                yourView.getViewTreeObserver().addOnGlobalLayoutListener(
                    new ViewTreeObserver.OnGlobalLayoutListener() 
                    {
                        // -----------------------------------------
                        //
                        // Callback method to be invoked when the 
                        // global layout state or the visibility 
                        // of views within the view tree changes 
                        //
                        // -----------------------------------------            
                        @Override
                        public void onGlobalLayout() 
                        {

                                        // Remove view
                            View yourView = findViewById( R.id.yourId );

                            if ( yourView != null )
                            {
                                yourView .getViewTreeObserver().removeGlobalOnLayoutListener(this);

                            }
// PLAY SOUND
                        }
                    });