我在Android中遇到音频问题。这是交易,我有一个非常简单的启动画面。我的意图是,一旦屏幕加载,它将播放一个非常小的音频文件。
问题在于,很多时候,音频将在启动画面实际出现之前播放。
有没有办法以编程方式验证屏幕是否已加载?我不想添加一个不必要的计时器,以确保声音在加载前不播放。我希望在屏幕出现的那一刻播放声音。
以下是我的xml文件中的代码段:
<ImageView
android:src="@drawable/splash"
android:layout_width="match_parent"
android:layout_height="match_parent"
/>
splash是一个.png图片
这是onCreate代码: @覆盖 protected void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); 的setContentView(R.layout.scarysplash);
mpPlaySound = MediaPlayer.create(this, R.raw.scream1);
mpPlaySound.start();
}
}
提前感谢您的帮助!
答案 0 :(得分:2)
你不是唯一一个有类似问题的人:))有几种方法可以做到这一点,流行的方法是实现 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
}
});
彼得