我有一个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所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)