package ezviz.ezopensdkcommon.common;
|
|
import android.content.Context;
|
import android.graphics.Color;
|
import android.graphics.drawable.Drawable;
|
import android.text.TextUtils;
|
import android.text.TextUtils.TruncateAt;
|
import android.util.AttributeSet;
|
import android.util.TypedValue;
|
import android.view.Gravity;
|
import android.view.View;
|
import android.view.ViewGroup;
|
import android.widget.Button;
|
import android.widget.CompoundButton;
|
import android.widget.CompoundButton.OnCheckedChangeListener;
|
import android.widget.FrameLayout;
|
import android.widget.ImageView;
|
import android.widget.LinearLayout;
|
import android.widget.RelativeLayout;
|
import android.widget.TextView;
|
|
public class TitleBar extends FrameLayout {
|
|
private Drawable mBackground;
|
private Drawable mBackButton;
|
private int mTextColor;
|
|
private Context mContext;
|
private ViewGroup mTitleLayout;
|
private TextView mTextView;
|
private View mTitleView;
|
private LinearLayout mLeftLayout;
|
private LinearLayout mRightLayout;
|
|
private static final int ID_TITLELAYOUT = 1;
|
private static final int ID_TEXTVIEW = 2;
|
private static final int ID_LEFTLAYOUT = 3;
|
private static final int ID_RIGHTLAYOUT = 4;
|
|
public TitleBar(Context context) {
|
this(context, null);
|
}
|
|
public TitleBar(Context context, AttributeSet attrs) {
|
this(context, attrs, 0);
|
}
|
|
public TitleBar(Context context, AttributeSet attrs, int defStyle) {
|
super(context, attrs, defStyle);
|
mContext = getContext();
|
mTextColor = Color.rgb(51, 51, 51);
|
mBackground = Utils.getDrawableFromAssetsFile(mContext, "common_title.9.png");
|
|
Drawable normal = Utils.getDrawableFromAssetsFile(mContext, "common_title_back.png");
|
Drawable pressed = Utils.getDrawableFromAssetsFile(mContext, "common_title_back_sel.png");
|
mBackButton = Utils.newSelector(mContext, normal, pressed, normal, normal);
|
|
init();
|
}
|
|
private void init() {
|
mTitleLayout = new RelativeLayout(mContext);
|
mTitleLayout.setId(ID_TITLELAYOUT);
|
mTitleLayout.setBackgroundDrawable(mBackground);
|
LayoutParams titleLayoutLp = new LayoutParams(LayoutParams.MATCH_PARENT, Utils.dip2px(mContext, 44));
|
this.addView(mTitleLayout, titleLayoutLp);
|
|
mLeftLayout = new LinearLayout(mContext);
|
mLeftLayout.setId(ID_LEFTLAYOUT);
|
RelativeLayout.LayoutParams leftLayoutLp = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
|
leftLayoutLp.addRule(RelativeLayout.ALIGN_PARENT_LEFT);
|
leftLayoutLp.addRule(RelativeLayout.CENTER_VERTICAL);
|
mLeftLayout.setOrientation(LinearLayout.HORIZONTAL);
|
mLeftLayout.setGravity(Gravity.CENTER_VERTICAL);
|
mTitleLayout.addView(mLeftLayout, leftLayoutLp);
|
|
mTextView = new TextView(mContext);
|
mTextView.setId(ID_TEXTVIEW);
|
RelativeLayout.LayoutParams textViewLp = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
|
textViewLp.addRule(RelativeLayout.CENTER_IN_PARENT);
|
mTextView.setEllipsize(TruncateAt.END);
|
mTextView.setMaxWidth(Utils.dip2px(mContext, 200));
|
mTextView.setSingleLine(true);
|
mTextView.setTextColor(mTextColor);
|
mTextView.setTextSize(TypedValue.COMPLEX_UNIT_SP, 20);
|
mTitleLayout.addView(mTextView, textViewLp);
|
|
mRightLayout = new LinearLayout(mContext);
|
mRightLayout.setId(ID_RIGHTLAYOUT);
|
RelativeLayout.LayoutParams rightLayoutLp = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
|
rightLayoutLp.addRule(RelativeLayout.ALIGN_PARENT_RIGHT);
|
rightLayoutLp.addRule(RelativeLayout.CENTER_VERTICAL);
|
mRightLayout.setOrientation(LinearLayout.HORIZONTAL);
|
mRightLayout.setGravity(Gravity.CENTER_VERTICAL);
|
mTitleLayout.addView(mRightLayout, rightLayoutLp);
|
}
|
|
public void setStyle(int textColor, Drawable background, Drawable backButton) {
|
mTextColor = textColor;
|
mBackground = background;
|
if(backButton != null)
|
mBackButton = backButton;
|
mTextView.setTextColor(mTextColor);
|
mTitleLayout.setBackgroundDrawable(mBackground);
|
}
|
|
/**
|
* 设置标题文本
|
*
|
* @param resId
|
*/
|
public TextView setTitle(int resId) {
|
return setTitle(mContext.getText(resId));
|
}
|
|
/**
|
* 设置标题文本
|
*
|
* @param text
|
*/
|
public TextView setTitle(CharSequence text) {
|
mTextView.setText(text);
|
mTextView.setVisibility((TextUtils.isEmpty(text) || mTitleView != null) ? View.GONE : View.VISIBLE);
|
return mTextView;
|
}
|
|
/**
|
* 设置标题控件
|
*
|
* @param
|
*/
|
public View setTitle(View view) {
|
if (mTitleView != null) {
|
mTitleLayout.removeView(mTitleView);
|
}
|
|
if (view != null) {
|
RelativeLayout.LayoutParams layoutParams = null;
|
if (view.getLayoutParams() == null) {
|
layoutParams = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT,
|
RelativeLayout.LayoutParams.WRAP_CONTENT);
|
} else {
|
layoutParams = new RelativeLayout.LayoutParams(view.getLayoutParams());
|
}
|
layoutParams.addRule(RelativeLayout.CENTER_IN_PARENT);
|
mTitleLayout.addView(view, layoutParams);
|
mTextView.setVisibility(View.GONE);
|
} else {
|
mTextView.setVisibility(View.VISIBLE);
|
}
|
mTitleView = view;
|
return view;
|
}
|
|
/**
|
* 设置标题背景颜色
|
*
|
* @param
|
*/
|
public void setBackgroundColor(int color) {
|
mTitleLayout.setBackgroundColor(color);
|
}
|
|
/**
|
* 标题文本点击事件
|
*
|
* @param l
|
*/
|
public void setOnTitleClickListener(OnClickListener l) {
|
mTextView.setOnClickListener(l);
|
}
|
|
/**
|
* 在标题文本侧添加一个按钮
|
*
|
* @param resId
|
* @param l
|
* @return
|
*/
|
public ImageView addTitleButton(int resId, OnClickListener l) {
|
// return addTitleButton(resId, l);
|
ImageView button = new ImageView(mContext);
|
button.setImageResource(resId);
|
button.setOnClickListener(l);
|
|
RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams(
|
RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
|
layoutParams.addRule(RelativeLayout.RIGHT_OF, ID_TEXTVIEW);
|
layoutParams.addRule(RelativeLayout.CENTER_IN_PARENT);
|
|
mTitleLayout.addView(button, layoutParams);
|
|
return button;
|
}
|
|
/**
|
* 在标题文本侧添加一个自定义View
|
*
|
* @param v
|
* @return
|
*/
|
public void addTitleView(View v) {
|
RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams(
|
RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
|
layoutParams.addRule(RelativeLayout.RIGHT_OF, ID_TEXTVIEW);
|
layoutParams.addRule(RelativeLayout.CENTER_VERTICAL);
|
|
mTitleLayout.addView(v, layoutParams);
|
}
|
|
/**
|
* 在标题栏左侧添加一个按钮
|
*
|
* @param resId
|
* @param l
|
* @return
|
*/
|
public Button addLeftButton(int resId, OnClickListener l) {
|
return addLeftButton(getResources().getDrawable(resId), l);
|
}
|
|
/**
|
* 在标题栏左侧添加一个按钮
|
*
|
* @param drawable
|
* @param l
|
* @return
|
*/
|
public Button addLeftButton(Drawable drawable, OnClickListener l) {
|
Button button = new Button(mContext);
|
button.setBackgroundDrawable(drawable);
|
button.setOnClickListener(l);
|
addLeftView(button);
|
return button;
|
}
|
|
/**
|
* 在标题栏左侧添加一个自定义View
|
*
|
* @param v
|
* @return
|
*/
|
public void addLeftView(View v) {
|
LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(Utils.dip2px(mContext, 60), Utils.dip2px(mContext, 44));
|
mLeftLayout.addView(v, 0, layoutParams);
|
}
|
|
/**
|
* 清除在标题栏左侧控件
|
*
|
* @param v
|
* @return
|
*/
|
public void removeLeftView(View v) {
|
mLeftLayout.removeView(v);
|
}
|
|
/**
|
* 清除在标题栏左侧控件
|
*
|
* @return
|
*/
|
public void removeAllLeftView() {
|
mLeftLayout.removeAllViews();
|
}
|
|
/**
|
* 在标题栏左侧添加一个返回按钮
|
*
|
* @param l
|
* @return
|
*/
|
public Button addBackButton(OnClickListener l) {
|
return addLeftButton(mBackButton, l);
|
}
|
|
/**
|
* 在标题栏右侧添加一个按钮
|
*
|
* @param resId
|
* @param l
|
* @return
|
*/
|
public Button addRightButton(int resId, OnClickListener l) {
|
return addRightButton(getResources().getDrawable(resId), l);
|
}
|
|
/**
|
* 在标题栏右侧添加一个按钮
|
*
|
* @param drawable
|
* @param l
|
* @return
|
*/
|
public Button addRightButton(Drawable drawable, OnClickListener l) {
|
Button button = new Button(mContext);
|
button.setBackgroundDrawable(drawable);
|
button.setOnClickListener(l);
|
addRightView(button);
|
return button;
|
}
|
|
/**
|
* 在标题栏右侧添加一个自定义View
|
*
|
* @param v
|
* @return
|
*/
|
public void addRightView(View v) {
|
LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(Utils.dip2px(mContext, 60), Utils.dip2px(mContext, 44));
|
mRightLayout.addView(v, 0, layoutParams);
|
}
|
|
/**
|
* 清除在标题栏右侧控件
|
*
|
* @param v
|
* @return
|
*/
|
public void removeRightView(View v) {
|
mRightLayout.removeView(v);
|
}
|
|
/**
|
* 清除在标题栏右侧控件
|
*
|
* @return
|
*/
|
public void removeAllRightView() {
|
mRightLayout.removeAllViews();
|
}
|
|
/**
|
* 在标题栏右侧添加一个进度条
|
*
|
* @return
|
*/
|
public ImageView addRightProgress() {
|
ImageView view = new ImageView(mContext);
|
view.setImageBitmap(Utils.getImageFromAssetsFile(mContext, "common_title_refresh.png"));
|
addRightView(view);
|
LinearLayout.LayoutParams layoutParams = (LinearLayout.LayoutParams) view.getLayoutParams();
|
layoutParams.rightMargin = Utils.dip2px(mContext, 13);
|
layoutParams.width = Utils.dip2px(mContext, 30);
|
layoutParams.height = Utils.dip2px(mContext, 30);
|
|
return view;
|
}
|
|
/**
|
* 在标题栏右侧添加一个按钮
|
*
|
* @param text
|
* @param l
|
* @return
|
*/
|
public Button addRightTextButton(CharSequence text, OnClickListener l) {
|
Button button = new Button(mContext);
|
Drawable normal = Utils.getDrawableFromAssetsFile(mContext, "tittel_button_bg.9.png");
|
Drawable pressed = Utils.getDrawableFromAssetsFile(mContext, "tittel_button_press_bg.9.png");
|
button.setBackgroundDrawable(Utils.newSelector(mContext, normal, pressed, normal, normal));
|
button.setOnClickListener(l);
|
button.setText(text);
|
button.setGravity(Gravity.CENTER);
|
button.setTextColor(Color.rgb(51, 51, 51));
|
button.setPadding(Utils.dip2px(mContext, 5), 0, Utils.dip2px(mContext, 5), 0);
|
addRightView(button);
|
LinearLayout.LayoutParams layoutParams = (LinearLayout.LayoutParams) button.getLayoutParams();
|
layoutParams.rightMargin = Utils.dip2px(mContext, 15);
|
return button;
|
}
|
|
/**
|
* 在标题栏右侧添加一个可选择文字
|
*
|
* @param text
|
* @param checkedText
|
* @param l
|
* @return
|
*/
|
public CheckTextButton addRightCheckedText(final CharSequence text, final CharSequence checkedText,
|
final OnCheckedChangeListener l) {
|
CheckTextButton view = new CheckTextButton(mContext);
|
int padding = Utils.dip2px(mContext, 5);
|
view.setClickable(true);
|
view.setPadding(padding, Utils.dip2px(mContext, 9), padding, padding);
|
view.setText(text);
|
view.setTextColor(Color.rgb(51, 51, 51));
|
view.setTextSize(TypedValue.COMPLEX_UNIT_SP, 16);
|
view.setOnCheckedChangeListener(new OnCheckedChangeListener() {
|
@Override
|
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
|
buttonView.setText(isChecked ? checkedText : text);
|
if (l != null)
|
l.onCheckedChanged(buttonView, isChecked);
|
}
|
});
|
|
addRightView(view);
|
LinearLayout.LayoutParams layoutParams = (LinearLayout.LayoutParams) view.getLayoutParams();
|
layoutParams.rightMargin = Utils.dip2px(mContext, 15) - padding;
|
return view;
|
}
|
|
public void setBackButton(int resId) {
|
mBackButton = getResources().getDrawable(resId);
|
}
|
}
|