六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 163|回复: 0

http://www.cnblogs.com/top5/archive/2011/01/19/1939248.html

[复制链接]

升级  20%

2

主题

2

主题

2

主题

童生

Rank: 1

积分
10
 楼主| 发表于 2013-2-7 21:21:46 | 显示全部楼层 |阅读模式
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) {

}
        
        });
    }
}

============================
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表