|
|
http://www.cnblogs.com/top5/archive/2011/01/19/1939248.html
package com.lhw.surface;
import java.io.File;
import android.app.Activity;
import android.media.AudioManager;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.os.Environment;
import android.util.Log;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import android.widget.ImageView;
import android.widget.RelativeLayout;
public class MainActivity extends Activity implements View.OnClickListener{
private static final String TAG = "MainActivity";
private static final String BASE_PATH = Environment.getExternalStorageDirectory().getPath() + File.separator;
private SurfaceView sufBigger;
private SurfaceView sufSmaller;
private RelativeLayout.LayoutParams paramsBigger;
private RelativeLayout.LayoutParams paramsSmaller;
private RelativeLayout.LayoutParams paramsChange;
private RelativeLayout layoutMain;
private RelativeLayout layoutPan;
private boolean changed = false;
private MediaPlayer mpSmaller;
private MediaPlayer mpBigger;
private ImageView ivChange;
@Override
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
this.requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.main);
layoutMain = (RelativeLayout) findViewById(R.id.layoutMain);
layoutPan = (RelativeLayout) findViewById(R.id.layoutPan);
paramsBigger = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.FILL_PARENT, RelativeLayout.LayoutParams.FILL_PARENT);
paramsSmaller = new RelativeLayout.LayoutParams(200, 200);
paramsSmaller.addRule(RelativeLayout.ALIGN_PARENT_RIGHT, RelativeLayout.TRUE);
paramsSmaller.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM, RelativeLayout.TRUE);
paramsChange = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
initSuf();
layoutPan.addView(sufSmaller, paramsSmaller);
layoutMain.addView(sufBigger, paramsBigger);
//sufSmaller.setBackgroundResource(R.drawable.b);
ivChange = new ImageView(this);
ivChange.setImageResource(R.drawable.change);
RelativeLayout.LayoutParams ivChangeParams = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
layoutPan.addView(ivChange, ivChangeParams);
ivChange.setOnClickListener(this);
}
public void onClick(View v) {
mpBigger.release();
mpSmaller.release();
initSuf();
if(changed) {
System.out.println("" + sufSmaller + "-"+ layoutMain);
layoutMain.removeView(sufSmaller);
layoutPan.removeView(sufBigger);
layoutMain.addView(sufBigger, paramsBigger);
layoutPan.addView(sufSmaller, paramsSmaller);
} else {
layoutMain.removeView(sufBigger);
layoutPan.removeView(sufSmaller);
layoutMain.addView(sufSmaller, paramsBigger);
layoutPan.addView(sufBigger, paramsSmaller);
}
layoutPan.removeView(ivChange);
layoutPan.addView(ivChange, paramsChange);
layoutPan.bringToFront();
changed = !changed;
}
private void initSuf() {
mpSmaller = new MediaPlayer();
mpBigger = new MediaPlayer();
if(sufBigger != null) {
sufBigger.destroyDrawingCache();
}
if(sufSmaller != null) {
sufSmaller.destroyDrawingCache();
}
//sufBigger = (SurfaceView) findViewById(R.id.sufBigger);
sufBigger = new SurfaceView(this);
//sufSmaller = (SurfaceView) findViewById(R.id.sufSmaller);
sufSmaller = new SurfaceView(this);
sufBigger.getHolder().setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
sufSmaller.getHolder().setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
sufBigger.getHolder().addCallback(new SurfaceHolder.Callback() {
@Override
public void surfaceChanged(SurfaceHolder holder, int format,
int width, int height) {
}
@Override
public void surfaceCreated(SurfaceHolder holder) {
try {
mpBigger.setDataSource(BASE_PATH + "pianai.mp4");
mpBigger.setAudioStreamType(AudioManager.STREAM_MUSIC);
mpBigger.setDisplay(sufBigger.getHolder());
mpBigger.prepare();
mpBigger.start();
} catch(Exception e) {
Log.e(TAG, e.getMessage(), e);
}
}
@Override
public void surfaceDestroyed(SurfaceHolder holder) {
}
});
sufSmaller.getHolder().addCallback(new SurfaceHolder.Callback() {
@Override
public void surfaceChanged(SurfaceHolder holder, int format,
int width, int height) {
}
@Override
public void surfaceCreated(SurfaceHolder holder) {
try {
mpSmaller.setDataSource(BASE_PATH + "c.mp4");
mpSmaller.setAudioStreamType(AudioManager.STREAM_MUSIC);
mpSmaller.setDisplay(sufSmaller.getHolder());
mpSmaller.prepare();
mpSmaller.start();
} catch (Exception e) {
Log.e(TAG, e.getMessage(), e);
}
}
@Override
public void surfaceDestroyed(SurfaceHolder holder) {
}
});
}
}
==========================================
package com.lhw.surface;
import java.io.File;
import android.app.Activity;
import android.media.AudioManager;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.os.Environment;
import android.util.Log;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import android.widget.ImageView;
import android.widget.RelativeLayout;
public class MainActivity extends Activity implements View.OnClickListener{
private static final String TAG = "MainActivity";
private static final String BASE_PATH = Environment.getExternalStorageDirectory().getPath() + File.separator + "download" + File.separator;
private SurfaceView sufBigger;
private SurfaceView sufSmaller;
private RelativeLayout.LayoutParams paramsBigger;
private RelativeLayout.LayoutParams paramsSmaller;
//private RelativeLayout.LayoutParams paramsChange;
private RelativeLayout layoutMain;
private boolean changed = false;
private MediaPlayer mpSmaller;
private MediaPlayer mpBigger;
private boolean isInit = true;
private ImageView ivChange;
@Override
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
this.requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.main);
layoutMain = (RelativeLayout) findViewById(R.id.layoutMain);
paramsBigger = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.FILL_PARENT, RelativeLayout.LayoutParams.FILL_PARENT);
paramsSmaller = new RelativeLayout.LayoutParams(200, 200);
paramsSmaller.addRule(RelativeLayout.ALIGN_PARENT_RIGHT, RelativeLayout.TRUE);
paramsSmaller.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM, RelativeLayout.TRUE);
initSuf();
layoutMain.addView(sufSmaller, paramsSmaller);
layoutMain.addView(sufBigger, paramsBigger);
layoutMain.setOnClickListener(this);
}
public void onClick(View v) {
mpBigger.release();
mpSmaller.release();
initSuf();
isInit = false;
layoutMain.removeAllViewsInLayout();
if(changed) {
changed = !changed;
layoutMain.addView(sufSmaller, 0, paramsSmaller);
layoutMain.addView(sufBigger, 1, paramsBigger);
} else {
changed = !changed;
layoutMain.addView(sufSmaller, 0, paramsBigger);
layoutMain.addView(sufBigger, 1, paramsSmaller);
}
}
private void initSuf() {
mpSmaller = new MediaPlayer();
mpBigger = new MediaPlayer();
if(sufBigger != null) {
sufBigger.destroyDrawingCache();
}
if(sufSmaller != null) {
sufSmaller.destroyDrawingCache();
}
sufBigger = new SurfaceView(this);
sufSmaller = new SurfaceView(this);
sufBigger.getHolder().setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
sufSmaller.getHolder().setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
sufBigger.getHolder().addCallback(new SurfaceHolder.Callback() {
@Override
public void surfaceChanged(SurfaceHolder holder, int format,
int width, int height) {
}
@Override
public void surfaceCreated(SurfaceHolder holder) {
try {
System.out.println("A");
mpBigger.setDataSource(BASE_PATH + "pianai.mp4");
mpBigger.setAudioStreamType(AudioManager.STREAM_MUSIC);
mpBigger.setDisplay(sufBigger.getHolder());
mpBigger.prepare();
mpBigger.start();
if(isInit || !changed) {
sufSmaller.setZOrderMediaOverlay(true);
} else {
sufBigger.setZOrderMediaOverlay(true);
}
} catch(Exception e) {
Log.e(TAG, e.getMessage(), e);
}
}
@Override
public void surfaceDestroyed(SurfaceHolder holder) {
}
});
sufSmaller.getHolder().addCallback(new SurfaceHolder.Callback() {
@Override
public void surfaceChanged(SurfaceHolder holder, int format,
int width, int height) {
}
@Override
public void surfaceCreated(SurfaceHolder holder) {
try {
mpSmaller.setDataSource(BASE_PATH + "c.mp4");
mpSmaller.setAudioStreamType(AudioManager.STREAM_MUSIC);
mpSmaller.setDisplay(sufSmaller.getHolder());
mpSmaller.prepare();
mpSmaller.start();
if(isInit || !changed) {
sufSmaller.setZOrderMediaOverlay(true);
} else {
sufBigger.setZOrderMediaOverlay(true);
}
} catch (Exception e) {
Log.e(TAG, e.getMessage(), e);
}
}
@Override
public void surfaceDestroyed(SurfaceHolder holder) {
}
});
}
}
============================ |
|