29

アプリケーションにビデオビューがあります。コードはこのようなものです。

<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/opsbuds"
    android:orientation="vertical">

    <TextView
        android:id="@+id/adtxt1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="TextView"></TextView>

    <VideoView
        android:id="@+id/videoView11"
        android:layout_width="300dip"
        android:layout_height="250dip"
        android:layout_marginLeft="30dip"></VideoView>

    <LinearLayout
        android:id="@+id/llv11"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical"></LinearLayout>

    <Button
        android:id="@+id/button1211"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="5dp"
        android:layout_marginTop="10dp"
        android:background="@drawable/button"
        android:text=" Continue "
        android:textColor="#800080"
        android:textSize="20dp"
        android:textStyle="bold"></Button>
</LinearLayout>
</ScrollView>

ビデオ ビューの幅と高さは xml ファイルに記載されています。私が欲しいのは、ボタンを押すとビデオビューが全画面表示になり、戻るボタンを押すとビデオビューが言及されたサイズに戻ることです。助けてください?

4

12 に答える 12

40

このようにフルスクリーンに設定し、

DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
android.widget.LinearLayout.LayoutParams params = (android.widget.LinearLayout.LayoutParams) videoView.getLayoutParams();
params.width = metrics.widthPixels;
params.height = metrics.heightPixels;
params.leftMargin = 0;
videoView.setLayoutParams(params);

そして、元のサイズに戻ります。

DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
android.widget.LinearLayout.LayoutParams params = (android.widget.LinearLayout.LayoutParams) videoView.getLayoutParams();
params.width = (int)(300*metrics.density);
params.height = (int)(250*metrics.density);
params.leftMargin = 30;
videoView.setLayoutParams(params);
于 2012-07-03T12:27:42.153 に答える
25

私はこのようにしました:

これらの参照スクリーン ショットを確認してください。

ここに画像の説明を入力

クラスFullScreenVideoView.javaを追加します。

import android.content.Context;
import android.util.AttributeSet;
import android.widget.VideoView;

public class FullScreenVideoView extends VideoView {
    public FullScreenVideoView(Context context) {
        super(context);
    }

    public FullScreenVideoView(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    public FullScreenVideoView(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
    }

    @Override
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec){
        super.onMeasure(widthMeasureSpec, heightMeasureSpec);
        setMeasuredDimension(widthMeasureSpec, heightMeasureSpec);
    }
}

xmlでバインドする方法:

<FrameLayout
   android:id="@+id/secondMedia"
   android:layout_width="match_parent"
   android:layout_height="match_parent">

     <com.my.package.customview.FullScreenVideoView
           android:layout_width="match_parent"
           android:layout_height="match_parent" 
           android:id="@+id/fullScreenVideoView"/>

</FrameLayout>

これがあなたを助けることを願っています。

于 2016-06-14T06:22:11.043 に答える
15

最初の方法

そのアクティビティのビデオをフルスクリーンで開きたい場合は、マニフェストでテーマ属性を設定する必要があります。この値を設定します

android:theme="@android:style/Theme.NoTitleBar.Fullscreen"

ここでプログラムでテーマを変更します

2番目の方法

以下のような別の fullscreen.xml を作成しsetContentView(R.layout.fullscreen)、ボタンをクリックします

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >

    <VideoView android:id="@+id/myvideoview"
        android:layout_width="fill_parent"
        android:layout_alignParentRight="true"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:layout_alignParentBottom="true"
        android:layout_height="fill_parent">
    </VideoView>

</RelativeLayout>
于 2014-10-21T08:07:42.697 に答える
9

ボタンをクリックすると、native video playerで開きますfull screen

Intent intent = new Intent(Intent.ACTION_VIEW );
intent.setDataAndType(Uri.parse(path), "video/*");
startActivity(intent);
于 2012-07-03T12:26:12.473 に答える
2

以下のコードは機能しました。

    getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);

videoView.start() を呼び出す前に、このコードを追加します。これにより、ほとんどの場合、ビデオ アクティビティはフル スクリーン モードで実行されます。ただし、タイトル バーがまだ表示されている場合は、マニフェストのテーマをこれに変更してください。

    android:theme="@style/Theme.AppCompat.NoActionBar">
于 2019-09-08T06:59:26.940 に答える
1

2 つの別個のアクティビティを作成することで実現できます。最初のアクティビティが halfScreen アクティビティであるとします。このアクティビティでは、ビデオ ビューのサイズが小さくなります。フルスクリーンビデオのボタンをクリックすると、別のアクティビティ「フルスクリーンアクティビティ」が開始されます。2 番目のアクティビティでは、ビデオ ビューは親レイアウトに一致する必要があります。ハーフ スクリーンで一時停止している場所からフル スクリーンでビデオを開始することもできます。私のコードでは、それを実装しました。フルスクリーン アクティビティのバック プレス。これは私にとってはうまくいきます。あなたにとってもうまくいくことを願っています。

Here is the code
half.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#aa99cc"
    android:orientation="vertical" >

    <VideoView
        android:id="@+id/VideoViewhalf"
        android:layout_width="match_parent"
        android:layout_height="300dp" >
    </VideoView>

   <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal" >

        <Button
            android:id="@+id/btnfullScreen"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="fullscreen" />

        <ProgressBar
            android:id="@+id/progressBar"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />



    </LinearLayout>

</LinearLayout>

HalfScreen activity
public class HalfScreen extends Activity {
    Button btn;
    VideoView videoView = null;
    final int REQUEST_CODE = 5000;
    final String videoToPlay = "http://bffmedia.com/bigbunny.mp4";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.half);
        videoView = (VideoView) findViewById(R.id.VideoViewhalf);
        final ProgressBar progressBar = (ProgressBar) findViewById(R.id.progressBar);
        btn = (Button) findViewById(R.id.btnfullScreen);

        Uri video = Uri.parse(videoToPlay);
        videoView.setVideoURI(video);
        videoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
            public void onPrepared(MediaPlayer mp) {
                progressBar.setVisibility(View.GONE);
                videoView.requestFocus();
                videoView.start();
            }
        });

        btn.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                Intent videointent = new Intent(HalfScreen.this,
                        FullScreen.class);
                videointent.putExtra("currenttime",
                        videoView.getCurrentPosition());
                videointent.putExtra("Url", videoToPlay);
                startActivityForResult(videointent, REQUEST_CODE);

            }
        });
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        if (resultCode == RESULT_OK && requestCode == REQUEST_CODE) {
            if (data.hasExtra("currenttime")) {
                int result = data.getExtras().getInt("currenttime", 0);
                if (result > 0) {
                    if (null != videoView) {
                        videoView.start();
                        videoView.seekTo(result);
                        ProgressBar progressBar = (ProgressBar) findViewById(R.id.progressBar);
                        progressBar.setVisibility(View.VISIBLE);

                    }
                }
            }
        }
    }
}

full.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#ff99cc"
    android:orientation="vertical" >

    <VideoView
        android:id="@+id/VideoViewfull"
        android:layout_width="match_parent"
        android:layout_height="match_parent" >
    </VideoView>

</LinearLayout>

FullScreen Activity

public class FullScreen extends Activity {
    Button btn;
    VideoView videoView = null;
    int currenttime = 0;
    String Url = "";
    private static ProgressDialog progressDialog;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);

        Bundle extras = getIntent().getExtras();
        if (null != extras) {
            currenttime = extras.getInt("currenttime", 0);
            Url = extras.getString("Url");
        }
        setContentView(R.layout.full);
        progressDialog = ProgressDialog.show(this, "", "Loading...", true);
        videoView = (VideoView) findViewById(R.id.VideoViewfull);
        MediaController mediaController = new MediaController(this);
        mediaController.setAnchorView(videoView);
        Uri video = Uri.parse(Url);
        videoView.setMediaController(mediaController);
        videoView.setVideoURI(video);

        videoView.setOnPreparedListener(new OnPreparedListener() {

            public void onPrepared(MediaPlayer arg0) {
                progressDialog.dismiss();
                videoView.start();
                videoView.seekTo(currenttime);
            }
        });
    }

    @Override
    public void finish() {
        Intent data = new Intent();
        data.putExtra("currenttime", videoView.getCurrentPosition());
        setResult(RESULT_OK, data);
        super.finish();
    }
}
于 2014-09-18T11:47:02.777 に答える
0

ここで以下のコードを試してください。

if (!isFullScreen())
        {
            Log.v("Full screen", "-----------is full screen------------");  
            setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); 
            DisplayMetrics displaymetrics = new DisplayMetrics();
              getWindowManager().getDefaultDisplay().getMetrics(displaymetrics);
              int height = displaymetrics.heightPixels;
              int width = displaymetrics.widthPixels;
              android.widget.FrameLayout.LayoutParams params = (android.widget.FrameLayout.LayoutParams) videoSurface.getLayoutParams();
              params.width = width;
              params.height=height;
              params.setMargins(0, 0, 0, 0);

        }
        else{
            Log.v("Full screen", "-----------small screen------------");    

            DisplayMetrics displaymetrics = new DisplayMetrics();
              getWindowManager().getDefaultDisplay().getMetrics(displaymetrics);
              int height = displaymetrics.heightPixels;
              int width = displaymetrics.widthPixels;
              android.widget.FrameLayout.LayoutParams params = (android.widget.FrameLayout.LayoutParams) videoSurface.getLayoutParams();
              params.width = width;
              params.height=height / 3;
              params.setMargins(0, 0, 0, 0);
        }
于 2014-03-12T02:30:07.293 に答える