Fixed scaling of video

This commit is contained in:
ByteHamster 2018-01-06 13:20:02 +01:00
parent bad964508a
commit 7e72ff0b0e
2 changed files with 31 additions and 3 deletions

View File

@ -8,8 +8,10 @@ import android.os.Build;
import android.os.Bundle; import android.os.Bundle;
import android.os.Handler; import android.os.Handler;
import android.support.v4.view.WindowCompat; import android.support.v4.view.WindowCompat;
import android.util.DisplayMetrics;
import android.util.Log; import android.util.Log;
import android.util.Pair; import android.util.Pair;
import android.util.TypedValue;
import android.view.Menu; import android.view.Menu;
import android.view.MenuItem; import android.view.MenuItem;
import android.view.MotionEvent; import android.view.MotionEvent;
@ -382,7 +384,14 @@ public class VideoplayerActivity extends MediaplayerActivity {
@Override @Override
public void onConfigurationChanged(Configuration newConfig) { public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig); super.onConfigurationChanged(newConfig);
//TODO
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.HONEYCOMB_MR2) {
// This is only relevant for picture in picture
DisplayMetrics dm = getResources().getDisplayMetrics();
float px = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, newConfig.screenWidthDp, dm);
float py = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, newConfig.screenHeightDp, dm);
videoview.setAvailableSize(px, py);
}
} }
private static class VideoControlsHider extends Handler { private static class VideoControlsHider extends Handler {

View File

@ -25,6 +25,8 @@ public class AspectRatioVideoView extends VideoView {
private int mVideoWidth; private int mVideoWidth;
private int mVideoHeight; private int mVideoHeight;
private float mAvailableWidth = -1;
private float mAvailableHeight = -1;
public AspectRatioVideoView(Context context) { public AspectRatioVideoView(Context context) {
this(context, null); this(context, null);
@ -48,8 +50,13 @@ public class AspectRatioVideoView extends VideoView {
return; return;
} }
float heightRatio = (float) mVideoHeight / (float) getHeight(); if (mAvailableWidth < 0 || mAvailableHeight < 0) {
float widthRatio = (float) mVideoWidth / (float) getWidth(); mAvailableWidth = getWidth();
mAvailableHeight = getHeight();
}
float heightRatio = (float) mVideoHeight / mAvailableHeight;
float widthRatio = (float) mVideoWidth / mAvailableWidth;
int scaledHeight; int scaledHeight;
int scaledWidth; int scaledWidth;
@ -94,4 +101,16 @@ public class AspectRatioVideoView extends VideoView {
invalidate(); invalidate();
} }
/**
* Sets the maximum size that the view might expand to
* @param width
* @param height
*/
public void setAvailableSize(float width, float height) {
mAvailableWidth = width;
mAvailableHeight = height;
requestLayout();
invalidate();
}
} }