2011-10-24 11 views
5

私は自分のためにJavaの初心者です。私は、私が取り組んでいるアプリケーションのためにVideoViewMediaControllerを使用しています。私はただMediaControllerを私のVideoViewの上に表示したいと思っていましたが、明らかにそれを非常に簡単に行うことはできません。私はsetAnchorViewメソッドを私のVideoView idに使用しようとしましたが、うまくいきませんでした。私が何をしても、MediaControllerは常に私の画面の一番下にあります。android用のMediaControllerを拡張する

私はいくつかの研究を行いましたが、私がMediaControllerを延長するように見えて、位置やその他のプロパティを変更することができます。上記が動作していること

public void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.vforum); 

    controller = new VFPlayer(this); 
    vidPlayer = (VideoView) findViewById(R.id.vidPlayer); 
    vidPlayer.setMediaController(controller); 
} 

、私のデフォルトMediaControllerはまだポップアップし、すべて同じ機能を持っています

package com.dop.mobilevforum; 

import android.content.Context; 
import android.widget.MediaController; 

public class VFPlayer extends MediaController 
{ 
    public VFPlayer(Context context) 
    { 
     super(context); 
    } 
} 

と私の親クラスの:私は、新しいクラスを作成しました。質問は今、私のVFPlayerクラスの中から実際にコントローラの位置を変える方法はありますか?

enter image description here

+0

まだこのままです:/ – Ronnie

+0

私は[この解決策](http://stackoverflow.com/a/9563643/544419)を使用してMediaControllerの位置を変更します。これがあなたを助けることを願っています – Rongan

答えて

16

MediaControllerの場所を制御する好ましい方法は、setAnchorViewです。残念ながら、VideoViewは新しいビデオが読み込まれるたびにこの値を上書きして親ビューにするようです。これを行動に対抗するには、あなたがそれを行うたら、次のようなクラスが

public class ConstantAnchorMediaController extends MediaController 
{ 

    public ConstantAnchorMediaController(Context context, View anchor) 
    { 
     super(context); 
     super.setAnchorView(anchor); 
    } 

    @Override 
    public void setAnchorView(View view) 
    { 
     // Do nothing 
    } 
} 

を動作するはずです、あなたはそれを変え、あなたのVideoViewを気にせずに希望する方表示するアンカーを設定するには、こののMediaControllerを使用することができます。その後、それを固定するための適切な場所での視野を得ることだけの問題です。

+0

2番目の段落で提案したことを試しました。私は1x1ディップビューを作成し、それを画面の一番上に置き、setAnchorViewメソッドを試してみると、正常に動作しませんでした。 – Ronnie

+0

どうしましたか?また、確実に動作させるには、プログラムでMediaControllerを作成する必要があります。あなたはそれをやりました? –

+0

私はプログラムで作成しています。何も変わらなかった。それはビデオの真下に位置します。私は誓う、setAnchorViewは、私がそれをどのようなビューに設定しても、何の違いも作らなかった。 – Ronnie

1

あなたのVFPlayerクラスで

android.view.View.OnLayout(boolean, int, int, int, int) 

メソッドをオーバーライドすることができるはずです。ここからビュー/ウィジェットを置いてください。私は、Androidに関するいくつかのヶ月前に学んできた何

+0

これについて詳しく説明できますか?私のVFPlayer.javaでそのメソッドをオーバーライドすることができればいいですが、どこから始めるか分かりません – Ronnie

1

はこれです:difficultysが来たとき

、独自のコンポーネントを作ります。

コンポーネントレイアウト、幅4〜5つのImageButtons/Buttonsを簡単に作成し、VideoViewコンポーネント関数(またはより良いコントロールのためにSurfaceView)にリンクするのは簡単です。

hereから抽出)VideoView機能のいくつか:

start() -> To start a video play 
pause() -> To pause it 
seekTo(int msec) -> To go the exactly place , using it with a SeekBar 
... 

次にあなたが剛体コンポーネントを拡張しようとしているの問題もなく、あなたがしたい場所にそれらを置くためのボタンといくつかのレイアウトを作ることができます

関連する問題