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项目做得多了.会发现原来非常多基础的东西都是能够复用,这个系列介绍一些自己项 ...
随机推荐
- Unity3d学习 相机的跟随
最近在写关于相机跟随的逻辑,其实最早接触相机跟随是在Unity官网的一个叫Roll-a-ball tutorial上,其中简单的涉及了关于相机如何跟随物体的移动而移动,如下代码: using Unit ...
- Hyper-V 激活Windows系统重启后黑屏的解决方法 + 激活方法
异常处理汇总-服 务 器 http://www.cnblogs.com/dunitian/p/4522983.html 服务器相关的知识点:http://www.cnblogs.com/dunitia ...
- 【翻译】MongoDB指南/CRUD操作(二)
[原文地址]https://docs.mongodb.com/manual/ MongoDB CRUD操作(二) 主要内容: 更新文档,删除文档,批量写操作,SQL与MongoDB映射图,读隔离(读关 ...
- CentOS 7配置LNMP开发环境及配置文件管理
安装并配置MySQL 5.6 从CentOS从7.x开始默认使用MariaDB.MariaDB完全兼容MySQL,包括API和命令行.但是很多时候我们还是会想要安装MySQL,所以不能直接通过yum命 ...
- 谈谈一些有趣的CSS题目(五)-- 单行居中,两行居左,超过两行省略
开本系列,讨论一些有趣的 CSS 题目,抛开实用性而言,一些题目为了拓宽一下解决问题的思路,此外,涉及一些容易忽视的 CSS 细节. 解题不考虑兼容性,题目天马行空,想到什么说什么,如果解题中有你感觉 ...
- redis集成到Springmvc中及使用实例
redis是现在主流的缓存工具了,因为使用简单.高效且对服务器要求较小,用于大数据量下的缓存 spring也提供了对redis的支持: org.springframework.data.redis.c ...
- JS的内建函数reduce
@(js) reduce函数,是ECMAScript5规范中出现的数组方法.在平时的工作中,相信大家使用的场景并不多,一般而言,可以通过reduce方法实现的逻辑都可以通过forEach方法来变相的实 ...
- TFS 2015 敏捷开发实践 – 在Kanban上运行一个Sprint
前言:在 上一篇 TFS2015敏捷开发实践 中,我们给大家介绍了TFS2015中看板的基本使用和功能,这一篇中我们来看一个具体的场景,如何使用看板来运行一个sprint.Sprint是Scrum对迭 ...
- Linux实战教学笔记08:Linux 文件的属性(上半部分)
第八节 Linux 文件的属性(上半部分) 标签(空格分隔):Linux实战教学笔记 第1章 Linux中的文件 1.1 文件属性概述(ls -lhi) linux里一切皆文件 Linux系统中的文件 ...
- BZOJ 3110: [Zjoi2013]K大数查询 [树套树]
3110: [Zjoi2013]K大数查询 Time Limit: 20 Sec Memory Limit: 512 MBSubmit: 6050 Solved: 2007[Submit][Sta ...