package cn.bidaround.youtui_template;
import cn.bidaround.ytcore.util.Util;
import android.annotation.SuppressLint;
import android.content.Context;
import android.graphics.Color;
import android.graphics.drawable.GradientDrawable;
import android.view.Gravity;
import android.view.MotionEvent;
import android.view.View;
import android.widget.LinearLayout;
import android.widget.SeekBar;
import android.widget.SeekBar.OnSeekBarChangeListener;
import android.widget.TextView;
/**
* 画笔粗细控件
* @author youtui
* @since 2014/12/30
*/
public class ThicknessView extends LinearLayout implements View.OnTouchListener, OnSeekBarChangeListener{
// 自定义的画布绘制矩形控件,根据进度条的大小绘制相应高度的矩形
private ThicknessRectView thicknessRectView;
// 选择进度条
private SeekBar bar;
public ThicknessView(Context context) {
super(context);
init();
}
private void init() {
setOrientation(VERTICAL);
setBackgroundColor(Color.WHITE);
setGravity(Gravity.CENTER);
addView(getTitleView());
addView(getSeekBar());
addView(getThicknessView());
}
// 创建标题控件
private View getTitleView(){
TextView text = new TextView(getContext());
text.setText(getTitleText());
text.setTextSize(20);
text.setTextColor(Color.BLACK);
LayoutParams param = new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT);
param.gravity = Gravity.CENTER;
text.setLayoutParams(param);
text.setPadding(0, getDensity(30), 0, getDensity(30));
text.setGravity(Gravity.CENTER);
return text;
}
// 创建进度条控件
private View getSeekBar(){
bar = new SeekBar(getContext());
bar.setPadding(getDensity(30), getDensity(30), getDensity(30), 0);
bar.setOnSeekBarChangeListener(this);
bar.setOnTouchListener(this);
int[] mColors = new int[]{Color.rgb(48, 172, 218), Color.rgb(48, 172, 218)};
GradientDrawable mgDrawable = new GradientDrawable(GradientDrawable.Orientation.TOP_BOTTOM, mColors);
mgDrawable.setCornerRadius(50);
mgDrawable.setStroke(10, -1);
bar.setProgressDrawable(mgDrawable);
int[] location = new int[2];
bar.getLocationOnScreen(location);
return bar;
}
// 创建自定义绘制控件
private View getThicknessView(){
int[] location = new int[2];
bar.getLocationOnScreen(location);
int y = location[1] + getDensity(60);
thicknessRectView = new ThicknessRectView(getContext(), y);
LayoutParams param = new LayoutParams(LayoutParams.WRAP_CONTENT,getDensity(160));
param.gravity = Gravity.CENTER;
thicknessRectView.setLayoutParams(param);
thicknessRectView.setPadding(0, getDensity(20), 0, 0);
return thicknessRectView;
}
private String getTitleText(){
return getContext().getString(getContext().getResources().getIdentifier("yt_brush", "string", getContext().getPackageName())) +
getContext().getString(getContext().getResources().getIdentifier("yt_thickness", "string", getContext().getPackageName()));
}
private OnSelectListener onSelectListener;
public void setOnSelectListener(OnSelectListener listener){
onSelectListener = listener;
}
public interface OnSelectListener{
public void onSelect(int width);
}
private int getDensity(float value){
return Util.getDensity(getContext(), value);
}
@SuppressLint("ClickableViewAccessibility")
@Override
public boolean onTouch(View view, MotionEvent event) {
if(event.getAction() == MotionEvent.ACTION_UP){
if(onSelectListener != null)
onSelectListener.onSelect(bar.getProgress());
}
return false;
}
@Override
public void onStopTrackingTouch(SeekBar arg0) {
}
@Override
public void onStartTrackingTouch(SeekBar arg0) {
}
@Override
public void onProgressChanged(SeekBar arg0, int value, boolean statue) {
if(thicknessRectView.getCenterX() == 0)
thicknessRectView.setCenterX(getWidth() / 2) ;
if(thicknessRectView != null){
thicknessRectView.refresh(Color.RED, value);
}
}
}