Android公共title的应用

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

  1 public abstract class BaseTitleActivty extends Activity implements
  2         OnClickListener {
  3
  4     /**
  5      * 标题头部的布局
  6      */
  7     protected ViewGroup title_layout;
  8
  9     private LinearLayout mMianLayout;
 10
 11     /**
 12      * 返回图标
 13      */
 14     protected ImageView iv_common_back;
 15
 16     /**
 17      * 返回文字
 18      */
 19     protected TextView back_text;
 20
 21     /**
 22      * 左边的图片
 23      */
 24     protected ImageView left_img;
 25
 26     /**
 27      * 中间的标题
 28      */
 29     protected TextView title_text;
 30     /**
 31      * 右边的文字
 32      */
 33     protected TextView right_text;
 34     /**
 35      * 右边的图标
 36      */
 37     protected ImageView right_img;
 38
 39     protected View base_title;
 40
 41     @Override
 42     protected void onCreate(Bundle savedInstanceState) {
 43         super.onCreate(savedInstanceState);
 44         super.setContentView(R.layout.base_title_activity);
 45         initBaseTitle();
 46     }
 47
 48
 49
 50     @Override
 51     public void setContentView(int layoutResID) {
 52         LayoutInflater inflater = (LayoutInflater) this
 53                 .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
 54         View contentView = inflater.inflate(layoutResID, null);
 55         contentView.setLayoutParams(new FrameLayout.LayoutParams(
 56                 ViewGroup.LayoutParams.MATCH_PARENT,
 57                 ViewGroup.LayoutParams.MATCH_PARENT));
 58         title_layout.addView(contentView);
 59     }
 60
 61     /**
 62      * 初始化方法
 63      */
 64     protected void initBaseTitle() {
 65         initTitleView();
 66         setTitle();
 67     }
 68
 69     /**
 70      * 初始化公共title的view
 71      */
 72     protected void initTitleView() {
 73         title_layout =(ViewGroup)findViewById(R.id.title_layout);
 74         base_title = (View) findViewById(R.id.base_title);
 75         iv_common_back =(ImageView)findViewById(R.id.iv_common_back);
 76         back_text = (TextView) findViewById(R.id.tv_back);
 77         left_img = (ImageView) findViewById(R.id.left_img);
 78         title_text = (TextView) findViewById(R.id.title);
 79         right_text = (TextView) findViewById(R.id.right_text);
 80         right_img = (ImageView) findViewById(R.id.right_img);
 81         iv_common_back.setOnClickListener(this);
 82         back_text.setOnClickListener(this);
 83         right_text.setOnClickListener(this);
 84         right_img.setOnClickListener(this);
 85     }
 86
 87     /**
 88      * 设置标题内容
 89      */
 90     protected void setTitle() {
 91     }
 92
 93     /**
 94      * 仅仅含返回图标
 95      */
 96     protected void showTitleLeftContent() {
 97         back_text.setText("");
 98     }
 99
100     /**
101      * 仅仅含有返回图标和文字
102      */
103     protected void showTitleLeftContent(String tv_back) {
104         back_text.setText(tv_back);
105     }
106
107     /**
108      * 左边仅仅是一个图片
109      */
110     protected void showTitleLeftContent(int resId) {
111         iv_common_back.setVisibility(View.INVISIBLE);
112         back_text.setVisibility(View.INVISIBLE);
113         left_img.setVisibility(View.VISIBLE);
114     left_img.setImageDrawable(getResources().getDrawable(resId));
115     }
116
117     /**
118      * 设置标题和颜色
119      *
120      * @param text
121      * @param colorId
122      *            颜色
123      */
124     protected void showTitleText(String text, int colorId) {
125         if (!TextUtils.isEmpty(text)) {
126             title_text.setText(text);
127         }
128         if (colorId != 0) {
129             title_text.setTextColor(getResources().getColor(colorId));
130         }
131     }
132
133     /**
134      * 只设置标题文字
135      *
136      * @param text
137      */
138     protected void showTitleText(String text) {
139         showTitleText(text, 0);
140     }
141
142     /**
143      * 只设置标题颜色
144      *
145      * @param colorId
146      */
147     protected void showTitleText(int colorId) {
148         showTitleText("", colorId);
149     }
150
151     /**
152      * 设置中间的背景图片,没有文字
153      *
154      * @param resId
155      */
156     @SuppressLint("NewApi")
157     protected void showTitleBackground(int resId) {
158         title_text.setText("");
159         title_text.setBackground(getResources().getDrawable(resId));
160
161     }
162
163     /**
164      * 设置标题右边的内容
165      *
166      * @param text
167      *            文字内容
168      * @param colorId
169      *            文字颜色
170      * @param textSize
171      *            文字大小
172      * @param resId
173      *            图片id
174      */
175     protected void showTitleRightContent(String text, int colorId,
176             int textSize, int resId) {
177         if (!TextUtils.isEmpty(text)) {
178             right_text.setVisibility(View.VISIBLE);
179             right_text.setText(text);
180             if (colorId != 0) {
181                 right_text.setTextColor(getResources().getColor(colorId));
182             }
183             if (textSize != 0) {
184                 right_text.setTextSize(textSize);
185             }
186         }
187
188         if (resId != 0) {
189             right_img.setVisibility(View.VISIBLE);
190             right_img.setImageDrawable(getResources().getDrawable(resId));
191         }
192     }
193
194     /**
195      * 设置标题右边的内容
196      *
197      * @param text
198      *            文字内容
199      * @param colorId
200      *            文字颜色
201      * @param textSize
202      *            文字大小
203      */
204     protected void showTitleRightContent(String text, int colorId, int textSize) {
205         showTitleRightContent(text, colorId, textSize, 0);
206     }
207
208     /**
209      * 设置文字内容、颜色、大小
210      *
211      * @param text
212      * @param colorId
213      */
214     protected void showTitleRightContent(String text, int colorId) {
215         showTitleRightContent(text, colorId, 0, 0);
216     }
217
218     /**
219      * 只设置文字内容
220      *
221      * @param text
222      */
223     protected void showTitleRightContent(String text) {
224         showTitleRightContent(text, 0, 0, 0);
225     }
226
227     /**
228      * 只设置右边的图片
229      *
230      * @param resId
231      */
232     protected void showTitleRightContent(int resId) {
233         showTitleRightContent(null, 0, 0, resId);
234     }
235
236 }
时间: 2024-10-03 17:05:50

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

Eclipse中Android公共库的正确建立及调用方法(转)

转自http://www.cnblogs.com/SkyD/archive/2011/09/01/2161502.html 引言 之前一直头痛于没有办法在多个程序中共享资源,用作公共类库的方法也是使用的导出jar再导入的办法,现在终于初步搞明白了,可算解脱了~,分享出来. 建立公共库 首先建立公共库的Android项目,名为MyCoreLib: 完成后在左侧包浏览器里右键点选我们新建的这个项目,选择Properties项: 左侧选择Android分类,右侧勾选Is Library选项: 完成后在

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

Android公共库--图片缓存 网络缓存 下拉及底部更多ListView 公共类 转载自http://www.trinea.cn/android/android-common-lib/ 介绍总结的一些android公共库,包含缓存(图片缓存.预取缓存.网络缓存).公共View(下拉及底部加载更多ListView.底部加载更多ScrollView.滑动一页Gallery).及Android常用工具类(网络.下载.shell.文件.json等等). TrineaAndroidCommon已开源,地

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

一.依赖注入DI 通过依赖注入减少View.服务.资源简化初始化,事件绑定等重复繁琐工作 AndroidAnnotations(Code Diet) android快速开发框架 项目地址:https://github.com/excilys/androidannotations 文档介绍:https://github.com/excilys/androidannotations/wiki 官网网址:http://androidannotations.org/ 特点:(1) 依赖注入:包括view

Android 自定义title 之Action Bar

Android 自定义title 之Action Bar 2014-06-29  飞鹰飞龙...  摘自 博客园  阅 10519  转 25 转藏到我的图书馆 微信分享: Action Bar是在窗口上指示用户位置的组件,同时给用户提供导航和操作.使用Action Bar可以让你的应用在不同配置的屏幕上看起来比较一致.在开始之前,先了解一些相关的术语: Action Bar有以下几项关键功能: 1)为你的App提供一个装饰处,同时也可以让用户知道自己的所在位置: 2)让一些重要的操作以一种可预

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

本文转自:http://www.trinea.cn/android/android-common-lib/ 介绍总结的一些android公共库,包含缓存(图片缓存.预取缓存.网络缓存).公共View(下拉及底部加载更多ListView.底部加载更多ScrollView.滑动一页Gallery).及Android常用工具类(网络.下载.shell.文件.json等等). TrineaAndroidCommon已开源,地址为[email protected],欢迎Star或Fork^_* 示例APK

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

本文源代码托管在https://github.com/ASCE1885/asce-common,欢迎fork Android项目做得多了.会发现原来非常多基础的东西都是能够复用,这个系列介绍一些自己项目中经常使用到的公共模块代码(当然仅仅谈技术不谈业务),一来整理好了自己以后能够直接用,二来也分享给大家,希望能略微降低大家的加班时间,提高些许效率. Android Notification的原理和作用这里就不作说明了,相信是个android开发人员都用过不止一次了,下面仅仅介绍怎样封装成公共的模

Android中title的管理

常见的Android应用每个Activity或者Fragment都会带有一个Title栏.最普通的就是每个Activity的布局文件中都写一个title.但是这样管理起来比较麻烦,因为每个activity的title栏其实看起来都差不多,基本都包含有返回功能,一个textview描述当前页面,最右侧会是一个更多或者搜索之类的功能按钮.这样我们其实可以使用一个通用的布局,在所有的activity的父类中直接控制title的样式. 1.首先是BaseActivity作为所有Activity的父类 p

Android公共技术点

公共技术点之  Android动画基础 公共技术点之  View的事件传递 公共技术点之  View的绘制流程 公共技术点之  Java反射Reflection 公共技术点之  Java注解Annotation 公共技术点之  Java动态代理 来源:http://a.codekk.com/

Android 去掉title bar的3个方法

1. Java代码实现 @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.main); //... } 留意这语句所在的位置的,似乎所有requestWindowFeature的操作都要放在setContentVie