Android VideoView crop_center

Android VideoView crop_center,第1张

概述我有一个RelativeLayout<RelativeLayoutxmlns:android="http://schemas.android.com/apkes/android"android:layout_width="fill_parent"android:layout_height="fill_parent"android:layout_gravity="center"

我有一个relativeLayout

<relativeLayout xmlns:androID="http://schemas.androID.com/apk/res/androID"    androID:layout_wIDth="fill_parent"    androID:layout_height="fill_parent"    androID:layout_gravity="center"    androID:foregroundGravity="center"    androID:gravity="center"    androID:orIEntation="horizontal" >    <VIDeoVIEw        androID:ID="@+ID/vIDeoVIEwPanel"        androID:layout_wIDth="fill_parent"        androID:layout_height="fill_parent"        androID:layout_gravity="center"         androID:layout_centerInParent="true"/></relativeLayout>

我需要的是显示视频全屏裁剪.如果我可以与ImageVIEw进行比较,我需要将其显示为crop_center.

如何让VIDeoVIEw不自动调整视频大小以适应中心,但裁剪中心?

解决方法:

解决方案是使用TextureVIEw而不是VIDeoVIEw(SurfaceVIEw).
TextureVIEw不会对内容进行任何 *** 作以适应屏幕.
以下是解决方案的代码示例:

//store the SurfaceTexture to set surface for MediaPlayermTextureVIEw.setSurfaceTextureListener(new SurfaceTextureListener() {@OverrIDe    public voID onSurfaceTextureAvailable(SurfaceTexture surface,            int wIDth, int height) {        FullScreenActivity.this.mSurface = surface;    }

….

Surface s = new Surface(mSurface);mPlayer = mp;mp.setSurface(s);scaleVIDeo(mp);//<-- this function scales vIDeo to run cropped

….

private voID scaleVIDeo(MediaPlayer mPlayer) {        LayoutParams vIDeoParams = (LayoutParams) mTextureVIEw                .getLayoutParams();        displayMetrics dm = new displayMetrics();        FullScreenActivity.this.getwindowManager().getDefaultdisplay()                .getMetrics(dm);        final int height = dm.heightPixels;        final int wIDth = dm.wIDthPixels;        int vIDeoHeight = mPlayer.getVIDeoHeight();        int vIDeoWIDth = mPlayer.getVIDeoWIDth();        double hRatio = 1;        hRatio = (height * 1.0 / vIDeoHeight) / (wIDth * 1.0 / vIDeoWIDth);        vIDeoParams.x = (int) (hRatio <= 1 ? 0 : Math.round((-(hRatio - 1) / 2)                * wIDth));        vIDeoParams.y = (int) (hRatio >= 1 ? 0 : Math                .round((((-1 / hRatio) + 1) / 2) * height));        vIDeoParams.wIDth = wIDth - vIDeoParams.x - vIDeoParams.x;        vIDeoParams.height = height - vIDeoParams.y - vIDeoParams.y;        Log.e(TAG, "x:" + vIDeoParams.x + " y:" + vIDeoParams.y);        mTextureVIEw.setScaleX(1.00001f);//<-- this line enables smoothing of the picture in TextureVIEw.        mTextureVIEw.requestLayout();        mTextureVIEw.invalIDate();    }
总结

以上是内存溢出为你收集整理的Android VideoView crop_center全部内容,希望文章能够帮你解决Android VideoView crop_center所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1100202.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-28
下一篇 2022-05-28

发表评论

登录后才能评论

评论列表(0条)

保存