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.Handler;
import android.support.v4.view.WindowCompat;
import android.util.DisplayMetrics;
import android.util.Log;
import android.util.Pair;
import android.util.TypedValue;
import android.view.Menu;
import android.view.MenuItem;
import android.view.MotionEvent;
@ -382,7 +384,14 @@ public class VideoplayerActivity extends MediaplayerActivity {
@Override
public void onConfigurationChanged(Configuration 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 {

View File

@ -25,6 +25,8 @@ public class AspectRatioVideoView extends VideoView {
private int mVideoWidth;
private int mVideoHeight;
private float mAvailableWidth = -1;
private float mAvailableHeight = -1;
public AspectRatioVideoView(Context context) {
this(context, null);
@ -48,8 +50,13 @@ public class AspectRatioVideoView extends VideoView {
return;
}
float heightRatio = (float) mVideoHeight / (float) getHeight();
float widthRatio = (float) mVideoWidth / (float) getWidth();
if (mAvailableWidth < 0 || mAvailableHeight < 0) {
mAvailableWidth = getWidth();
mAvailableHeight = getHeight();
}
float heightRatio = (float) mVideoHeight / mAvailableHeight;
float widthRatio = (float) mVideoWidth / mAvailableWidth;
int scaledHeight;
int scaledWidth;
@ -94,4 +101,16 @@ public class AspectRatioVideoView extends VideoView {
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();
}
}