SurfaceRenderView.java 2.4 KB

package com.wd.player.widget;

import android.content.Context;
import android.util.AttributeSet;
import android.view.Surface;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
import android.view.View;

/**
 * 视图
 * 
 * @author wd
 */
public class SurfaceRenderView extends SurfaceView implements IRenderView, SurfaceHolder.Callback {

    private IRenderCallback mRenderCallback;

    /**
     * 构造器
     * 
     * @param context
     */
    public SurfaceRenderView(Context context) {
        super(context);
        init(context);
    }

    /**
     * 构造器
     * 
     * @param context
     * @param attrs
     */
    public SurfaceRenderView(Context context, AttributeSet attrs) {
        super(context, attrs);
        init(context);
    }

    /**
     * 构造器
     *
     * @param context
     * @param attrs
     * @param defStyleAttr
     */
    public SurfaceRenderView(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
        init(context);
    }

    private void init(Context context) {
//        Log.e("阿里播放器绘制视图--》", "init:   SurfaceRenderView");
        getHolder().addCallback(this);
    }

    @Override
    public void addRenderCallback(IRenderCallback renderCallback) {
        this.mRenderCallback = renderCallback;
    }

    @Override
    public View getView() {
        return this;
    }

    @Override
    public void surfaceCreated(SurfaceHolder surfaceHolder) {
//      Log.e("阿里播放器绘制视图--》", "SurfaceRenderView ==>onSurfaceCreate  ");
        if (mRenderCallback != null) {
            mRenderCallback.onSurfaceCreate(surfaceHolder.getSurface());
        }
    }

    @Override
    public void surfaceChanged(SurfaceHolder surfaceHolder, int format, int width, int height) {
//        Log.e("阿里播放器绘制视图--》", "SurfaceRenderView ==>surfaceChanged  ");
        if (mRenderCallback != null) {
            mRenderCallback.onSurfaceChanged(width, height);
        }
    }

    @Override
    public void surfaceDestroyed(SurfaceHolder surfaceHolder) {
//        Log.e("阿里播放器绘制视图--》", "SurfaceRenderView ==>surfaceDestroyed  ");
        Surface surface = surfaceHolder.getSurface();
        if (surface != null) {
            surface.release();
        }
        if (mRenderCallback != null) {
            mRenderCallback.onSurfaceDestroyed();
        }
    }
}