透過兩個按鈕配合FrameLayout操控VideoView大小與位置
自己撰寫透過兩個FrameLayout和兩個按鈕來操控VideoView大小與位置,歡迎有興趣的同好一起來C/P一下。
package com.example.framelayout_2_videoview;
import android.net.Uri; import android.os.Bundle; import android.app.Activity; import android.view.Menu;
/////////////////////////////////////// import android.view.View; import android.util.AttributeSet; import android.util.DisplayMetrics; import android.util.Log; import android.view.Window; import android.view.WindowManager; import android.widget.AbsoluteLayout; import android.widget.Button; import android.widget.TextView; import android.view.*; import android.view.View.*; import android.widget.*; import android.view.ViewGroup.MarginLayoutParams; import android.app.ActionBar.LayoutParams; import android.content.Context;
public class MainActivity extends Activity { Button[] bt; FrameLayout FrameLayout2; FrameLayout FrameLayout1; DisplayMetrics metrics; VideoView VideoView1; int width,height; int m_intswich; int m_intmove; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); ///////////////////////////////////////// requestWindowFeature(Window.FEATURE_NO_TITLE); //全螢幕設定 getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); metrics = new DisplayMetrics();//抓取螢幕大小 getWindowManager().getDefaultDisplay().getMetrics(metrics); ///////////////////////////////////////// FrameLayout1 = new FrameLayout(this); FrameLayout.LayoutParams lparam1 = new FrameLayout.LayoutParams(metrics.widthPixels,metrics.heightPixels); FrameLayout1.setLayoutParams(lparam1); this.setContentView(FrameLayout1); //////////////////////////////////////// bt=new Button[2]; bt[0]=new Button(this); bt[0].setText("0"); bt[0].setWidth(metrics.widthPixels/2); bt[0].setHeight(metrics.heightPixels/2); bt[0].setOnClickListener(new ButListener()); FrameLayout.LayoutParams layoutParams0 = new FrameLayout.LayoutParams(metrics.widthPixels/2, metrics.heightPixels/2); layoutParams0.gravity = Gravity.LEFT|Gravity.TOP; layoutParams0.leftMargin = 0; layoutParams0.topMargin = 0; bt[0].setLayoutParams(layoutParams0); FrameLayout1.addView(bt[0]);
bt[1]=new Button(this); bt[1].setText("1"); bt[1].setWidth(metrics.widthPixels/2); bt[1].setHeight(metrics.heightPixels/2); bt[1].setOnClickListener(new ButListener()); FrameLayout.LayoutParams layoutParams1 = new FrameLayout.LayoutParams(metrics.widthPixels/2, metrics.heightPixels/2); layoutParams1.gravity = Gravity.LEFT|Gravity.TOP; layoutParams1.leftMargin = metrics.widthPixels/2; layoutParams1.topMargin = 0; bt[1].setLayoutParams(layoutParams1); FrameLayout1.addView(bt[1]); //////////////////////////////////////////// FrameLayout2=new FrameLayout(this); FrameLayout.LayoutParams lparam2 = new FrameLayout.LayoutParams(metrics.widthPixels,metrics.heightPixels/2); lparam2.gravity = Gravity.LEFT|Gravity.TOP; lparam2.leftMargin = 0;//X lparam2.topMargin = metrics.heightPixels/2;//Y FrameLayout2.setLayoutParams(lparam2); /////////////////////////////////// VideoView1=new VideoView(this){ @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { //setMeasuredDimension(width,height); //width = getDefaultSize(width, widthMeasureSpec); //height = getDefaultSize(height, heightMeasureSpec); setMeasuredDimension(width, height); } }; //////////////////////////////////// VideoView1.setVideoURI(Uri.parse("/sdcard/jash.mp4")); MediaController mediaController = new MediaController(this); VideoView1.setMediaController(mediaController); //////////////////////////////////////////////////// FrameLayout.LayoutParams layoutParams_VideoView = new FrameLayout.LayoutParams(metrics.widthPixels/2, metrics.heightPixels/2); layoutParams_VideoView.gravity = Gravity.LEFT|Gravity.TOP; layoutParams_VideoView.leftMargin = 0;//X layoutParams_VideoView.topMargin = 0;//Y VideoView1.setLayoutParams(layoutParams_VideoView); width=metrics.widthPixels/2; height=metrics.heightPixels/2; VideoView1.getHolder().setFixedSize(width, height); VideoView1.requestLayout(); VideoView1.invalidate(); ///////////////////////////////////////////////// FrameLayout2.addView(VideoView1); FrameLayout2.setVisibility(View.VISIBLE);//show VideoView1.start(); ///////////////////////////////////////////////// FrameLayout1.addView(FrameLayout2); m_intswich=0; m_intmove=0; }
@Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } class ButListener implements OnClickListener { public void onClick(View v) { if(v==bt[0]) { bt[0].setText("0 clicked..."); bt[1].setText("1"); if(m_intmove==0) { bt[0].setWidth(metrics.widthPixels/2); bt[0].setHeight(metrics.heightPixels/2); bt[0].setOnClickListener(new ButListener()); FrameLayout.LayoutParams layoutParams0 = new FrameLayout.LayoutParams(metrics.widthPixels/2, metrics.heightPixels/2); layoutParams0.gravity = Gravity.LEFT|Gravity.TOP; layoutParams0.leftMargin = 0; layoutParams0.topMargin = 0; bt[0].setLayoutParams(layoutParams0); bt[1].setWidth(metrics.widthPixels/2); bt[1].setHeight(metrics.heightPixels/2); bt[1].setOnClickListener(new ButListener()); FrameLayout.LayoutParams layoutParams1 = new FrameLayout.LayoutParams(metrics.widthPixels/2, metrics.heightPixels/2); layoutParams1.gravity = Gravity.LEFT|Gravity.TOP; layoutParams1.leftMargin = metrics.widthPixels/2; layoutParams1.topMargin = 0; bt[1].setLayoutParams(layoutParams1); FrameLayout.LayoutParams lparam2 = new FrameLayout.LayoutParams(metrics.widthPixels,metrics.heightPixels/2); lparam2.gravity = Gravity.LEFT|Gravity.TOP; lparam2.leftMargin = 0;//X lparam2.topMargin = metrics.heightPixels/2;//Y FrameLayout2.setLayoutParams(lparam2); m_intmove++; } else { m_intmove=0; bt[0].setWidth(metrics.widthPixels/2); bt[0].setHeight(metrics.heightPixels/2); bt[0].setOnClickListener(new ButListener()); FrameLayout.LayoutParams layoutParams0 = new FrameLayout.LayoutParams(metrics.widthPixels/2, metrics.heightPixels/2); layoutParams0.gravity = Gravity.LEFT|Gravity.TOP; layoutParams0.leftMargin = 0;//X layoutParams0.topMargin = metrics.heightPixels/2;//y bt[0].setLayoutParams(layoutParams0); bt[1].setWidth(metrics.widthPixels/2); bt[1].setHeight(metrics.heightPixels/2); bt[1].setOnClickListener(new ButListener()); FrameLayout.LayoutParams layoutParams1 = new FrameLayout.LayoutParams(metrics.widthPixels/2, metrics.heightPixels/2); layoutParams1.gravity = Gravity.LEFT|Gravity.TOP; layoutParams1.leftMargin = metrics.widthPixels/2;//x layoutParams1.topMargin = metrics.heightPixels/2;//y bt[1].setLayoutParams(layoutParams1); FrameLayout.LayoutParams lparam2 = new FrameLayout.LayoutParams(metrics.widthPixels,metrics.heightPixels/2); lparam2.gravity = Gravity.LEFT|Gravity.TOP; lparam2.leftMargin = 0;//X lparam2.topMargin = 0;//Y FrameLayout2.setLayoutParams(lparam2); } FrameLayout.LayoutParams layoutParams_VideoView = new FrameLayout.LayoutParams(metrics.widthPixels, metrics.heightPixels/2); layoutParams_VideoView.gravity = Gravity.LEFT|Gravity.TOP; layoutParams_VideoView.leftMargin = 0;//X layoutParams_VideoView.topMargin = 0;//Y VideoView1.setLayoutParams(layoutParams_VideoView); width=metrics.widthPixels; height=metrics.heightPixels/2; VideoView1.getHolder().setFixedSize(width, height); VideoView1.requestLayout(); VideoView1.invalidate(); } if(v==bt[1]) { bt[1].setText("1 clicked..."); bt[0].setText("0"); FrameLayout.LayoutParams layoutParams_VideoView = new FrameLayout.LayoutParams(metrics.widthPixels/2, metrics.heightPixels/2); layoutParams_VideoView.gravity = Gravity.LEFT|Gravity.TOP; if(m_intswich==0) { layoutParams_VideoView.leftMargin = 0;//X layoutParams_VideoView.topMargin = 0;//Y m_intswich++; } else { m_intswich=0; layoutParams_VideoView.leftMargin = metrics.widthPixels/2;//X layoutParams_VideoView.topMargin = 0;//Y } VideoView1.setLayoutParams(layoutParams_VideoView); width=metrics.widthPixels/2; height=metrics.heightPixels/2; VideoView1.getHolder().setFixedSize(width, height); VideoView1.requestLayout(); VideoView1.invalidate(); } }
} }
|
沒有留言:
張貼留言