package com.eighteengray.procamera.widget.dialogfragment;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.drawable.BitmapDrawable;
import android.view.LayoutInflater;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewGroup;
import android.widget.PopupWindow;
import android.widget.SeekBar;
import android.widget.TextView;
import com.eighteengray.procamera.R;
import com.eighteengray.procameralibrary.common.Constants;
import com.eighteengray.procameralibrary.dataevent.BitmapProcess;
import com.eighteengray.procameralibrary.dataevent.CameraConfigure;
import org.greenrobot.eventbus.EventBus;
import java.util.ArrayList;
import java.util.List;
import javax.annotation.Resource;
public class PopupWindowFactory
{
//Flash的弹出框
public static PopupWindow createFlashPopupWindow(Context context)
{
LayoutInflater layoutInflater = LayoutInflater.from(context);
View view = layoutInflater.inflate(R.layout.dialogfragment_flashselect, null);
final PopupWindow popupWindow = new PopupWindow(view, ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT, true);
//点击空白处消失
popupWindow.setTouchable(true);
popupWindow.setOutsideTouchable(true);
popupWindow.setBackgroundDrawable(new BitmapDrawable(context.getResources(), (Bitmap) null));
//点击事件
view.findViewById(R.id.iv_flash_auto).setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
CameraConfigure.Flash flash1 = new CameraConfigure.Flash();
flash1.setFlash(Constants.FLASH_AUTO);
EventBus.getDefault().post(flash1);
popupWindow.dismiss();
}
});
view.findViewById(R.id.iv_flash_on).setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
CameraConfigure.Flash flash2 = new CameraConfigure.Flash();
flash2.setFlash(Constants.FLASH_ON);
EventBus.getDefault().post(flash2);
popupWindow.dismiss();
}
});
view.findViewById(R.id.iv_flash_off).setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
CameraConfigure.Flash flash3 = new CameraConfigure.Flash();
flash3.setFlash(Constants.FLASH_OFF);
EventBus.getDefault().post(flash3);
popupWindow.dismiss();
}
});
view.findViewById(R.id.iv_flash_flare).setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
CameraConfigure.Flash flash4 = new CameraConfigure.Flash();
flash4.setFlash(Constants.FLASH_FLARE);
EventBus.getDefault().post(flash4);
popupWindow.dismiss();
}
});
return popupWindow;
}
//Ratio的弹出框
public static PopupWindow createRatioPopupWindow(Context context)
{
LayoutInflater layoutInflater = LayoutInflater.from(context);
View view = layoutInflater.inflate(R.layout.dialogfragment_ratioselect, null);
final PopupWindow popupWindow = new PopupWindow(view, ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT, true);
//点击空白处消失
popupWindow.setTouchable(true);
popupWindow.setOutsideTouchable(true);
popupWindow.setBackgroundDrawable(new BitmapDrawable(context.getResources(), (Bitmap) null));
//点击事件
view.findViewById(R.id.ll_ratio_normal).setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
CameraConfigure.Ratio ratio1 = new CameraConfigure.Ratio();
ratio1.setRatio(Constants.RATIO_NORMAL);
EventBus.getDefault().post(ratio1);
popupWindow.dismiss();
}
});
view.findViewById(R.id.ll_ratio_square).setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
CameraConfigure.Ratio ratio2 = new CameraConfigure.Ratio();
ratio2.setRatio(Constants.RATIO_SQUARE);
EventBus.getDefault().post(ratio2);
popupWindow. dismiss();
}
});
view.findViewById(R.id.ll_ratio_4v3).setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
CameraConfigure.Ratio ratio3 = new CameraConfigure.Ratio();
ratio3.setRatio(Constants.RATIO_4V3);
EventBus.getDefault().post(ratio3);
popupWindow.dismiss();
}
});
view.findViewById(R.id.ll_ratio_16v9).setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
CameraConfigure.Ratio ratio4 = new CameraConfigure.Ratio();
ratio4.setRatio(Constants.RATIO_16V9);
EventBus.getDefault().post(ratio4);
popupWindow.dismiss();
}
});
return popupWindow;
}
//图像处理中,对比度弹出框
public static PopupWindow createContrastPopupWindow(final Context context)
{
LayoutInflater inflater = LayoutInflater.from(context);
View popView = inflater.inflate(R.layout.popupwindow_strength, null);
final SeekBar seekBarSaturation = (SeekBar) popView.findViewById(R.id.seekBarSaturation);
final SeekBar seekBarDuibidu = (SeekBar) popView.findViewById(R.id.seekBarDuibidu);
final SeekBar seekBarLight = (SeekBar) popView.findViewById(R.id.seekBarLight);
TextView tv_baohedu_strength = (TextView) popView.findViewById(R.id.tv_baohedu_strength);
TextView tv_duibidu_strength = (TextView) popView.findViewById(R.id.tv_duibidu_strength);
TextView tv_liangdu_strength = (TextView) popView.findViewById(R.id.tv_liangdu_strength);
final List<TextView> textViewList = new ArrayList<>();
textViewList.add(tv_baohedu_strength);
textViewList.add(tv_duibidu_strength);
textViewList.add(tv_liangdu_strength);
tv_baohedu_strength.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
seekBarSaturation.setVisibility(View.VISIBLE);
seekBarDuibidu.setVisibility(View.GONE);
seekBarLight.setVisibility(View.GONE);
updateTextView(textViewList, 0, context);
}
});
tv_duibidu_strength.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
seekBarSaturation.setVisibility(View.GONE);
seekBarDuibidu.setVisibility(View.VISIBLE);
seekBarLight.setVisibility(View.GONE);
updateTextView(textViewList, 1, context);
}
});
tv_liangdu_strength.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
seekBarSaturation.setVisibility(View.GONE);
seekBarDuibidu.setVisibility(View.GONE);
seekBarLight.setVisibility(View.VISIBLE);
updateTextView(textViewList, 2, context);
}
});
seekBarSaturation.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener()
{
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser)
{
BitmapProcess.ContrastEvent contrastEvent = new BitmapProcess.ContrastEvent();
contrastEvent.setSeekBarNum(0);
contrastEvent.setProgress(progress);
EventBus.getDefault().post(contrastEvent);
}
@Override
public void onStartTrackingTouch(SeekBar seekBar)
{
}
@Override
public void onStopTrackingTouch(SeekBar seekBar)
{
}
});
seekBarDuibidu.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener()
{
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser)
{
BitmapProcess.ContrastEvent contrastEvent = new BitmapProcess.ContrastEvent();
contrastEvent.setSeekBarNum(1);
contrastEvent.setProgress(progress);
EventBus.getDefault().post(contrastEvent);
}
@Override
public void onStartTrackingTouch(SeekBar seekBar)
{
}
@Override
public void onStopTrackingTouch(SeekBar seekBar)
{
}
});
seekBarLight.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener()
{
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser)
{
BitmapProcess.ContrastEvent contrastEvent = new BitmapProcess.ContrastEvent();
contrastEvent.setSeekBarNum(2);
contrastEvent.setProgress(progress);
EventBus.getDefault().post(contrastEvent);
}
@Override
public void onStartTrackingTouch(SeekBar seekBar)
{
}
@Override
public void onStopTrackingTouch(SeekBar seekBar)
{
}
});
popView.bringToFront();
final PopupWindow popupWindow = new PopupWindow(popView, ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
popupWindow.setFocusable(true);
popupWindow.setTouchable(true);
popupWindow.setOutsideTouchable(true);
popupWindow.setBackgroundDrawable(new BitmapDrawable());
popupWindow.setTouchInterceptor(new View.OnTouchListener()
{
@Override
public boolean onTouch(View v, MotionEvent event)
{
if (event.getAction() == MotionEvent.ACTION_OUTSIDE)
{
popupWindow.dismiss();
return true;
}
return false;
}
});
return popupWindow;
}
private static void updateTextView(List<TextView>textViewList, int current, Context context)
{
for(int i=0;i<textViewList.size();i++)
{
TextView currentTextView = textViewList.get(i);
if(current == i)
{
currentTextView.setTextColor(context.getResources().getColor(R.color.accent));
}
else
{
currentTextView.setTextColor(context.getResources().getColor(R.color.text));
}
}
}
}