Android:向YouTubePlayerView添加按钮

4
我想在YouTubePlayerView上添加一个按钮,但不知道最好的方法。我希望这个按钮仅在用户点击屏幕以打开YouTube控件(播放/暂停、时间线、分享等)时出现,并在几秒钟后与控件一起消失。我研究了ViewGroupOverlay,但不确定这是否是最佳方法,也不知道如何只在控件可用时将按钮添加到叠加层中。感觉我必须重写其中一个YouTubePlayerYouTubePlayerView函数来知道控件何时可见,但我只是在这里提出了一个假设。我对Android相对较新,而且已经有一段时间没有在Java中做过任何严肃的事情了。如果其他人不知道确切的答案,任何方向都很好。在发布此内容之前,我已经搜索了大约2个小时 :)
package com.example.something.exampletube;

import android.os.Bundle;
import android.view.ViewGroupOverlay;
import android.widget.Toast;

import com.google.android.youtube.player.YouTubeBaseActivity;
import com.google.android.youtube.player.YouTubeInitializationResult;
import com.google.android.youtube.player.YouTubePlayer;
import com.google.android.youtube.player.YouTubePlayerView;

/**
 * Created by Nicholas Dwyer on 4/17/2015.
 * This class is used to play youtube videos
 */
public class PlayerActivity extends YouTubeBaseActivity implements YouTubePlayer.OnInitializedListener {
YouTubePlayerView playerView;
ViewGroupOverlay groupOverlay;


@Override
protected void onCreate(Bundle bundle) {
    super.onCreate(bundle);

    setContentView(R.layout.activity_player);

    playerView = (YouTubePlayerView) findViewById(R.id.player_view);
    playerView.initialize(YoutubeConnector.KEY, this);
    groupOverlay = playerView.getOverlay();
}

@Override
public void onInitializationSuccess(YouTubePlayer.Provider provider, YouTubePlayer youTubePlayer, boolean restored) {
    if(!restored) {
        youTubePlayer.cueVideo(getIntent().getStringExtra("VIDEO_ID"));
    }
}

@Override
public void onInitializationFailure(YouTubePlayer.Provider provider, YouTubeInitializationResult youTubeInitializationResult) {
    String errorMessage = "There was an error initializing the YouTubePlayer" + youTubeInitializationResult.toString();
    Toast.makeText(this, errorMessage, Toast.LENGTH_LONG).show();
    //Toast.makeText(this,getString(R.string.failed), Toast.LENGTH_LONG).show();
}

}

3个回答

3
无法按照Google的规定在播放器上方添加覆盖按钮:
请参阅https://developers.google.com/youtube/android/player/reference/com/google/android/youtube/player/YouTubePlayerView 请注意,当视频播放时,此视图具有最小大小为200x110 dp。如果将视图缩小,则视频将自动停止播放。此外,在视频播放时不允许将视图与其他视图叠加。
请参阅Is it possible to overlay some views on YouTube Android Player? 如果任何视图仅部分重叠(或YouTubeVideoView仅部分滚动到可见屏幕之外),则视频将在大约一秒钟后停止播放。 Google据说是为了防止在YouTube之外滥用视频进行广告宣传。
替代方法:使用WebView并嵌入它。

0

0

不要将按钮添加为位于播放器上方的图层,而是可以将其添加到播放器内部:

  Button b = new Button(this);
  b.setBackgroundResource(R.drawable.close);
  ((ViewGroup)((ViewGroup) youTubePlayerView.getChildAt(0)).getChildAt(0)).addView(b);
  b.setOnClickListener(new View.OnClickListener() {
      @Override
      public void onClick(View v) {
          onBackPressed();
      }
  });

对我来说工作正常。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接