我们在开发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. @Override
  49. public void setContentView(int layoutResID) {
  50. LayoutInflater inflater = (LayoutInflater) this
  51. .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
  52. View contentView = inflater.inflate(layoutResID, null);
  53. contentView.setLayoutParams(new FrameLayout.LayoutParams(
  54. ViewGroup.LayoutParams.MATCH_PARENT,
  55. ViewGroup.LayoutParams.MATCH_PARENT));
  56. title_layout.addView(contentView);
  57. }
  58.  
  59. /**
  60. * 初始化方法
  61. */
  62. protected void initBaseTitle() {
  63. initTitleView();
  64. setTitle();
  65. }
  66.  
  67. /**
  68. * 初始化公共title的view
  69. */
  70. protected void initTitleView() {
  71. title_layout =(ViewGroup)findViewById(R.id.title_layout);
  72. base_title = (View) findViewById(R.id.base_title);
  73. iv_common_back =(ImageView)findViewById(R.id.iv_common_back);
  74. back_text = (TextView) findViewById(R.id.tv_back);
  75. left_img = (ImageView) findViewById(R.id.left_img);
  76. title_text = (TextView) findViewById(R.id.title);
  77. right_text = (TextView) findViewById(R.id.right_text);
  78. right_img = (ImageView) findViewById(R.id.right_img);
  79. iv_common_back.setOnClickListener(this);
  80. back_text.setOnClickListener(this);
  81. right_text.setOnClickListener(this);
  82. right_img.setOnClickListener(this);
  83. }
  84.  
  85. /**
  86. * 设置标题内容
  87. */
  88. protected void setTitle() {
  89. }
  90.  
  91. /**
  92. * 仅仅含返回图标
  93. */
  94. protected void showTitleLeftContent() {
  95. back_text.setText("");
  96. }
  97.  
  98. /**
  99. * 仅仅含有返回图标和文字
  100. */
  101. protected void showTitleLeftContent(String tv_back) {
  102. back_text.setText(tv_back);
  103. }
  104.  
  105. /**
  106. * 左边仅仅是一个图片
  107. */
  108. protected void showTitleLeftContent(int resId) {
  109. iv_common_back.setVisibility(View.INVISIBLE);
  110. back_text.setVisibility(View.INVISIBLE);
  111. left_img.setVisibility(View.VISIBLE);
  112. left_img.setImageDrawable(getResources().getDrawable(resId));
  113. }
  114.  
  115. /**
  116. * 设置标题和颜色
  117. *
  118. * @param text
  119. * @param colorId
  120. * 颜色
  121. */
  122. protected void showTitleText(String text, int colorId) {
  123. if (!TextUtils.isEmpty(text)) {
  124. title_text.setText(text);
  125. }
  126. if (colorId != 0) {
  127. title_text.setTextColor(getResources().getColor(colorId));
  128. }
  129. }
  130.  
  131. /**
  132. * 只设置标题文字
  133. *
  134. * @param text
  135. */
  136. protected void showTitleText(String text) {
  137. showTitleText(text, 0);
  138. }
  139.  
  140. /**
  141. * 只设置标题颜色
  142. *
  143. * @param colorId
  144. */
  145. protected void showTitleText(int colorId) {
  146. showTitleText("", colorId);
  147. }
  148.  
  149. /**
  150. * 设置中间的背景图片,没有文字
  151. *
  152. * @param resId
  153. */
  154. @SuppressLint("NewApi")
  155. protected void showTitleBackground(int resId) {
  156. title_text.setText("");
  157. title_text.setBackground(getResources().getDrawable(resId));
  158.  
  159. }
  160.  
  161. /**
  162. * 设置标题右边的内容
  163. *
  164. * @param text
  165. * 文字内容
  166. * @param colorId
  167. * 文字颜色
  168. * @param textSize
  169. * 文字大小
  170. * @param resId
  171. * 图片id
  172. */
  173. protected void showTitleRightContent(String text, int colorId,
  174. int textSize, int resId) {
  175. if (!TextUtils.isEmpty(text)) {
  176. right_text.setVisibility(View.VISIBLE);
  177. right_text.setText(text);
  178. if (colorId != 0) {
  179. right_text.setTextColor(getResources().getColor(colorId));
  180. }
  181. if (textSize != 0) {
  182. right_text.setTextSize(textSize);
  183. }
  184. }
  185.  
  186. if (resId != 0) {
  187. right_img.setVisibility(View.VISIBLE);
  188. right_img.setImageDrawable(getResources().getDrawable(resId));
  189. }
  190. }
  191.  
  192. /**
  193. * 设置标题右边的内容
  194. *
  195. * @param text
  196. * 文字内容
  197. * @param colorId
  198. * 文字颜色
  199. * @param textSize
  200. * 文字大小
  201. */
  202. protected void showTitleRightContent(String text, int colorId, int textSize) {
  203. showTitleRightContent(text, colorId, textSize, 0);
  204. }
  205.  
  206. /**
  207. * 设置文字内容、颜色、大小
  208. *
  209. * @param text
  210. * @param colorId
  211. */
  212. protected void showTitleRightContent(String text, int colorId) {
  213. showTitleRightContent(text, colorId, 0, 0);
  214. }
  215.  
  216. /**
  217. * 只设置文字内容
  218. *
  219. * @param text
  220. */
  221. protected void showTitleRightContent(String text) {
  222. showTitleRightContent(text, 0, 0, 0);
  223. }
  224.  
  225. /**
  226. * 只设置右边的图片
  227. *
  228. * @param resId
  229. */
  230. protected void showTitleRightContent(int resId) {
  231. showTitleRightContent(null, 0, 0, resId);
  232. }
  233.  
  234. }

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. [ 高并发]Java高并发编程系列第二篇--线程同步

    高并发,听起来高大上的一个词汇,在身处于互联网潮的社会大趋势下,高并发赋予了更多的传奇色彩.首先,我们可以看到很多招聘中,会提到有高并发项目者优先.高并发,意味着,你的前雇主,有很大的业务层面的需求, ...

  2. Android UI体验之全屏沉浸式透明状态栏效果

    前言: Android 4.4之后谷歌提供了沉浸式全屏体验, 在沉浸式全屏模式下, 状态栏. 虚拟按键动态隐藏, 应用可以使用完整的屏幕空间, 按照 Google 的说法, 给用户一种 身临其境 的体 ...

  3. NuGet镜像上线试运行

    为解决国内访问NuGet服务器速度不稳定的问题,我们用阿里云服务器搭建了一个NuGet镜像,目前已上线试运行. 使用NuGet镜像源的方法如下: 1)NuGet镜像源地址:https://nuget. ...

  4. 采用MiniProfiler监控EF与.NET MVC项目(Entity Framework 延伸系列1)

    前言 Entity Framework 延伸系列目录 今天来说说EF与MVC项目的性能检测和监控 首先,先介绍一下今天我们使用的工具吧. MiniProfiler~ 这个东西的介绍如下: MVC Mi ...

  5. 红黑树——算法导论(15)

    1. 什么是红黑树 (1) 简介     上一篇我们介绍了基本动态集合操作时间复杂度均为O(h)的二叉搜索树.但遗憾的是,只有当二叉搜索树高度较低时,这些集合操作才会较快:即当树的高度较高(甚至一种极 ...

  6. jquery.Callbacks的实现

    前言 本人是一个热爱前端的菜鸟,一直喜欢学习js原生,对于jq这种js库,比较喜欢理解他的实现,虽然自己能力有限,水平很低,但是勉勉强强也算是能够懂一点吧,对于jq源码解读系列,博客园里有很多,推荐大 ...

  7. 微信网页开发之获取用户unionID的两种方法--基于微信的多点登录用户识别

    假设网站A有以下功能需求:1,pc端微信扫码登录:2,微信浏览器中的静默登录功能需求,这两种需求就需要用到用户的unionID,这样才能在多个登录点(终端)识别用户.那么这两种需求下用户的unionI ...

  8. Could not evaluate expression

    VS15 调试变量不能显示值,提示:Could not evaluate expression 解决办法: 选择"在调试时显示运行以单击编辑器中的按钮"重启VS即可. 可参考:Vi ...

  9. springmvc+bootstrap+jquerymobile完整搭建案例(提供下载地址)

    用一张简单的截图说明下,然后提供一个下载地址. bootstrap的大部分样式官方都是写好的,所以只需要class="官方样式即可",具体可以看官方的案例,下面来个地址 http: ...

  10. Dynamics CRM 2015-Data Encryption激活报错

    在CRM的日常开发中,Data Encryption经常是不得不开启的一个功能.但是有时,我们可能遇到一种情况,Organization导入之后,查看Data Encryption是已激活的状态,但是 ...