package us.pinguo.edit.sdk.view;
import android.content.Context;
import android.graphics.Bitmap;
import android.util.AttributeSet;
import android.view.LayoutInflater;
import android.view.MotionEvent;
import android.view.View;
import android.view.animation.AlphaAnimation;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;
import us.pinguo.androidsdk.PGGLSurfaceView;
import us.pinguo.edit.sdk.R;
import us.pinguo.edit.sdk.base.view.IPGEditCompareGLSurfaceView;
import us.pinguo.edit.sdk.widget.ImageLoaderView;
/**
* Created by hlf on 14-4-29.
*/
public class PGEditCompareGLSurfaceView extends RelativeLayout
implements View.OnTouchListener, IPGEditCompareGLSurfaceView {
private LinearLayout layout;
private PGGLSurfaceView mPGGLSurfaceView;
private ImageLoaderView mImageView;
private AlphaAnimation mHideAnimator;
private AlphaAnimation mShowAnimator;
private boolean hasTouch = true;
private boolean mImageViewIsHide;
public PGEditCompareGLSurfaceView(Context context) {
super(context);
init(context);
}
public PGEditCompareGLSurfaceView(Context context, AttributeSet attrs) {
super(context, attrs);
init(context);
}
private void init(Context context) {
LayoutInflater.from(context).inflate(R.layout.pg_sdk_edit_compare_pgglsurfaceview, this, true);
mPGGLSurfaceView = (PGGLSurfaceView) findViewById(R.id.glsurfaceview);
mImageView = (ImageLoaderView) findViewById(R.id.compare_imageview);
mHideAnimator = new AlphaAnimation(0f, 0f);
mHideAnimator.setDuration(0);
mHideAnimator.setFillAfter(true);
mHideAnimator.setFillBefore(false);
mShowAnimator = new AlphaAnimation(1f, 1f);
mShowAnimator.setDuration(0);
mShowAnimator.setFillAfter(true);
mShowAnimator.setFillBefore(false);
setOnTouchListener(this);
}
public PGGLSurfaceView getPGGLSurfaceView() {
return mPGGLSurfaceView;
}
public ImageView getImageView() {
return mImageView;
}
public void setImageViewPhotoPath(String comparePhotoPath) {
mImageView.setImageUrl("file://" + comparePhotoPath);
}
public void setImageViewPhoto(Bitmap bitmap) {
mImageView.setImageBitmap(bitmap);
}
public void hidePGGLSurfaceView() {
AlphaAnimation alphaAnimation = new AlphaAnimation(1f, 0f);
alphaAnimation.setDuration(0);
alphaAnimation.setFillAfter(true);
alphaAnimation.setFillBefore(false);
mPGGLSurfaceView.startAnimation(alphaAnimation);
}
//
public void hideCompareView() {
mImageView.setVisibility(View.INVISIBLE);
}
public void showCompareView() {
mImageView.setVisibility(View.VISIBLE);
}
public void showPGGLSurfaceView() {
AlphaAnimation alphaAnimation = new AlphaAnimation(0f, 1f);
alphaAnimation.setDuration(0);
alphaAnimation.setFillAfter(true);
alphaAnimation.setFillBefore(false);
mPGGLSurfaceView.startAnimation(alphaAnimation);
}
public void openTouch() {
hasTouch = true;
}
public void closeTouch() {
hasTouch = false;
}
public void setGLSurfaceViewLayoutParam(int width, int height) {
LayoutParams layoutParams = new LayoutParams(width, height);
layoutParams.addRule(RelativeLayout.CENTER_IN_PARENT);
mPGGLSurfaceView.setLayoutParams(layoutParams);
}
public void setImageViewLayoutParam(int width, int height) {
LayoutParams layoutParams = new LayoutParams(width, height);
layoutParams.addRule(RelativeLayout.CENTER_IN_PARENT);
mImageView.setLayoutParams(layoutParams);
}
public void setGlSurfaceViewDownHideTouchListener() {
setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View view, MotionEvent motionEvent) {
switch (motionEvent.getAction()) {
case MotionEvent.ACTION_DOWN:
mPGGLSurfaceView.startAnimation(mHideAnimator);
break;
case MotionEvent.ACTION_UP:
mPGGLSurfaceView.startAnimation(mShowAnimator);
break;
default:
break;
}
return true;
}
});
}
public void setStopTouchListener() {
setOnTouchListener(null);
}
public void setGlSurfaceViewDownShowTouchListener() {
setOnTouchListener(this);
}
@Override
public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
if (hasTouch) {
mPGGLSurfaceView.startAnimation(mShowAnimator);
mImageView.setVisibility(View.GONE);
}
break;
case MotionEvent.ACTION_UP:
if (hasTouch) {
mPGGLSurfaceView.startAnimation(mHideAnimator);
mImageView.setVisibility(View.VISIBLE);
}
break;
default:
break;
}
return true;
}
}