package com.salama.android.webviewutil; import android.annotation.SuppressLint; import android.content.Context; import android.graphics.Color; import android.graphics.Typeface; import android.graphics.drawable.GradientDrawable; import android.view.View; import android.widget.Button; import android.widget.RelativeLayout; import android.widget.TextView; import com.salama.android.support.ServiceSupportApplication; @SuppressLint("ViewConstructor") public class TitleBar extends RelativeLayout { private View _leftView = null; private View _centerView = null; private View _rightView = null; private TextView _titleTextView = null; private Button _leftButton = null; private Button _rightButton = null; /* public View getLeftView() { return _leftView; } public View getCenterView() { return _centerView; } public View getRightView() { return _rightView; } */ /** * 取得标题TextView * @return 标题TextView */ public TextView getTitleTextView() { return _titleTextView; } /** * 设置标题TextView * @param titleTextView 标题TextView */ public void setTitleTextView(TextView titleTextView) { _titleTextView = titleTextView; } /** * 取得左侧按钮 * @return 左侧按钮 */ public Button getLeftButton() { return _leftButton; } /** * 设置左侧按钮 * @param leftButton 左侧按钮 */ public void setLeftButton(Button leftButton) { _leftButton = leftButton; } /** * 取得右侧按钮 * @return 右侧按钮 */ public Button getRightButton() { return _rightButton; } /** * 设置右侧按钮 * @param rightButton 右侧按钮 */ public void setRightButton(Button rightButton) { _rightButton = rightButton; } /** * 构造函数 * @param context 上下文 */ public TitleBar(Context context) { super(context); RelativeLayout.LayoutParams titleBarLayoutParams = new RelativeLayout.LayoutParams( RelativeLayout.LayoutParams.FILL_PARENT, TitleBarSetting.DEFAULT_TITLE_BAR_HEIGHT); titleBarLayoutParams.addRule(RelativeLayout.ALIGN_PARENT_TOP); this.setLayoutParams(titleBarLayoutParams); //default background color // GradientDrawable backDrawable = new GradientDrawable(GradientDrawable.Orientation.BOTTOM_TOP, // new int[]{0xFF5A7499, 0xFFBECBDC}); // this.setBackgroundDrawable(backDrawable); setBackGroundTInt255Color(60, 78, 102, 255); _leftView = createLeftView(context); if(_leftView != null) { this.addView(_leftView); } _centerView = createCenterView(context); if(_centerView != null) { this.addView(_centerView); // if(_leftView != null) { // ((RelativeLayout.LayoutParams) _leftView.getLayoutParams()).addRule( // RelativeLayout.LEFT_OF, _centerView.getId()); // } } _rightView = createRightView(context); if(_rightView != null) { // if(_centerView != null) { // ((RelativeLayout.LayoutParams) _rightView.getLayoutParams()).addRule( // RelativeLayout.RIGHT_OF, _centerView.getId()); // } this.addView(_rightView); } } /** * 装载设置 * @param context 上下文 * @param setting 设置 */ public void loadSetting(Context context, TitleBarSetting setting) { getLayoutParams().height = setting.getHeight(); //TIntColor setBackGroundTIntColor(setting.getBackgroundTColor()); if(_titleTextView != null) { _titleTextView.setText(setting.getCenterViewTitle()); _titleTextView.setTextSize(setting.getTitleTextSize()); if(setting.getTitleTextAppearanceResId() != 0) { _titleTextView.setTextAppearance(context, setting.getTitleTextAppearanceResId()); } if(setting.isCenterViewVisible()) { _titleTextView.setVisibility(View.VISIBLE); _titleTextView.setText(setting.getCenterViewTitle()); _titleTextView.setBackgroundDrawable(setting.getCenterViewBackgroundDrawable()); } else { _titleTextView.setVisibility(View.INVISIBLE); } //_titleTextView.setWidth(setting.getCenterViewWidth()); //_titleTextView.setHeight(setting.getCenterViewHeight()); } if(_leftButton != null) { if(setting.isLeftViewVisible()) { _leftButton.setVisibility(View.VISIBLE); _leftButton.setText(setting.getLeftViewTitle()); ((GradientRoundCornerButton)_leftButton).setBackgroundColor( setting.getLeftViewBackgroundColor()); if(setting.getLeftViewBackgroundDrawable() != null) { _leftButton.setBackgroundDrawable(setting.getLeftViewBackgroundDrawable()); } ((GradientRoundCornerButton)_leftButton).setIcon(setting.getLeftViewIconDrawable()); } else { _leftButton.setVisibility(View.INVISIBLE); } // _leftButton.setWidth(setting.getLeftViewWidth()); // _leftButton.setHeight(setting.getLeftViewHeight()); } if(_rightButton != null) { if(setting.isRightViewVisible()) { _rightButton.setVisibility(View.VISIBLE); _rightButton.setText(setting.getRightViewTitle()); ((GradientRoundCornerButton)_rightButton).setBackgroundColor(setting.getRightViewBackgroundColor()); if(setting.getRightViewBackgroundDrawable() != null) { _rightButton.setBackgroundDrawable(setting.getRightViewBackgroundDrawable()); } ((GradientRoundCornerButton)_rightButton).setIcon(setting.getRightViewIconDrawable()); } else { _rightButton.setVisibility(View.INVISIBLE); } // _rightButton.setWidth(setting.getRightViewWidth()); // _rightButton.setHeight(setting.getRightViewHeight()); } if(_leftView != null) { _leftView.getLayoutParams().width = setting.getLeftViewWidth(); _leftView.getLayoutParams().height = setting.getLeftViewHeight(); } if(_rightView != null) { _rightView.getLayoutParams().width = setting.getRightViewWidth(); _rightView.getLayoutParams().height = setting.getRightViewHeight(); } if(_centerView != null) { _centerView.getLayoutParams().width = setting.getCenterViewWidth(); _centerView.getLayoutParams().height = setting.getCenterViewHeight(); } } protected View createLeftView(Context context) { /* RelativeLayout layout = new RelativeLayout(context); layout.setId(ServiceSupportApplication.singleton().newViewId()); RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams( RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT); layoutParams.addRule(RelativeLayout.ALIGN_LEFT); layout.setLayoutParams(layoutParams); layout.setGravity(RelativeLayout.ALIGN_LEFT | RelativeLayout.CENTER_VERTICAL); */ _leftButton = new GradientRoundCornerButton(context); _leftButton.setId(ServiceSupportApplication.singleton().newViewId()); _leftButton.setVisibility(INVISIBLE); _leftButton.setTextColor(Color.WHITE); //_leftButton.setTextSize(16); ((GradientRoundCornerButton)_leftButton).setBackgroundColor(TitleBarSetting.DEFAULT_BACKGROUND_T_COLOR); RelativeLayout.LayoutParams buttonLayoutParam = new RelativeLayout.LayoutParams( RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT); buttonLayoutParam.addRule(RelativeLayout.ALIGN_PARENT_LEFT); buttonLayoutParam.addRule(RelativeLayout.CENTER_VERTICAL); buttonLayoutParam.setMargins(4, 0, 4, 0); _leftButton.setLayoutParams(buttonLayoutParam); // _leftButton.setGravity(RelativeLayout.ALIGN_LEFT | RelativeLayout.CENTER_VERTICAL); // layout.addView(_leftButton); // return layout; return _leftButton; } protected View createCenterView(Context context) { //TitleTextView // RelativeLayout layout = new RelativeLayout(context); // RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams( // RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT); // layoutParams.addRule(RelativeLayout.CENTER_IN_PARENT); // layout.setLayoutParams(layoutParams); _titleTextView = new TextView(context); _titleTextView.setId(ServiceSupportApplication.singleton().newViewId()); _titleTextView.setTextSize(TitleBarSetting.DEFAULT_TEXT_SIZE); _titleTextView.setTypeface(null, Typeface.BOLD); _titleTextView.setTextColor(Color.WHITE); RelativeLayout.LayoutParams titleLayoutParam = new RelativeLayout.LayoutParams( RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT); titleLayoutParam.addRule(RelativeLayout.CENTER_IN_PARENT); titleLayoutParam.setMargins(4, 0, 4, 0); _titleTextView.setLayoutParams(titleLayoutParam); // _titleTextView.setGravity(RelativeLayout.CENTER_IN_PARENT); // layout.addView(_titleTextView); // return layout; return _titleTextView; } protected View createRightView(Context context) { /* RelativeLayout layout = new RelativeLayout(context); layout.setId(ServiceSupportApplication.singleton().newViewId()); RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams( RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT); layoutParams.addRule(RelativeLayout.ALIGN_RIGHT); layout.setLayoutParams(layoutParams); layout.setGravity(RelativeLayout.ALIGN_RIGHT | RelativeLayout.CENTER_VERTICAL); */ _rightButton = new GradientRoundCornerButton(context); _rightButton.setId(ServiceSupportApplication.singleton().newViewId()); _rightButton.setVisibility(INVISIBLE); //_rightButton.setTextSize(16); _rightButton.setTextColor(Color.WHITE); ((GradientRoundCornerButton)_rightButton).setBackgroundColor(TitleBarSetting.DEFAULT_BACKGROUND_T_COLOR); RelativeLayout.LayoutParams buttonLayoutParam = new RelativeLayout.LayoutParams( RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT ); buttonLayoutParam.addRule(RelativeLayout.ALIGN_PARENT_RIGHT); buttonLayoutParam.addRule(RelativeLayout.CENTER_VERTICAL); buttonLayoutParam.setMargins(4, 0, 4, 0); _rightButton.setLayoutParams(buttonLayoutParam); // _rightButton.setGravity(RelativeLayout.ALIGN_RIGHT | RelativeLayout.CENTER_VERTICAL); // layout.addView(_rightButton); // return layout; return _rightButton; } public void setBackGroundTFloat1Color(float red, float green, float blue, float alpha) { int iRed = (int)(red * 255); int iGreen = (int)(green * 255); int iBlue = (int)(blue * 255); int iAlpha = (int)(alpha * 255); this.setBackGroundTInt255Color(iRed, iGreen, iBlue, iAlpha); } public void setBackGroundTIntColor(int color) { int a = (color >> 24) & 0x000000FF; int r = (color >> 16) & 0x000000FF; int g = (color >> 8) & 0x000000FF; int b = (color) & 0x000000FF; setBackGroundTInt255Color(r, g, b, a); } public void setBackGroundTInt255Color(int r, int g, int b, int a) { int bottomColor = toIntColor(r, g, b, a); int topColor = transferBottomColorToTopColor(r, g, b, a); GradientDrawable backDrawable = new GradientDrawable(GradientDrawable.Orientation.BOTTOM_TOP, new int[]{bottomColor, topColor}); this.setBackgroundDrawable(backDrawable); } public void setTitle(String title) { if(_titleTextView != null) { _titleTextView.setText(title); } } public static int transferBottomColorToTopColor(int r, int g, int b, int a) { /* int r2 = (int)(r * 2.1); if(r2 > 255) { r2 = 255; } int g2 = (int)(g * 1.75); if(g2 > 255) { g2 = 255; } int b2 = (int)(b * 1.4); if(b2 > 255) { b2 = 255; } */ /* int highColor = 220; int delta = 0; if(r >= g && r >= b) { delta = highColor - r; } else if (g >= r && g >= b) { delta = highColor - g; } else { delta = highColor - b; } */ int delta = 150; if((r + delta) > 255) { delta = 255 - r; } if((g + delta) > 255) { delta = 255 - g; } if((b + delta) > 255) { delta = 255 - b; } return toIntColor(r + delta, g + delta, b + delta, a); } public static int toIntColor(int r, int g, int b, int a) { return ((a << 24) & 0xFF000000) | ((r << 16) & 0x00FF0000) | ((g << 8) & 0x0000FF00) | (b & 0x000000FF); } public static int toIntColor(float r, float g, float b, float a) { int iR = (int)(r * 255); int iG = (int)(g * 255); int iB = (int)(b * 255); int iA= (int)(a * 255); return ((iA << 24) & 0xFF000000) | ((iR << 16) & 0x00FF0000) | ((iG << 8) & 0x0000FF00) | (iB & 0x000000FF); } }