Hi everyone. Today i will show you how to create a video player similar to YouTube video player having all the similar features using Android Studio.
custom video player in android example
You will need to have basic knowledge of android to understand this tutorial.
In my previous blog we talked about android layout designing.
find the ids of each and every view we have created in our layout (activity_main.xml)
private RelativeLayout videoLayout ; private VideoView videoView; private static ImageView frward_img,backward_img,playbtn,pausebtn,fullscreen,fullscreenexit,showimgUp,showimgDown; private RelativeLayout mediacontrols; private int check; private TextView startTime,endTime; private static TextView rewindtxt,frwrdtxt; private SeekBar seekBar; private Handler videoHandler; private Runnable videoRunnable; private CountDownTimer cTimer = null; private ProgressBar progressBar,bufferbar; private YoutubeLayout youtubeLayout; private boolean isMaximise=true; private String url="http://commondatastorage.googleapis.com/gtv-videos-bucket/sample/ForBiggerBlazes.mp4";
videoLayout =findViewById(R.id.video_layout);
frward_img=findViewById(R.id.frward_img);
backward_img=findViewById(R.id.backward_img);
FrameLayout bbkframe = findViewById(R.id.bbkframe);
FrameLayout ffrdframe = findViewById(R.id.ffrdframe);
mediacontrols=findViewById(R.id.mediacontrols);
playbtn=findViewById(R.id.playbtn);
pausebtn=findViewById(R.id.pausebtn);
startTime=findViewById(R.id.starttime);
endTime=findViewById(R.id.endtime);
seekBar=findViewById(R.id.seekbar);
rewindtxt=findViewById(R.id.rewindtxt);
frwrdtxt=findViewById(R.id.frwrdtxt);
fullscreen=findViewById(R.id.fullscreen);
fullscreenexit=findViewById(R.id.fullscreenexit);
progressBar=findViewById(R.id.progress);
bufferbar=findViewById(R.id.bufferbar);
videoView = findViewById(R.id.myvideo);
youtubeLayout = findViewById(R.id.dragLayout);
showimgDown=findViewById(R.id.showdown);
showimgUp=findViewById(R.id.showup);
private void initiateVideo() { videoView.setVideoURI(Uri.parse(url)); videoView = findViewById(R.id.myvideo); url = "android.resource://" + getPackageName() + "/" + R.raw.samplevideo; videoView.setVideoURI(Uri.parse(url)); videoView.start(); if (!videoView.isPlaying()) progressBar.setVisibility(View.VISIBLE); videoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() { @Override public void onPrepared(MediaPlayer mp) { videoView.start(); seekBar.setMax(videoView.getDuration()); progressBar.setVisibility(View.GONE); mp.setOnInfoListener(new MediaPlayer.OnInfoListener() { @Override public boolean onInfo(MediaPlayer mp, int what, int extra) { switch (what) { case MediaPlayer.MEDIA_INFO_BUFFERING_START: progressBar.setVisibility(View.VISIBLE); break; case MediaPlayer.MEDIA_INFO_BUFFERING_END: progressBar.setVisibility(View.GONE); break; } return false; } }); mp.setOnBufferingUpdateListener(new MediaPlayer.OnBufferingUpdateListener() { @Override public void onBufferingUpdate(MediaPlayer mp, int percent) { bufferbar.setProgress(percent); } }); mp.setOnCompletionListener(new MediaPlayer.OnCompletionListener() { @Override public void onCompletion(MediaPlayer mp) { } }); } }); }
we will override some methods for device orientation
@Override public void onConfigurationChanged(Configuration newConfig) { int height = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 230.0f,getResources().getDisplayMetrics()); ViewGroup.LayoutParams params = videoLayout.getLayoutParams(); if(newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) { hideSystemUI(); params.width = ViewGroup.LayoutParams.MATCH_PARENT; params.height = ViewGroup.LayoutParams.MATCH_PARENT; fullscreen.setVisibility(View.GONE); fullscreenexit.setVisibility(View.VISIBLE); videoLayout.requestLayout(); showimgDown.setVisibility(View.GONE); showimgUp.setVisibility(View.GONE); if (!isMaximise) { videoView.pause(); } } else if(newConfig.orientation == Configuration.ORIENTATION_PORTRAIT) { View decorView = getWindow().getDecorView(); decorView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_STABLE); params.width = ViewGroup.LayoutParams.MATCH_PARENT; params.height = height; fullscreen.setVisibility(View.VISIBLE); fullscreenexit.setVisibility(View.GONE); videoLayout.requestLayout(); showimgDown.setVisibility(View.VISIBLE); showimgUp.setVisibility(View.GONE); } super.onConfigurationChanged(newConfig); } @Override public void onWindowFocusChanged(boolean hasFocus) { super.onWindowFocusChanged(hasFocus); Configuration chechConfig = getResources().getConfiguration(); if(chechConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) { if (hasFocus) { hideSystemUI(); } } } int height = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 230.0f,getResources().getDisplayMetrics()); ViewGroup.LayoutParams params = videoLayout.getLayoutParams();
final GestureDetector gd = new GestureDetector(MainActivity.this, new GestureDetector.SimpleOnGestureListener(){ @Override public boolean onDoubleTap(MotionEvent e) { if (check==1) fastRewind(); else if (check==0) fastForward(); return true; } @Override public void onLongPress(MotionEvent e) { } @Override public boolean onSingleTapConfirmed(MotionEvent e) { startTimer(); return super.onSingleTapConfirmed(e); } @Override public boolean onDoubleTapEvent(MotionEvent e) { return true; } @Override public boolean onDown(MotionEvent e) { return true; } @Override public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) { return super.onScroll(e1, e2, distanceX, distanceY); } @Override public boolean onFling(MotionEvent event1, MotionEvent event2, float velocityX, float velocityY) { if (isMaximise) { minimiseView(); } else { maximiseView(); } return true; } }); ffrdframe.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View view, MotionEvent event) { check=1; return gd.onTouchEvent(event); } }); bbkframe.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View view, MotionEvent event) { check=0; return gd.onTouchEvent(event); } });
playbtn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Animation fadeIn = new AlphaAnimation(0, 1); fadeIn.setInterpolator(new DecelerateInterpolator()); fadeIn.setDuration(500); AnimationSet animation = new AnimationSet(false); animation.addAnimation(fadeIn); pausebtn.setAnimation(animation); videoView.start(); pausebtn.setVisibility(View.VISIBLE); playbtn.setVisibility(View.GONE); } }); pausebtn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Animation fadeIn = new AlphaAnimation(0, 1); fadeIn.setInterpolator(new DecelerateInterpolator()); fadeIn.setDuration(500); AnimationSet animation = new AnimationSet(false); animation.addAnimation(fadeIn); playbtn.setAnimation(animation); pausebtn.setVisibility(View.GONE); playbtn.setVisibility(View.VISIBLE); videoView.pause(); } }); fullscreen.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); int TIME_OUT = 2500; new Handler().postDelayed(new Runnable() { @Override public void run() { setRequestedOrientation(SCREEN_ORIENTATION_SENSOR); } }, TIME_OUT); } }); fullscreenexit.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); int TIME_OUT = 2500; new Handler().postDelayed(new Runnable() { @Override public void run() { setRequestedOrientation(SCREEN_ORIENTATION_SENSOR); } },TIME_OUT); } }); }
Now we will create animations for double tap like YouTube
Create two methods fastForward and fastRewind and we have already called these methods 🙂
void fastForward() { videoView.seekTo(videoView.getCurrentPosition() + 10000); frward_img.setVisibility(View.VISIBLE); frwrdtxt.setVisibility(View.VISIBLE); Animation fadeIn = new AlphaAnimation(0, 1); fadeIn.setInterpolator(new DecelerateInterpolator()); fadeIn.setDuration(100); AnimationSet animation = new AnimationSet(false); animation.addAnimation(fadeIn); frwrdtxt.setAnimation(animation); animForward(frward_img); } void fastRewind() { videoView.seekTo(videoView.getCurrentPosition() - 10000); backward_img.setVisibility(View.VISIBLE); rewindtxt.setVisibility(View.VISIBLE); Animation fadeIn = new AlphaAnimation(0, 1); fadeIn.setInterpolator(new DecelerateInterpolator()); fadeIn.setDuration(100); AnimationSet animation = new AnimationSet(false); animation.addAnimation(fadeIn); rewindtxt.setAnimation(animation); animBackward(backward_img); } public static void animForward(final ImageView view) { ScaleAnimation scaleAnimation = new ScaleAnimation(0.0f, 1.0f, 0.0f, 1.0f, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f); prepareAnimationForward(scaleAnimation); AlphaAnimation alphaAnimation = new AlphaAnimation(0.0f, 1.0f); prepareAnimationForward(alphaAnimation); AnimationSet animation = new AnimationSet(true); animation.addAnimation(alphaAnimation); animation.addAnimation(scaleAnimation); animation.setDuration(500);//u can adjust yourself view.startAnimation(animation); } private static Animation prepareAnimationForward(Animation animation){ animation.setRepeatCount(1); animation.setRepeatMode(Animation.REVERSE); animation.setAnimationListener(new Animation.AnimationListener() { @Override public void onAnimationStart(Animation animation) { } @Override public void onAnimationEnd(Animation animation) { Animation fadeOut = new AlphaAnimation(1, 0); fadeOut.setInterpolator(new AccelerateInterpolator()); fadeOut.setStartOffset(100); fadeOut.setDuration(100); AnimationSet animation1 = new AnimationSet(false); animation1.addAnimation(fadeOut); frwrdtxt.setAnimation(animation1); frward_img.setVisibility(View.GONE); frwrdtxt.setVisibility(View.GONE); } @Override public void onAnimationRepeat(Animation animation) { } }); return animation; } public static void animBackward(final ImageView view) { ScaleAnimation scaleAnimation = new ScaleAnimation(0.0f, 1.0f, 0.0f, 1.0f, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f); prepareAnimationBackward(scaleAnimation); AlphaAnimation alphaAnimation = new AlphaAnimation(0.0f, 1.0f); prepareAnimationBackward(alphaAnimation); AnimationSet animation = new AnimationSet(true); animation.addAnimation(alphaAnimation); animation.addAnimation(scaleAnimation); animation.setDuration(500);//u can adjust yourself view.startAnimation(animation); } private static Animation prepareAnimationBackward(Animation animation){ animation.setRepeatCount(1); animation.setRepeatMode(Animation.REVERSE); animation.setAnimationListener(new Animation.AnimationListener() { @Override public void onAnimationStart(Animation animation) { } @Override public void onAnimationEnd(Animation animation) { Animation fadeOut = new AlphaAnimation(1, 0); fadeOut.setInterpolator(new AccelerateInterpolator()); fadeOut.setStartOffset(100); fadeOut.setDuration(100); AnimationSet animation1 = new AnimationSet(false); animation1.addAnimation(fadeOut); rewindtxt.setAnimation(animation1); backward_img.setVisibility(View.GONE); rewindtxt.setVisibility(View.GONE); } @Override public void onAnimationRepeat(Animation animation) { } }); return animation; }
void startTimer() { Animation fadeIn = new AlphaAnimation(0, 1); fadeIn.setInterpolator(new DecelerateInterpolator()); fadeIn.setDuration(500); AnimationSet animation = new AnimationSet(false); animation.addAnimation(fadeIn); mediacontrols.setAnimation(animation); cTimer = new CountDownTimer(1500, 1000) { public void onTick(long millisUntilFinished) { mediacontrols.setVisibility(View.VISIBLE); if (videoView.isPlaying()) { pausebtn.setVisibility(View.VISIBLE); playbtn.setVisibility(View.GONE); } else { playbtn.setVisibility(View.VISIBLE); pausebtn.setVisibility(View.GONE); } } public void onFinish() { Animation fadeOut = new AlphaAnimation(1, 0); fadeOut.setInterpolator(new AccelerateInterpolator()); fadeOut.setStartOffset(100); fadeOut.setDuration(100); AnimationSet animation = new AnimationSet(false); animation.addAnimation(fadeOut); mediacontrols.setAnimation(animation); mediacontrols.setVisibility(View.GONE); pausebtn.setVisibility(View.GONE); playbtn.setVisibility(View.GONE); } }; cTimer.start(); } void cancelTimer() { if(cTimer!=null) cTimer.cancel(); } @Override protected void onDestroy() { cancelTimer(); super.onDestroy(); }
public void dissmissControls(View view) { cancelTimer(); if (mediacontrols.getVisibility()==View.VISIBLE) { Animation fadeOut = new AlphaAnimation(1, 0); fadeOut.setInterpolator(new AccelerateInterpolator()); fadeOut.setStartOffset(100); fadeOut.setDuration(100); AnimationSet animation = new AnimationSet(false); animation.addAnimation(fadeOut); mediacontrols.setAnimation(animation); mediacontrols.setVisibility(View.GONE); pausebtn.setVisibility(View.GONE); playbtn.setVisibility(View.GONE); } else { Animation fadeIn = new AlphaAnimation(0, 1); fadeIn.setInterpolator(new DecelerateInterpolator()); fadeIn.setDuration(500); AnimationSet animation = new AnimationSet(false); animation.addAnimation(fadeIn); mediacontrols.setAnimation(animation); mediacontrols.setVisibility(View.VISIBLE); if (videoView.isPlaying()) { pausebtn.setVisibility(View.VISIBLE); playbtn.setVisibility(View.GONE); } else { playbtn.setVisibility(View.VISIBLE); pausebtn.setVisibility(View.GONE); } } }
void setHandler(){ videoHandler=new Handler(); videoRunnable=new Runnable() { @Override public void run() { if (videoView.getDuration()>0) { int currentPosition=videoView.getCurrentPosition(); seekBar.setProgress(currentPosition); startTime.setText(""+convertIntToTime(currentPosition)); endTime.setText(""+convertIntToTime(videoView.getDuration() - currentPosition)); } videoHandler.postDelayed(this,0); } }; videoHandler.postDelayed(videoRunnable,500); } private String convertIntToTime(int ms) { String time = null; int x,seconds,minutes,hours; x= ms/1000; seconds= x % 60; x /= 60; minutes= x % 60; x /= 60; hours= x % 24; if (hours != 0) time=String.format("%02d",hours) + ":" + String.format("%02d",minutes)+ ":" +String.format("%02d",seconds); else time=String.format("%02d",minutes)+ ":" +String.format("%02d",seconds); return time; } void initialiseSeekBar() { seekBar.setProgress(0); seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { @Override public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { if (seekBar.getId() == R.id.seekbar) { if (fromUser) { videoView.seekTo(progress); int currentPosition = videoView.getCurrentPosition(); startTime.setText("" + convertIntToTime(currentPosition)); endTime.setText("" + convertIntToTime(videoView.getDuration() - currentPosition)); } } } @Override public void onStartTrackingTouch(SeekBar seekBar) { } @Override public void onStopTrackingTouch(SeekBar seekBar) { } }); } void releaseVideoPlayer() { if (videoView != null) { videoHandler.removeCallbacks(videoRunnable); videoView=null; } } @Override public void onBackPressed() { super.onBackPressed(); releaseVideoPlayer(); }
setHandler(); initialiseSeekBar(); initiateVideo();
package com.example.testapp; import android.annotation.SuppressLint; import android.content.pm.ActivityInfo; import android.content.res.Configuration; import android.media.MediaPlayer; import android.net.Uri; import android.os.Bundle; import android.os.CountDownTimer; import android.os.Handler; import android.util.TypedValue; import android.view.GestureDetector; import android.view.MotionEvent; import android.view.View; import android.view.ViewGroup; import android.view.animation.AccelerateInterpolator; import android.view.animation.AlphaAnimation; import android.view.animation.Animation; import android.view.animation.AnimationSet; import android.view.animation.DecelerateInterpolator; import android.view.animation.ScaleAnimation; import android.widget.FrameLayout; import android.widget.ImageView; import android.widget.ProgressBar; import android.widget.RelativeLayout; import android.widget.SeekBar; import android.widget.TextView; import android.widget.VideoView; import androidx.appcompat.app.AppCompatActivity; import static android.content.pm.ActivityInfo.SCREEN_ORIENTATION_SENSOR; public class MainActivity extends AppCompatActivity { private RelativeLayout videoLayout ; private VideoView videoView; private static ImageView frward_img,backward_img,playbtn,pausebtn,fullscreen,fullscreenexit,showimgUp,showimgDown; private RelativeLayout mediacontrols; private int check; private TextView startTime,endTime; private static TextView rewindtxt,frwrdtxt; private SeekBar seekBar; private Handler videoHandler; private Runnable videoRunnable; private CountDownTimer cTimer = null; private ProgressBar progressBar,bufferbar; private YoutubeLayout youtubeLayout; private boolean isMaximise=true; private String url="http://commondatastorage.googleapis.com/gtv-videos-bucket/sample/ForBiggerBlazes.mp4"; @SuppressLint("ClickableViewAccessibility") @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); videoLayout =findViewById(R.id.video_layout); frward_img=findViewById(R.id.frward_img); backward_img=findViewById(R.id.backward_img); FrameLayout bbkframe = findViewById(R.id.bbkframe); FrameLayout ffrdframe = findViewById(R.id.ffrdframe); mediacontrols=findViewById(R.id.mediacontrols); playbtn=findViewById(R.id.playbtn); pausebtn=findViewById(R.id.pausebtn); startTime=findViewById(R.id.starttime); endTime=findViewById(R.id.endtime); seekBar=findViewById(R.id.seekbar); rewindtxt=findViewById(R.id.rewindtxt); frwrdtxt=findViewById(R.id.frwrdtxt); fullscreen=findViewById(R.id.fullscreen); fullscreenexit=findViewById(R.id.fullscreenexit); progressBar=findViewById(R.id.progress); bufferbar=findViewById(R.id.bufferbar); videoView = findViewById(R.id.myvideo); youtubeLayout = findViewById(R.id.dragLayout); showimgDown=findViewById(R.id.showdown); showimgUp=findViewById(R.id.showup); setHandler(); initialiseSeekBar(); initiateVideo(); final GestureDetector gd = new GestureDetector(MainActivity.this, new GestureDetector.SimpleOnGestureListener(){ @Override public boolean onDoubleTap(MotionEvent e) { if (check==1) fastRewind(); else if (check==0) fastForward(); return true; } @Override public void onLongPress(MotionEvent e) { } @Override public boolean onSingleTapConfirmed(MotionEvent e) { startTimer(); return super.onSingleTapConfirmed(e); } @Override public boolean onDoubleTapEvent(MotionEvent e) { return true; } @Override public boolean onDown(MotionEvent e) { return true; } @Override public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) { return super.onScroll(e1, e2, distanceX, distanceY); } @Override public boolean onFling(MotionEvent event1, MotionEvent event2, float velocityX, float velocityY) { if (isMaximise) { minimiseView(); } else { maximiseView(); } return true; } }); ffrdframe.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View view, MotionEvent event) { check=1; return gd.onTouchEvent(event); } }); bbkframe.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View view, MotionEvent event) { check=0; return gd.onTouchEvent(event); } }); playbtn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Animation fadeIn = new AlphaAnimation(0, 1); fadeIn.setInterpolator(new DecelerateInterpolator()); fadeIn.setDuration(500); AnimationSet animation = new AnimationSet(false); animation.addAnimation(fadeIn); pausebtn.setAnimation(animation); videoView.start(); pausebtn.setVisibility(View.VISIBLE); playbtn.setVisibility(View.GONE); } }); pausebtn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Animation fadeIn = new AlphaAnimation(0, 1); fadeIn.setInterpolator(new DecelerateInterpolator()); fadeIn.setDuration(500); AnimationSet animation = new AnimationSet(false); animation.addAnimation(fadeIn); playbtn.setAnimation(animation); pausebtn.setVisibility(View.GONE); playbtn.setVisibility(View.VISIBLE); videoView.pause(); } }); fullscreen.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); int TIME_OUT = 2500; new Handler().postDelayed(new Runnable() { @Override public void run() { setRequestedOrientation(SCREEN_ORIENTATION_SENSOR); } }, TIME_OUT); } }); fullscreenexit.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); int TIME_OUT = 2500; new Handler().postDelayed(new Runnable() { @Override public void run() { setRequestedOrientation(SCREEN_ORIENTATION_SENSOR); } },TIME_OUT); } }); } private void initiateVideo() { videoView.setVideoURI(Uri.parse(url)); videoView = findViewById(R.id.myvideo); url = "android.resource://" + getPackageName() + "/" + R.raw.samplevideo; videoView.setVideoURI(Uri.parse(url)); videoView.start(); if (!videoView.isPlaying()) progressBar.setVisibility(View.VISIBLE); videoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() { @Override public void onPrepared(MediaPlayer mp) { videoView.start(); seekBar.setMax(videoView.getDuration()); progressBar.setVisibility(View.GONE); mp.setOnInfoListener(new MediaPlayer.OnInfoListener() { @Override public boolean onInfo(MediaPlayer mp, int what, int extra) { switch (what) { case MediaPlayer.MEDIA_INFO_BUFFERING_START: progressBar.setVisibility(View.VISIBLE); break; case MediaPlayer.MEDIA_INFO_BUFFERING_END: progressBar.setVisibility(View.GONE); break; } return false; } }); mp.setOnBufferingUpdateListener(new MediaPlayer.OnBufferingUpdateListener() { @Override public void onBufferingUpdate(MediaPlayer mp, int percent) { bufferbar.setProgress(percent); } }); mp.setOnCompletionListener(new MediaPlayer.OnCompletionListener() { @Override public void onCompletion(MediaPlayer mp) { } }); } }); } @Override public void onConfigurationChanged(Configuration newConfig) { int height = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 230.0f,getResources().getDisplayMetrics()); ViewGroup.LayoutParams params = videoLayout.getLayoutParams(); if(newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) { hideSystemUI(); params.width = ViewGroup.LayoutParams.MATCH_PARENT; params.height = ViewGroup.LayoutParams.MATCH_PARENT; fullscreen.setVisibility(View.GONE); fullscreenexit.setVisibility(View.VISIBLE); videoLayout.requestLayout(); showimgDown.setVisibility(View.GONE); showimgUp.setVisibility(View.GONE); if (!isMaximise) { videoView.pause(); } } else if(newConfig.orientation == Configuration.ORIENTATION_PORTRAIT) { View decorView = getWindow().getDecorView(); decorView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_STABLE); params.width = ViewGroup.LayoutParams.MATCH_PARENT; params.height = height; fullscreen.setVisibility(View.VISIBLE); fullscreenexit.setVisibility(View.GONE); videoLayout.requestLayout(); showimgDown.setVisibility(View.VISIBLE); showimgUp.setVisibility(View.GONE); } super.onConfigurationChanged(newConfig); } @Override public void onWindowFocusChanged(boolean hasFocus) { super.onWindowFocusChanged(hasFocus); Configuration chechConfig = getResources().getConfiguration(); if(chechConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) { if (hasFocus) { hideSystemUI(); } } } private void hideSystemUI() { View decorView = getWindow().getDecorView(); decorView.setSystemUiVisibility( View.SYSTEM_UI_FLAG_IMMERSIVE | View.SYSTEM_UI_FLAG_LAYOUT_STABLE | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_FULLSCREEN); } public static void animForward(final ImageView view) { ScaleAnimation scaleAnimation = new ScaleAnimation(0.0f, 1.0f, 0.0f, 1.0f, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f); prepareAnimationForward(scaleAnimation); AlphaAnimation alphaAnimation = new AlphaAnimation(0.0f, 1.0f); prepareAnimationForward(alphaAnimation); AnimationSet animation = new AnimationSet(true); animation.addAnimation(alphaAnimation); animation.addAnimation(scaleAnimation); animation.setDuration(500);//u can adjust yourself view.startAnimation(animation); } private static Animation prepareAnimationForward(Animation animation){ animation.setRepeatCount(1); animation.setRepeatMode(Animation.REVERSE); animation.setAnimationListener(new Animation.AnimationListener() { @Override public void onAnimationStart(Animation animation) { } @Override public void onAnimationEnd(Animation animation) { Animation fadeOut = new AlphaAnimation(1, 0); fadeOut.setInterpolator(new AccelerateInterpolator()); fadeOut.setStartOffset(100); fadeOut.setDuration(100); AnimationSet animation1 = new AnimationSet(false); animation1.addAnimation(fadeOut); frwrdtxt.setAnimation(animation1); frward_img.setVisibility(View.GONE); frwrdtxt.setVisibility(View.GONE); } @Override public void onAnimationRepeat(Animation animation) { } }); return animation; } public static void animBackward(final ImageView view) { ScaleAnimation scaleAnimation = new ScaleAnimation(0.0f, 1.0f, 0.0f, 1.0f, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f); prepareAnimationBackward(scaleAnimation); AlphaAnimation alphaAnimation = new AlphaAnimation(0.0f, 1.0f); prepareAnimationBackward(alphaAnimation); AnimationSet animation = new AnimationSet(true); animation.addAnimation(alphaAnimation); animation.addAnimation(scaleAnimation); animation.setDuration(500);//u can adjust yourself view.startAnimation(animation); } private static Animation prepareAnimationBackward(Animation animation){ animation.setRepeatCount(1); animation.setRepeatMode(Animation.REVERSE); animation.setAnimationListener(new Animation.AnimationListener() { @Override public void onAnimationStart(Animation animation) { } @Override public void onAnimationEnd(Animation animation) { Animation fadeOut = new AlphaAnimation(1, 0); fadeOut.setInterpolator(new AccelerateInterpolator()); fadeOut.setStartOffset(100); fadeOut.setDuration(100); AnimationSet animation1 = new AnimationSet(false); animation1.addAnimation(fadeOut); rewindtxt.setAnimation(animation1); backward_img.setVisibility(View.GONE); rewindtxt.setVisibility(View.GONE); } @Override public void onAnimationRepeat(Animation animation) { } }); return animation; } void fastForward() { videoView.seekTo(videoView.getCurrentPosition() + 10000); frward_img.setVisibility(View.VISIBLE); frwrdtxt.setVisibility(View.VISIBLE); Animation fadeIn = new AlphaAnimation(0, 1); fadeIn.setInterpolator(new DecelerateInterpolator()); fadeIn.setDuration(100); AnimationSet animation = new AnimationSet(false); animation.addAnimation(fadeIn); frwrdtxt.setAnimation(animation); animForward(frward_img); } void fastRewind() { videoView.seekTo(videoView.getCurrentPosition() - 10000); backward_img.setVisibility(View.VISIBLE); rewindtxt.setVisibility(View.VISIBLE); Animation fadeIn = new AlphaAnimation(0, 1); fadeIn.setInterpolator(new DecelerateInterpolator()); fadeIn.setDuration(100); AnimationSet animation = new AnimationSet(false); animation.addAnimation(fadeIn); rewindtxt.setAnimation(animation); animBackward(backward_img); } void startTimer() { Animation fadeIn = new AlphaAnimation(0, 1); fadeIn.setInterpolator(new DecelerateInterpolator()); fadeIn.setDuration(500); AnimationSet animation = new AnimationSet(false); animation.addAnimation(fadeIn); mediacontrols.setAnimation(animation); cTimer = new CountDownTimer(1500, 1000) { public void onTick(long millisUntilFinished) { mediacontrols.setVisibility(View.VISIBLE); if (videoView.isPlaying()) { pausebtn.setVisibility(View.VISIBLE); playbtn.setVisibility(View.GONE); } else { playbtn.setVisibility(View.VISIBLE); pausebtn.setVisibility(View.GONE); } } public void onFinish() { Animation fadeOut = new AlphaAnimation(1, 0); fadeOut.setInterpolator(new AccelerateInterpolator()); fadeOut.setStartOffset(100); fadeOut.setDuration(100); AnimationSet animation = new AnimationSet(false); animation.addAnimation(fadeOut); mediacontrols.setAnimation(animation); mediacontrols.setVisibility(View.GONE); pausebtn.setVisibility(View.GONE); playbtn.setVisibility(View.GONE); } }; cTimer.start(); } void cancelTimer() { if(cTimer!=null) cTimer.cancel(); } @Override protected void onDestroy() { cancelTimer(); super.onDestroy(); } void setHandler(){ videoHandler=new Handler(); videoRunnable=new Runnable() { @Override public void run() { if (videoView.getDuration()>0) { int currentPosition=videoView.getCurrentPosition(); seekBar.setProgress(currentPosition); startTime.setText(""+convertIntToTime(currentPosition)); endTime.setText(""+convertIntToTime(videoView.getDuration() - currentPosition)); } videoHandler.postDelayed(this,0); } }; videoHandler.postDelayed(videoRunnable,500); } private String convertIntToTime(int ms) { String time = null; int x,seconds,minutes,hours; x= ms/1000; seconds= x % 60; x /= 60; minutes= x % 60; x /= 60; hours= x % 24; if (hours != 0) time=String.format("%02d",hours) + ":" + String.format("%02d",minutes)+ ":" +String.format("%02d",seconds); else time=String.format("%02d",minutes)+ ":" +String.format("%02d",seconds); return time; } void initialiseSeekBar() { seekBar.setProgress(0); seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { @Override public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { if (seekBar.getId() == R.id.seekbar) { if (fromUser) { videoView.seekTo(progress); int currentPosition = videoView.getCurrentPosition(); startTime.setText("" + convertIntToTime(currentPosition)); endTime.setText("" + convertIntToTime(videoView.getDuration() - currentPosition)); } } } @Override public void onStartTrackingTouch(SeekBar seekBar) { } @Override public void onStopTrackingTouch(SeekBar seekBar) { } }); } void releaseVideoPlayer() { if (videoView != null) { videoHandler.removeCallbacks(videoRunnable); videoView=null; } } @Override public void onBackPressed() { super.onBackPressed(); releaseVideoPlayer(); } public void dissmissControls(View view) { cancelTimer(); if (mediacontrols.getVisibility()==View.VISIBLE) { Animation fadeOut = new AlphaAnimation(1, 0); fadeOut.setInterpolator(new AccelerateInterpolator()); fadeOut.setStartOffset(100); fadeOut.setDuration(100); AnimationSet animation = new AnimationSet(false); animation.addAnimation(fadeOut); mediacontrols.setAnimation(animation); mediacontrols.setVisibility(View.GONE); pausebtn.setVisibility(View.GONE); playbtn.setVisibility(View.GONE); } else { Animation fadeIn = new AlphaAnimation(0, 1); fadeIn.setInterpolator(new DecelerateInterpolator()); fadeIn.setDuration(500); AnimationSet animation = new AnimationSet(false); animation.addAnimation(fadeIn); mediacontrols.setAnimation(animation); mediacontrols.setVisibility(View.VISIBLE); if (videoView.isPlaying()) { pausebtn.setVisibility(View.VISIBLE); playbtn.setVisibility(View.GONE); } else { playbtn.setVisibility(View.VISIBLE); pausebtn.setVisibility(View.GONE); } } } public void samplevideo(View view) { url="http://139.59.31.217:4864/api/videos/720p/food-showreel.mp4"; initiateVideo(); } public void samplevideo2(View view) { url="http://commondatastorage.googleapis.com/gtv-videos-bucket/sample/ForBiggerBlazes.mp4"; initiateVideo(); } }
Incorporated in 2018 and based in New Delhi, Mooze Tech believes in engineering products that…
Having a family besides you, is always advantageous. Most people think that a family owned…
Business after Lockdown Like so many others, may your business have also been affected due…
Traditional Marketing vs Digital Marketing are the two main strategies to capture the attention of…
What is Knowledge Representation:- Humans are very good at understanding and reasoning. Humans know which…
Mobile computing is a set of advanced IT technologies and products. It enables users to…
This website uses cookies.