我们在开发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);
} }

Android公共title的应用的更多相关文章

  1. Android 自定义title 之Action Bar

    Android 自定义title 之Action Bar 2014-06-29  飞鹰飞龙...  摘自 博客园  阅 10519  转 25 转藏到我的图书馆   微信分享:   Action Ba ...

  2. Android公共库(缓存 下拉ListView 下载管理Pro 静默安装 root运行 Java公共类)

    介绍总结的一些android公共库,包含缓存(图片缓存.预取缓存).公共View(下拉及底部加载更多ListView.底部加载更多ScrollView.滑动一页Gallery).及Android常用工 ...

  3. 自己总结的一些android公共库

    本文主要介绍自己在android开发中总结的一些公共库,目前包括下拉刷新ListView.可以响应各个方向CompoundDrawables点击操作的TextView.图片缓存,不断更新,欢迎交流 ? ...

  4. Eclipse中Android公共库的正确建立及调用方法

    Eclipse中Android公共库的正确建立及调用方法 引言 之前一直头痛于没有办法在多个程序中共享资源,用作公共类库的方法也是使用的导出jar再导入的办法,现在终于初步搞明白了,可算解脱了~,分享 ...

  5. Android公共库——图片缓存 网络缓存 下拉及底部更多ListView 公共类

    Android公共库——图片缓存 网络缓存 下拉及底部更多ListView 公共类 转载自http://www.trinea.cn/android/android-common-lib/ 介绍总结的一 ...

  6. Android 开源项目android-open-project工具库解析之(一) 依赖注入,图片缓存,网络相关,数据库orm工具包,Android公共库

    一.依赖注入DI 通过依赖注入降低View.服务.资源简化初始化.事件绑定等反复繁琐工作 AndroidAnnotations(Code Diet) android高速开发框架 项目地址:https: ...

  7. Android 公共库的建立方法

    本文主要介绍在android工程中如何将共用代码建成公共包方便其他工程引用.引用后的工程结构分析.library引入方式的优缺点. 自己也写了一些android公共的库,有兴趣的可以参考 Trinea ...

  8. 【Java/Android性能优 7】Android公共库——图片缓存 网络缓存 下拉及底部更多ListView 公共类

    本文转自:http://www.trinea.cn/android/android-common-lib/ 介绍总结的一些android公共库,包含缓存(图片缓存.预取缓存.网络缓存).公共View( ...

  9. 【直接拿来用のandroid公共代码模块解析与分享】の Notification和NotificationManager

    本文源代码托管在https://github.com/ASCE1885/asce-common,欢迎fork Android项目做得多了.会发现原来非常多基础的东西都是能够复用,这个系列介绍一些自己项 ...

随机推荐

  1. Jquery的点击事件,三句代码完成全选事件

    先来看一下Js和Jquery的点击事件 举两个简单的例子 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN&q ...

  2. (系统架构)标准Web系统的架构分层

    标准Web系统的架构分层 1.架构体系分层图 在上图中我们描述了Web系统架构中的组成部分.并且给出了每一层常用的技术组件/服务实现.需要注意以下几点: 系统架构是灵活的,根据需求的不同,不一定每一层 ...

  3. 水印第三版 ~ 变态水印(这次用Magick.NET来实现,附需求分析和源码)

    技能 汇总:http://www.cnblogs.com/dunitian/p/4822808.html#skill 以前的水印,只是简单走起,用的是原生态的方法.现在各种变态水印,于是就不再用原生态 ...

  4. 谈谈一些有趣的CSS题目(六)-- 全兼容的多列均匀布局问题

    开本系列,谈谈一些有趣的 CSS 题目,题目类型天马行空,想到什么说什么,不仅为了拓宽一下解决问题的思路,更涉及一些容易忽视的 CSS 细节. 解题不考虑兼容性,题目天马行空,想到什么说什么,如果解题 ...

  5. CSS 3 学习——渐变

    通过CSS渐变创建的是一个没有固定比例和固定尺寸的<image>类型,也就是说是一张图片,这张图片的尺寸由所应用的元素的相关信息决定.凡是支持图片类型的CSS属性都可以设置渐变,而支持颜色 ...

  6. Springboot搭建web项目

    最近因为项目需要接触了springboot,然后被其快速零配置的特点惊呆了.关于springboot相关的介绍我就不赘述了,大家自行百度google. 一.pom配置 首先,建立一个maven项目,修 ...

  7. [转载]网站地址栏小图标favicon.ico的制作方法

    有人也许会好奇,有的网址前面有个漂亮的小图标而且有的网站图标还会动,这是怎么做到的呢? 如下图所示: 那个小图标有个名字叫favicon.ico,网站图标虽小但可以起到很好的点缀作用,尤其是当浏览者将 ...

  8. Oracle第一步

    Oracle 启动数据库 Startup [NOMOUNT|MOUNT|OPEN|FORCE] [restrict] [pfile=filename] 启动实例,加载数据库,启动数据库 oRACLE关 ...

  9. 实现php连接memcached

    准备工作: 实现lnmp环境 给php添加模块,so库 下载扩展包:memcache-2.2.5.tgz wget http://pecl.php.net/get/memcache-2.2.5.tgz

  10. EntityFramework 6 + Mysql 生成POCOs

    问题 使用EDMX文件 EF Power Tools参数不正确的解决方法 对于"异常来自 HRESULT:0x80070057 (E_INVALIDARG)",有方法说" ...