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);
} }
Android公共title的应用的更多相关文章
- Android 自定义title 之Action Bar
Android 自定义title 之Action Bar 2014-06-29 飞鹰飞龙... 摘自 博客园 阅 10519 转 25 转藏到我的图书馆 微信分享: Action Ba ...
- Android公共库(缓存 下拉ListView 下载管理Pro 静默安装 root运行 Java公共类)
介绍总结的一些android公共库,包含缓存(图片缓存.预取缓存).公共View(下拉及底部加载更多ListView.底部加载更多ScrollView.滑动一页Gallery).及Android常用工 ...
- 自己总结的一些android公共库
本文主要介绍自己在android开发中总结的一些公共库,目前包括下拉刷新ListView.可以响应各个方向CompoundDrawables点击操作的TextView.图片缓存,不断更新,欢迎交流 ? ...
- Eclipse中Android公共库的正确建立及调用方法
Eclipse中Android公共库的正确建立及调用方法 引言 之前一直头痛于没有办法在多个程序中共享资源,用作公共类库的方法也是使用的导出jar再导入的办法,现在终于初步搞明白了,可算解脱了~,分享 ...
- Android公共库——图片缓存 网络缓存 下拉及底部更多ListView 公共类
Android公共库——图片缓存 网络缓存 下拉及底部更多ListView 公共类 转载自http://www.trinea.cn/android/android-common-lib/ 介绍总结的一 ...
- Android 开源项目android-open-project工具库解析之(一) 依赖注入,图片缓存,网络相关,数据库orm工具包,Android公共库
一.依赖注入DI 通过依赖注入降低View.服务.资源简化初始化.事件绑定等反复繁琐工作 AndroidAnnotations(Code Diet) android高速开发框架 项目地址:https: ...
- Android 公共库的建立方法
本文主要介绍在android工程中如何将共用代码建成公共包方便其他工程引用.引用后的工程结构分析.library引入方式的优缺点. 自己也写了一些android公共的库,有兴趣的可以参考 Trinea ...
- 【Java/Android性能优 7】Android公共库——图片缓存 网络缓存 下拉及底部更多ListView 公共类
本文转自:http://www.trinea.cn/android/android-common-lib/ 介绍总结的一些android公共库,包含缓存(图片缓存.预取缓存.网络缓存).公共View( ...
- 【直接拿来用のandroid公共代码模块解析与分享】の Notification和NotificationManager
本文源代码托管在https://github.com/ASCE1885/asce-common,欢迎fork Android项目做得多了.会发现原来非常多基础的东西都是能够复用,这个系列介绍一些自己项 ...
随机推荐
- 读书笔记:《HTML5开发手册》--HTML5新的结构元素
读书笔记:<HTML5开发手册> (HTML5 Developer's CookBook) 虽然从事前端开发已有很长一段时间,对HTML5标签也有使用,但在语义化上面理解还不够清晰.之前在 ...
- mysql 学习总结
MYSQL的增.删.查.改 注册.授权 #创建一个对数据库中的表有一些操作权限的用户,其中OPERATION可以用all privileges替换,DBNAME.TABLENAME可以用*替换,表 ...
- EventBus实现activity跟fragment交互数据
最近老是听到技术群里面有人提出需求,activity跟fragment交互数据,或者从一个activity跳转到另外一个activity的fragment,所以我给大家介绍一个开源项目,EventBu ...
- 使用cmake自动构建工程
公司引擎是用cmake根据目标平台来构建工程的,刚接触的时候深深体会到cmake的方便:如果目标平台是windows,它可以帮你自动构建出vs工程:如果是安卓,自动构建出eclipse工程,如果是IO ...
- 我这么玩Web Api(二):数据验证,全局数据验证与单元测试
目录 一.模型状态 - ModelState 二.数据注解 - Data Annotations 三.自定义数据注解 四.全局数据验证 五.单元测试 一.模型状态 - ModelState 我理解 ...
- J a v a 的“多重继承”
接口只是比抽象类“更纯”的一种形式.它的用途并不止那些.由于接口根本没有具体的实施细节——也就是说,没有与存储空间与“接口”关联在一起——所以没有任何办法可以防止多个接口合并到一起.这一点是至关重要的 ...
- MyBatis源码分析(二)语句处理器
StatementHandler 语句处理器,主要负责语句的创建.参数的设置.语句的执行.不负责结果集的处理. Statement prepare(Connection connection, Int ...
- Cesium简介以及离线部署运行
Cesium简介 cesium是国外一个基于JavaScript编写的使用WebGL的地图引擎,一款开源3DGIS的js库.cesium支持3D,2D,2.5D形式的地图展示,可以自行绘制图形,高亮区 ...
- 模仿EF,我们用JS开发的HTML5 SQLite 访问库
今天终于有空把demo放到了RunJS上面去.请使用google chrome观看在线演示: http://sandbox.runjs.cn/show/pekbd9zb 这个库本来是我们开发的phon ...
- Apache2.4卡住无法访问的解决……
早两个星期,搭建了一个项目管理平台--<如何安装一个优秀的BUG管理平台--真的是手把手教学!>.以前都是用apache2.2的,这次换了apache2.4.安装起来是没有问题的,结果运行 ...