package com.ydl.ydlcommon.view; import android.app.Activity; import android.content.Context; import android.content.res.Resources; import android.content.res.TypedArray; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.Drawable; import android.text.TextUtils; import android.util.AttributeSet; import android.view.Gravity; import android.view.LayoutInflater; import android.view.View; import android.widget.ImageView; import android.widget.RelativeLayout; import android.widget.TextView; import com.ydl.ydlcommon.R; import com.ydl.ydlcommon.utils.bitmap.BitmapUtils; import com.yidianling.common.tools.RxImageTool; /** * 头部title bar * Created by Dog on 2015/6/21. */ public class TitleBar extends RelativeLayout { //非激活时候的图标 Drawable mLeftStartIcon, mLeftEndIcon, mRightStartIcon, mRightEndIcon, mRight; //判断三者是否激活 boolean mIsLeftIconActive = false, mIsTitleIconActive = false, mIsRightIconActive = false; //颜色默认系统黑色 int mTextColor, mSideTextColor; //底部线颜色 int buttom_color; //左侧图标颜色 int mLeftStartIconColor ; //文字内容 String mLeftText, mTitle, mRightText; //接口部分 OnTitleBarTextClick mLeftTextClick, mTitleTextClick, mRightTextClick, mRightImageClick; ImageView image; TextView tv_left_text; TextView tv_center_title; ImageView right_image; TextView tv_right_text; View iv_title_divide; public TitleBar(Context context) { super(context); View v = LayoutInflater.from(context).inflate(R.layout.platform_ui_title_bar, this); image = (ImageView) v.findViewById(R.id.image); tv_left_text = (TextView) v.findViewById(R.id.tv_left_text); tv_center_title = (TextView) findViewById(R.id.tv_center_title); right_image = (ImageView) v.findViewById(R.id.iv_right); tv_right_text = (TextView) v.findViewById(R.id.tv_right_text); iv_title_divide = v.findViewById(R.id.iv_title_divide); initRoot(null, 0); setupView(); } public TitleBar(Context context, AttributeSet attrs) { super(context, attrs); View v = LayoutInflater.from(context).inflate(R.layout.platform_ui_title_bar, this); image = (ImageView) v.findViewById(R.id.image); tv_left_text = (TextView) v.findViewById(R.id.tv_left_text); tv_center_title = (TextView) findViewById(R.id.tv_center_title); right_image = (ImageView) v.findViewById(R.id.iv_right); tv_right_text = (TextView) v.findViewById(R.id.tv_right_text); iv_title_divide = v.findViewById(R.id.iv_title_divide); initRoot(attrs, 0); setupView(); } public TitleBar(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); View v = LayoutInflater.from(context).inflate(R.layout.platform_ui_title_bar, this); image = (ImageView) v.findViewById(R.id.image); tv_left_text = (TextView) v.findViewById(R.id.tv_left_text); tv_center_title = (TextView) findViewById(R.id.tv_center_title); right_image = (ImageView) v.findViewById(R.id.iv_right); tv_right_text = (TextView) v.findViewById(R.id.tv_right_text); iv_title_divide = v.findViewById(R.id.iv_title_divide); initRoot(attrs, defStyleAttr); setupView(); } /** * 左侧文字点击事件 */ public void setOnLeftTextClick(OnTitleBarTextClick leftTextClick) { this.mLeftTextClick = leftTextClick; } /** * 中间文字点击事件 */ public void setOnTitleTextClick(OnTitleBarTextClick titleTextClick) { this.mTitleTextClick = titleTextClick; } /** * 右侧文字点击事件 */ public void setOnRightTextClick(OnTitleBarTextClick rightTextClick) { this.mRightTextClick = rightTextClick; } /** * 设置左侧字符 * * @param mLeftText 内容 */ public void setmLeftText(String mLeftText) { if (TextUtils.isEmpty(mLeftText)) { tv_left_text.setVisibility(View.GONE); return; } this.mLeftText = mLeftText; tv_left_text.setText(mLeftText); } public void setLeftTextVisible(int state) { tv_left_text.setVisibility(state); } public void setDivideVisible(int visible) { iv_title_divide.setVisibility(visible); } /** * 设置头部text * * @param title 内容 */ public void setTitle(String title) { this.mTitle = title; tv_center_title.setText(title); } public String getTitle() { return mTitle; } /** * 设置右侧文字 * * @param mRightText 内容 */ public void setmRightText(String mRightText) { this.mRightText = mRightText; tv_right_text.setText(mRightText); } /** * 设置右边文字显示状态 */ public void setRightTextVisiable(int visiable) { tv_right_text.setVisibility(visiable); } /** * 设置右侧字符颜色 */ public void setRightTextColor(int color) { tv_right_text.setTextColor(color); } public void setRightTextEnable(boolean enable) { tv_right_text.setEnabled(enable); } /** * 设置左侧字符颜色 */ public void setLeftTextColor(int color) { tv_left_text.setTextColor(color); } /** * 设置标题字符颜色 */ public void setTitleColor(int color) { tv_center_title.setTextColor(color); } void initRoot(AttributeSet attrs, int defStyleAttr) { final TypedArray a = getContext().obtainStyledAttributes( attrs, R.styleable.Platform_TitleBar, defStyleAttr, 0); mLeftText = a.getString(R.styleable.Platform_TitleBar_pa_left_text); mLeftStartIcon = a.getDrawable(R.styleable.Platform_TitleBar_pa_left_start_icon); mLeftEndIcon = a.getDrawable(R.styleable.Platform_TitleBar_pa_left_end_icon); mRight = a.getDrawable(R.styleable.Platform_TitleBar_pa_right_iv); mTitle = a.getString(R.styleable.Platform_TitleBar_pa_title_text); mRightText = a.getString(R.styleable.Platform_TitleBar_pa_right_text); mRightStartIcon = a.getDrawable(R.styleable.Platform_TitleBar_pa_right_start_icon); mRightEndIcon = a.getDrawable(R.styleable.Platform_TitleBar_pa_right_end_icon); mTextColor = a.getColor(R.styleable.Platform_TitleBar_pa_title_bar_text_color, 0xff3c3c3c); mSideTextColor = a.getColor(R.styleable.Platform_TitleBar_pa_side_text_color, 0xff3c3c3c); //底部线颜色 buttom_color = a.getColor(R.styleable.Platform_TitleBar_pa_bm_line_color, getResources().getColor(R.color.platform_divide_color)); //左侧图标颜色 mLeftStartIconColor = a.getColor(R.styleable.Platform_TitleBar_pa_left_start_icon_color, 0xffffff); a.recycle(); setGravity(Gravity.CENTER_VERTICAL); } public void setLeftIcon(Drawable left) { tv_left_text.setCompoundDrawablesWithIntrinsicBounds(left, null, mLeftEndIcon, null); } public void setDivideBg(int color) { iv_title_divide.setBackgroundColor(color); } //设置左边距 public void setPaddingLeft(int padding_dp) { try { image.setPadding(RxImageTool.dp2px(padding_dp), 0, 0, 0); } catch (Exception e) { e.printStackTrace(); } } void setupView() { //左侧部分 tv_left_text.setText(mLeftText); tv_left_text.setTextColor(mSideTextColor); tv_left_text.setCompoundDrawablesWithIntrinsicBounds(getLeftStartIcon(), null, mLeftEndIcon, null); //中间部分 tv_center_title.setText(mTitle); tv_center_title.setTextColor(mTextColor); //右侧部分 right_image.setImageDrawable(mRight); tv_right_text.setText(mRightText); tv_right_text.setTextColor(mSideTextColor); tv_right_text.setCompoundDrawablesWithIntrinsicBounds(mRightStartIcon, null, mRightEndIcon, null); //背景色 //底部线 iv_title_divide.setBackgroundColor(buttom_color); //设置点击事件 setupTextClick(); } Drawable getLeftStartIcon(){ if(mLeftStartIconColor != 0xffffff && mLeftStartIcon == null) { //动态设置返回图标颜色 Resources resources = this.getResources(); Bitmap bmp = BitmapFactory.decodeResource(resources, R.drawable.platform_toolbar_back); Bitmap colorBmp = BitmapUtils.tintBitmap(bmp, mLeftStartIconColor); return new BitmapDrawable(resources, colorBmp); }else { return mLeftStartIcon; } } public void setDivideHidden(boolean hide) { if (hide) { iv_title_divide.setVisibility(View.GONE); } else { iv_title_divide.setVisibility(View.VISIBLE); } } /** * 设置文字点击事件 */ void setupTextClick() { tv_left_text.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { mIsLeftIconActive = !mIsLeftIconActive; if (mLeftTextClick != null) { mLeftTextClick.onClick(tv_left_text, mIsLeftIconActive); } else { //默认退出activity Context context = getContext(); if (context instanceof Activity) { ((Activity) context).finish(); } } } }); tv_center_title.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { mIsTitleIconActive = !mIsTitleIconActive; if (mTitleTextClick != null) { mTitleTextClick.onClick(tv_center_title, mIsTitleIconActive); } } }); tv_right_text.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { mIsRightIconActive = !mIsRightIconActive; if (mRightTextClick != null) { mRightTextClick.onClick(tv_right_text, mIsRightIconActive); } } }); right_image.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { if (mRightImageClick != null) { mRightImageClick.onClick(v, true); } } }); } //左侧返回按钮 public void setLeftListener(View.OnClickListener listener) { tv_left_text.setOnClickListener(listener); } public interface OnTitleBarTextClick { /** * title bar文字点击事件 * * @param view 被点击的view * @param isActive 是否是激活状态 */ void onClick(View view, boolean isActive); } public void setRightIcon(Drawable rightIcon) { mRightStartIcon = rightIcon; tv_right_text.setCompoundDrawablesWithIntrinsicBounds(mRightStartIcon, null, mRightEndIcon, null); } public void setImage(Drawable image_) { image.setImageDrawable(image_); } public void setImageVis(int vis) { switch (vis) { case 0: image.setVisibility(GONE); break; default: image.setVisibility(VISIBLE); } } public void setImage_right(Drawable right) { right_image.setImageDrawable(right); } public void setRightImageListener(View.OnClickListener listener) { right_image.setOnClickListener(listener); } public void setRightImageIfNoSee() { RelativeLayout.LayoutParams layoutParams = (LayoutParams) right_image.getLayoutParams(); layoutParams.rightMargin = 0; right_image.setLayoutParams(layoutParams); } public void setRightImageIfShouldSee() { RelativeLayout.LayoutParams layoutParams = (LayoutParams) right_image.getLayoutParams(); layoutParams.leftMargin = 30; right_image.setLayoutParams(layoutParams); } public void setLeftImageListener(OnClickListener listener) { tv_left_text.setOnClickListener(listener); } public void setImageListener(OnClickListener listener) { image.setOnClickListener(listener); } public void setmRightImageClick(OnTitleBarTextClick mRightImageClick) { this.mRightImageClick = mRightImageClick; } public void setRightImageVisibility(int visible){ right_image.setVisibility(visible); } }