私は私のアプリケーションで動的にサイズを変更したいVideoViewを持っています。 VideoViewクラスを拡張することで、videoViewとvideoViewの両方のサイズを正しく変更することに成功しました。しかし、私は2つのサイズの間をより緩やかに移行したいと考えています。どうやってやるの?スケーリングアニメーションを試しましたが、VideoViewレイアウトのサイズが変更されても、ビデオ自体は拡大縮小されません。思考?すべてのヘルプははるかに高く評価されてVideoViewのサイズを変更するにはどうすればいいですか?
Animation scaling = new ScaleAnimation(1.0f, 0.2f, 1.0f, 0.2f);
scaling.setDuration(2000);
startAnimation(scaling);
:
public class MyVideoView extends VideoView {
private int mForceHeight,mForceWidth;
private int mOrigWidth, mOrigHeight, mMinWidth, mMinHeight;
public MyVideoView(Context context) {
super(context);
}
/* Will cause inflator errors if not present */
public MyVideoView(Context context, AttributeSet attrs){
super(context, attrs);
}
public void setDimensions(int w, int h) {
this.mForceHeight = h;
this.mForceWidth = w;
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
if (mForceHeight != 0)
setMeasuredDimension(mForceWidth, mForceHeight);
else
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
}
public void setOrigDimens(int width, int height) {
mOrigWidth = width;
mOrigHeight = height;
mMinWidth = width/4; // My own decision for the small size
mMinHeight = height/4;
}
public void setSmallView() {
setNewViewSize(mMinWidth, mMinHeight);
}
public void setNormalView() {
setNewViewSize(mOrigWidth, mOrigHeight);
}
/* RESIZES THE VIEW */
public void setNewViewSize(int width, int height) {
mForceWidth = width;
mForceHeight = height;
setDimensions(width, height);
getHolder().setFixedSize(width, height);
}
}
ここに私が試したスケーリングコードは次のとおりです。
は、ここに私のビデオクラスです!
あなたはこのコードに欠かせない部分があります。(私は思う)。また、TextureViewを使用するようにMediaPlayerを設定する必要があります。おそらくSurfaceTextureListenerのonSurfaceTextureAvailableメソッドにあります。 –