您的位置:首页 - 教程 - 安卓 - 正文
Android公共title的应用

     我们在开发Android应用中,写每一个页面的时候都会建一个title,不是写一个LinearLayout就是写一个RelativeLayout,久而久之就会觉得这样繁琐,尤其几个页面是只是标题不一样,其他都相同的话,每个页面的title都重复搭建会显得代码冗余,而且增加渲染时间。于是我前段时间就写了一个公共title的activity,其他子Activity只要继承我这个就可以了。这段时间我们对项目代码进行了重构了,就利用了这个公共title(其他的同事进行了优化),确实少写了很多代码,用起来还是很不错的。  我知道网上也有类似的代码,但不是我想要的那种。废话不多说,直接上代码。以后还继续优化,在我眼里任何代码都能再优化一点点。

 public abstract class BaseTitleActivty extends Activity implements
         OnClickListener {
 
     /**
      * 标题头部的布局
      */
     protected ViewGroup title_layout;
 
     private LinearLayout mMianLayout;
     
     /**
      * 返回图标
      */
     protected ImageView iv_common_back;
 
     /**
      * 返回文字
      */
     protected TextView back_text;
 
     /**
      * 左边的图片
      */
     protected ImageView left_img;
 
     /**
      * 中间的标题
      */
     protected TextView title_text;
     /**
      * 右边的文字
      */
     protected TextView right_text;
     /**
      * 右边的图标
      */
     protected ImageView right_img;
 
     protected View base_title;
 
     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         super.setContentView(R.layout.base_title_activity);
         initBaseTitle();
     }
 
     
 
     @Override
     public void setContentView(int layoutResID) {
         LayoutInflater inflater = (LayoutInflater) this
                 .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
         View contentView = inflater.inflate(layoutResID, null);
         contentView.setLayoutParams(new FrameLayout.LayoutParams(
                 ViewGroup.LayoutParams.MATCH_PARENT,
                 ViewGroup.LayoutParams.MATCH_PARENT));
         title_layout.addView(contentView);
     }
 
     /**
      * 初始化方法
      */
     protected void initBaseTitle() {
         initTitleView();
         setTitle();
     }
 
     /**
      * 初始化公共title的view
      */
     protected void initTitleView() {
         title_layout =(ViewGroup)findViewById(R.id.title_layout);
         base_title = (View) findViewById(R.id.base_title);
         iv_common_back =(ImageView)findViewById(R.id.iv_common_back);                
         back_text = (TextView) findViewById(R.id.tv_back);
         left_img = (ImageView) findViewById(R.id.left_img);
         title_text = (TextView) findViewById(R.id.title);
         right_text = (TextView) findViewById(R.id.right_text);
         right_img = (ImageView) findViewById(R.id.right_img);
         iv_common_back.setOnClickListener(this);
         back_text.setOnClickListener(this);
         right_text.setOnClickListener(this);
         right_img.setOnClickListener(this);
     }
 
     /**
      * 设置标题内容
      */
     protected void setTitle() {
     }
 
     /**
      * 仅仅含返回图标
      */
     protected void showTitleLeftContent() {
         back_text.setText("");
     }
 
     /**
      * 仅仅含有返回图标和文字
      */
     protected void showTitleLeftContent(String tv_back) {
         back_text.setText(tv_back);
     }
 
     /**
      * 左边仅仅是一个图片
      */
     protected void showTitleLeftContent(int resId) {
         iv_common_back.setVisibility(View.INVISIBLE);
         back_text.setVisibility(View.INVISIBLE);
         left_img.setVisibility(View.VISIBLE);
     left_img.setImageDrawable(getResources().getDrawable(resId));
     }
 
     /**
      * 设置标题和颜色
      * 
      * @param text
      * @param colorId
      *            颜色
      */
     protected void showTitleText(String text, int colorId) {
         if (!TextUtils.isEmpty(text)) {
             title_text.setText(text);
         }
         if (colorId != 0) {
             title_text.setTextColor(getResources().getColor(colorId));
         }
     }
 
     /**
      * 只设置标题文字
      * 
      * @param text
      */
     protected void showTitleText(String text) {
         showTitleText(text, 0);
     }
 
     /**
      * 只设置标题颜色
      * 
      * @param colorId
      */
     protected void showTitleText(int colorId) {
         showTitleText("", colorId);
     }
 
     /**
      * 设置中间的背景图片,没有文字
      * 
      * @param resId
      */
     @SuppressLint("NewApi")
     protected void showTitleBackground(int resId) {
         title_text.setText("");
         title_text.setBackground(getResources().getDrawable(resId));
 
     }
 
     /**
      * 设置标题右边的内容
      * 
      * @param text
      *            文字内容
      * @param colorId
      *            文字颜色
      * @param textSize
      *            文字大小
      * @param resId
      *            图片id
      */
     protected void showTitleRightContent(String text, int colorId,
             int textSize, int resId) {
         if (!TextUtils.isEmpty(text)) {
             right_text.setVisibility(View.VISIBLE);
             right_text.setText(text);
             if (colorId != 0) {
                 right_text.setTextColor(getResources().getColor(colorId));
             }
             if (textSize != 0) {
                 right_text.setTextSize(textSize);
             }
         }
 
         if (resId != 0) {
             right_img.setVisibility(View.VISIBLE);
             right_img.setImageDrawable(getResources().getDrawable(resId));
         }
     }
 
     /**
      * 设置标题右边的内容
      * 
      * @param text
      *            文字内容
      * @param colorId
      *            文字颜色
      * @param textSize
      *            文字大小
      */
     protected void showTitleRightContent(String text, int colorId, int textSize) {
         showTitleRightContent(text, colorId, textSize, 0);
     }
 
     /**
      * 设置文字内容、颜色、大小
      * 
      * @param text
      * @param colorId
      */
     protected void showTitleRightContent(String text, int colorId) {
         showTitleRightContent(text, colorId, 0, 0);
     }
 
     /**
      * 只设置文字内容
      * 
      * @param text
      */
     protected void showTitleRightContent(String text) {
         showTitleRightContent(text, 0, 0, 0);
     }
 
     /**
      * 只设置右边的图片
      * 
      * @param resId
      */
     protected void showTitleRightContent(int resId) {
         showTitleRightContent(null, 0, 0, resId);
     }
 
 }

评论: