我正在使用包含标题布局的视频视图。我在视频视图中附加了标题布局。我的问题是,当我触摸视频视图时,应该显示标题layou和mediacontolls,一段时间之后(标题layou和媒体控制)应该消失。只要媒体控制人员显示出应该显示的标题,那么每当媒体控制人员消失时,标题就会消失。
XML CODE
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_gravity="center"
android:background="#000">
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="match_parent">
<VideoView
android:id="@+id/playerview"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_alignParentLeft="true"
android:layout_alignParentRight="true"
android:layout_centerInParent="true"
android:layout_gravity="center_vertical" />
<LinearLayout
android:id="@+id/share_layout"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@android:color/transparent"
android:padding="10dp"
android:layout_alignParentBottom="true"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true"
android:layout_marginBottom="80dp"
android:orientation="horizontal">
<ImageButton
android:id="@+id/twitter_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/twitter"
android:paddingTop="20dp"
android:paddingRight="10dp"
android:background="@android:color/transparent" />
<ImageButton
android:id="@+id/facebook_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/facebook"
android:paddingRight="10dp"
android:layout_below="@+id/twitter_button"
android:background="@android:color/transparent"
android:paddingTop="20dp"/>
<ImageButton
android:visibility="gone"
android:id="@+id/share_Button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/share_icon"
android:background="@android:color/transparent"
android:paddingTop="20dp"
android:layout_below="@+id/facebook_button"/>
</LinearLayout>
</RelativeLayout>
<RelativeLayout
android:id="@+id/header_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#BF000000"
android:padding="10dp">
<ImageButton
android:id="@+id/imageBtnclose"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/close_button"
android:background="@android:color/transparent" />
<TextView
android:id="@+id/videoTitletv"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center_vertical"
android:text="video title"
android:textColor="#ffffff"
android:paddingLeft="10dp"
android:layout_centerVertical="true"
android:layout_toRightOf="@+id/imageBtnclose"
android:layout_toEndOf="@+id/imageBtnclose" />
</RelativeLayout>
JAVA CODE
public class VideoAdPlayer extends Activity {
// private boolean vbBackkeyPressed = false;
private VideoView myVideoView;
private RelativeLayout myLinearClose;
LinearLayout shareLayout;
private ProgressDialog progressDialog;
private MediaController mediaControls;
private int adshowTime = 30;
Timer mTimer = new Timer();
boolean MidrollPlayed = false;
YuMeInterface yumeInterface;
ImageButton imgCloseBtn;
boolean isPortrait = true;
ImageButton faceBookButton, twitterButton, shareButton;
public static VideoAdPlayer playerActivity = null;
public static Context playerContext = null;
public static int playedAdType = 1;
public static boolean isActivityrun = false;
boolean isPrerollAds;
boolean isPostrollAds;
boolean isMidrollAds;
boolean isShareClicked = false;
@SuppressLint("ClickableViewAccessibility")
@SuppressWarnings("deprecation")
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
String myString = android.os.Build.VERSION.RELEASE;
System.out.println(myString);
setContentView(R.layout.video);
Intent intent = getIntent();
String playVideoUrl = "";
String videoThumb = "";
getActionBar().hide();
playerActivity = this;
playerContext = this.getApplicationContext();
myLinearClose = (RelativeLayout) findViewById(R.id.header_layout);
shareLayout = (LinearLayout) findViewById(R.id.share_layout);
TextView videoTxtview = (TextView)findViewById(R.id.videoTitletv);
faceBookButton = (ImageButton) findViewById(R.id.facebook_button);
twitterButton = (ImageButton) findViewById(R.id.twitter_button);
shareButton = (ImageButton) findViewById(R.id.share_Button);
shareLayout.setOrientation(LinearLayout.HORIZONTAL);
videoTxtview.setText("DEFAULT TITLE");
if (mediaControls == null) {
mediaControls = new MediaController(VideoAdPlayer.this);
}
myVideoView = (VideoView) findViewById(R.id.playerview);
imgCloseBtn = (ImageButton) findViewById(R.id.imageBtnclose);
progressDialog = createProgressDialog(VideoAdPlayer.this);
progressDialog.show();
imgCloseBtn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
JSONObject msgPlayer = new JSONObject();
try {
msgPlayer.put("finished", false);
YumeIntegration.callbackContext.success(msgPlayer);
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
finish();
}
});
try {
myVideoView.setVideoURI(Uri.parse(playVideoUrl));
} catch (Exception e) {
Log.e("Error", e.getMessage());
e.printStackTrace();
}
myVideoView.requestFocus();
myVideoView.setZOrderOnTop(false);
playedAdType = 1;
myVideoView.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
// TODO Auto-generated method stub
if (!myLinearClose.isShown()) {
if (!isPortrait) {
myLinearClose.setVisibility(View.VISIBLE);
}
myLinearClose.postDelayed(new Runnable() {
@Override
public void run() {
if (!isPortrait) {
myLinearClose.setVisibility(View.INVISIBLE);
}
}
}, 3000);
} else {
if (myLinearClose.isShown()) {
if (!isPortrait) {
myLinearClose.setVisibility(View.INVISIBLE);
}
}
}
return false;
}
});
myVideoView.setMediaController(mediaControls);
myVideoView.setOnPreparedListener(new OnPreparedListener() {
public void onPrepared(final MediaPlayer mediaPlayer) {
progressDialog.dismiss();
myLinearClose.setVisibility(View.VISIBLE);
int duration = myVideoView.getDuration();
Log.e("total duration", String.valueOf(duration));
final int totalSeconds = duration / 1000;
final int postrollads = totalSeconds - 25;
final int MidrollAdsShows = totalSeconds / 2;
Log.e("total durationin secods", String.valueOf(totalSeconds));
try {
mTimer.scheduleAtFixedRate(new TimerTask() {
@Override
public void run() {
int currentTime = myVideoView.getCurrentPosition() / 1000;
/*
* if (currentTime > postrollads &&
* !postRolladsInit) { postRolladsInit = true; try {
* yumeInterface.updatesSdkParams(3); } catch
* (YuMeException e) { e.printStackTrace(); }
*
* } */
if (currentTime > MidrollAdsShows && !MidrollPlayed) {
adshowTime += 30;
MidrollPlayed = true;
playedAdType = 2;
if (isMidrollAds) {
if (yumeInterface.sdkIsAdAvailable()) {
myVideoView.pause();
final Intent mainIntent = new Intent(VideoAdPlayer.this, AdView.class);
startActivityForResult(mainIntent, 3);
}
}
}
}
}, 0, 2000);
if (!mediaControls.isShowing()) {
mediaControls.show();
Toast.makeText(VideoAdPlayer.this,"YES",Toast.LENGTH_SHORT).show();
}
myLinearClose.setVisibility(View.VISIBLE);
myLinearClose.postDelayed(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
if (!isPortrait){
myLinearClose.setVisibility(View.INVISIBLE);
}
}
}, 3000);
} catch (Exception ex) {
}
}
});
myVideoView.setOnCompletionListener(new OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
mTimer.cancel();
JSONObject msgPlayer = new JSONObject();
try {
msgPlayer.put("finished", true);
YumeIntegration.callbackContext.success(msgPlayer);
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
playedAdType = 3;
// finish();
if (isPostrollAds) {
if (yumeInterface.sdkIsAdAvailable()) {
final Intent mainIntent = new Intent(VideoAdPlayer.this, AdView.class);
startActivityForResult(mainIntent, 3);
} else {
finish();
}
} else {
finish();
}
}
});
public static ProgressDialog createProgressDialog(Context mContext) {
ProgressDialog dialog = new ProgressDialog(mContext);
try {
dialog.show();
} catch (BadTokenException e) {
}
dialog.setCancelable(false);
dialog.getWindow().setBackgroundDrawable(new ColorDrawable(android.graphics.Color.TRANSPARENT));
dialog.setContentView(R.layout.progressdialog);
// dialog.setMessage(Message);
return dialog;
}
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
// check if the request code is same as what is passed here it is 3
if (requestCode == 3) {
myVideoView.requestFocus();
myVideoView.start();
myVideoView.setZOrderOnTop(false);
}
}
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
myLinearClose.setVisibility(View.VISIBLE);
shareLayout.setOrientation(LinearLayout.VERTICAL);
myVideoView.requestFocus();
isPortrait = false;
landscapeMode();
} else if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT) {
shareLayout.setOrientation(LinearLayout.HORIZONTAL);
myVideoView.requestFocus();
isPortrait = true;
myLinearClose.setVisibility(View.VISIBLE);
portraitMode();
}
}
private void portraitMode() {
isPortrait = true;
faceBookButton.setVisibility(View.VISIBLE);
twitterButton.setVisibility(View.VISIBLE);
shareButton.setVisibility(View.VISIBLE);
shareButton.setVisibility(View.GONE);
if (!mediaControls.isShowing()) {
mediaControls.show();
Toast.makeText(VideoAdPlayer.this, "YES", Toast.LENGTH_SHORT).show();
}
myLinearClose.setVisibility(View.VISIBLE);
myLinearClose.postDelayed(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
if (!isPortrait) {
myLinearClose.setVisibility(View.INVISIBLE);
}
}
}, 3000);
}
private void landscapeMode() {
isPortrait = false;
if (!mediaControls.isShowing()) {
mediaControls.show();
Toast.makeText(VideoAdPlayer.this, "YES", Toast.LENGTH_SHORT).show();
}
myLinearClose.setVisibility(View.VISIBLE);
myLinearClose.postDelayed(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
if (!isPortrait) {
myLinearClose.setVisibility(View.INVISIBLE);
}
}
}, 3000);
faceBookButton.setVisibility(View.GONE);
twitterButton.setVisibility(View.GONE);
shareButton.setVisibility(View.VISIBLE);
shareButton.setVisibility(View.VISIBLE);
shareButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if (!isPortrait) {
if (!isShareClicked) {
isShareClicked = true;
faceBookButton.setVisibility(View.GONE);
twitterButton.setVisibility(View.GONE);
} else {
isShareClicked = false;
faceBookButton.setVisibility(View.VISIBLE);
twitterButton.setVisibility(View.VISIBLE);
}
}
}
});
}