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项目做得多了.会发现原来非常多基础的东西都是能够复用,这个系列介绍一些自己项 ...
随机推荐
- [ 高并发]Java高并发编程系列第二篇--线程同步
高并发,听起来高大上的一个词汇,在身处于互联网潮的社会大趋势下,高并发赋予了更多的传奇色彩.首先,我们可以看到很多招聘中,会提到有高并发项目者优先.高并发,意味着,你的前雇主,有很大的业务层面的需求, ...
- Android UI体验之全屏沉浸式透明状态栏效果
前言: Android 4.4之后谷歌提供了沉浸式全屏体验, 在沉浸式全屏模式下, 状态栏. 虚拟按键动态隐藏, 应用可以使用完整的屏幕空间, 按照 Google 的说法, 给用户一种 身临其境 的体 ...
- NuGet镜像上线试运行
为解决国内访问NuGet服务器速度不稳定的问题,我们用阿里云服务器搭建了一个NuGet镜像,目前已上线试运行. 使用NuGet镜像源的方法如下: 1)NuGet镜像源地址:https://nuget. ...
- 采用MiniProfiler监控EF与.NET MVC项目(Entity Framework 延伸系列1)
前言 Entity Framework 延伸系列目录 今天来说说EF与MVC项目的性能检测和监控 首先,先介绍一下今天我们使用的工具吧. MiniProfiler~ 这个东西的介绍如下: MVC Mi ...
- 红黑树——算法导论(15)
1. 什么是红黑树 (1) 简介 上一篇我们介绍了基本动态集合操作时间复杂度均为O(h)的二叉搜索树.但遗憾的是,只有当二叉搜索树高度较低时,这些集合操作才会较快:即当树的高度较高(甚至一种极 ...
- jquery.Callbacks的实现
前言 本人是一个热爱前端的菜鸟,一直喜欢学习js原生,对于jq这种js库,比较喜欢理解他的实现,虽然自己能力有限,水平很低,但是勉勉强强也算是能够懂一点吧,对于jq源码解读系列,博客园里有很多,推荐大 ...
- 微信网页开发之获取用户unionID的两种方法--基于微信的多点登录用户识别
假设网站A有以下功能需求:1,pc端微信扫码登录:2,微信浏览器中的静默登录功能需求,这两种需求就需要用到用户的unionID,这样才能在多个登录点(终端)识别用户.那么这两种需求下用户的unionI ...
- Could not evaluate expression
VS15 调试变量不能显示值,提示:Could not evaluate expression 解决办法: 选择"在调试时显示运行以单击编辑器中的按钮"重启VS即可. 可参考:Vi ...
- springmvc+bootstrap+jquerymobile完整搭建案例(提供下载地址)
用一张简单的截图说明下,然后提供一个下载地址. bootstrap的大部分样式官方都是写好的,所以只需要class="官方样式即可",具体可以看官方的案例,下面来个地址 http: ...
- Dynamics CRM 2015-Data Encryption激活报错
在CRM的日常开发中,Data Encryption经常是不得不开启的一个功能.但是有时,我们可能遇到一种情况,Organization导入之后,查看Data Encryption是已激活的状态,但是 ...