Android标题栏(TitleBar)绝佳解决方案

编程入门 行业动态 更新时间:2024-10-11 17:21:10

Android标题栏(TitleBar)<a href=https://www.elefans.com/category/jswz/34/1711886.html style=绝佳解决方案"/>

Android标题栏(TitleBar)绝佳解决方案

标题栏框架

  • 项目地址:Github
  • 博客地址:Android标题栏(TitleBar)绝佳解决方案
  • 想了解实现原理的可以参考文章:纯手工打造一个通用的标题栏 TitleBar
集成步骤
  • 如果你的项目 Gradle 配置是在 7.0 以下,需要在 build.gradle 文件中加入
allprojects {repositories {// JitPack 远程仓库: { url '' }}
}
  • 如果你的 Gradle 配置是 7.0 及以上,则需要在 settings.gradle 文件中加入
dependencyResolutionManagement {repositories {// JitPack 远程仓库: { url '' }}
}
  • 配置完远程仓库后,在项目 app 模块下的 build.gradle 文件中加入远程依赖
android {// 支持 JDK 1.8compileOptions {targetCompatibility JavaVersion.VERSION_1_8sourceCompatibility JavaVersion.VERSION_1_8}
}dependencies {// 标题栏框架: 'com.github.getActivity:TitleBar:10.5'
}
布局属性大全
  • 不同版本的 xml 属性适配请点击这里查看
<declare-styleable name="TitleBar"><!-- 标题栏背景 --><attr name="android:background" /><!-- 标题栏样式 --><attr name="barStyle"><enum name="light" value="0x10" /><enum name="night" value="0x20" /><enum name="transparent" value="0x30" /><enum name="ripple" value="0x40" /></attr><!-- 子控件垂直内间距(可用于调整标题栏自适应的高度) --><attr name="childVerticalPadding" format="dimension" /><!-- 中间标题 --><attr name="title" format="string" /><attr name="titleColor" format="reference|color" /><attr name="titleSize" format="dimension" /><attr name="titleGravity"><flag name="left" value="0x03" /><flag name="right" value="0x05" /><flag name="center" value="0x11" /><flag name="start" value="0x00800003" /><flag name="end" value="0x00800005" /></attr><attr name="titleStyle"><flag name="normal" value="0" /><flag name="bold" value="1" /><flag name="italic" value="2" /></attr><attr name="titleIcon" format="reference" /><attr name="titleIconWidth" format="dimension" /><attr name="titleIconHeight" format="dimension" /><attr name="titleIconPadding" format="dimension" /><attr name="titleIconTint" format="color" /><attr name="titleIconGravity"><flag name="top" value="0x30" /><flag name="bottom" value="0x50" /><flag name="left" value="0x03" /><flag name="right" value="0x05" /><flag name="start" value="0x00800003" /><flag name="end" value="0x00800005" /></attr><attr name="titleHorizontalPadding" format="dimension" /><!-- 中间标题文本溢出处理模式(默认开启跑马灯) --><attr name="titleOverflowMode"><enum name="none" value="0" /><enum name="start" value="1" /><enum name="middle" value="2" /><enum name="end" value="3" /><enum name="marquee" value="4" /></attr><!-- 左标题 --><attr name="leftTitle" format="string"/><attr name="leftTitleColor" format="reference|color" /><attr name="leftTitleSize" format="dimension" /><attr name="leftTitleStyle"><flag name="normal" value="0" /><flag name="bold" value="1" /><flag name="italic" value="2" /></attr><attr name="leftIcon" format="reference" /><attr name="leftIconWidth" format="dimension" /><attr name="leftIconHeight" format="dimension" /><attr name="leftIconPadding" format="dimension" /><attr name="leftIconTint" format="color" /><attr name="leftIconGravity"><flag name="top" value="0x30" /><flag name="bottom" value="0x50" /><flag name="left" value="0x03" /><flag name="right" value="0x05" /><flag name="start" value="0x00800003" /><flag name="end" value="0x00800005" /></attr><attr name="leftBackground" format="reference|color" /><attr name="leftForeground" format="reference|color" /><attr name="leftHorizontalPadding" format="dimension" /><!-- 左边标题文本溢出处理模式 --><attr name="leftTitleOverflowMode"><enum name="none" value="0" /><enum name="start" value="1" /><enum name="middle" value="2" /><enum name="end" value="3" /><enum name="marquee" value="4" /></attr><!-- 右标题 --><attr name="rightTitle" format="string" /><attr name="rightTitleColor" format="reference|color" /><attr name="rightTitleSize" format="dimension" /><attr name="rightTitleStyle"><flag name="normal" value="0" /><flag name="bold" value="1" /><flag name="italic" value="2" /></attr><attr name="rightIcon" format="reference" /><attr name="rightIconWidth" format="dimension" /><attr name="rightIconHeight" format="dimension" /><attr name="rightIconPadding" format="dimension" /><attr name="rightIconTint" format="color" /><attr name="rightIconGravity"><flag name="top" value="0x30" /><flag name="bottom" value="0x50" /><flag name="left" value="0x03" /><flag name="right" value="0x05" /><flag name="start" value="0x00800003" /><flag name="end" value="0x00800005" /></attr><attr name="rightBackground" format="reference|color" /><attr name="rightForeground" format="reference|color" /><attr name="rightHorizontalPadding" format="dimension" /><!-- 右边标题文本溢出处理模式 --><attr name="rightTitleOverflowMode"><enum name="none" value="0" /><enum name="start" value="1" /><enum name="middle" value="2" /><enum name="end" value="3" /><enum name="marquee" value="4" /></attr><!-- 分割线 --><attr name="lineVisible" format="boolean" /><attr name="lineDrawable" format="reference|color" /><attr name="lineSize" format="dimension" /></declare-styleable>
XML示例
  • 点我查看完整的 Demo 示例
设置监听事件
titleBar.setOnTitleBarListener(new OnTitleBarListener() {@Overridepublic void onLeftClick(TitleBar titleBar) {toast("左项 View 被点击");}@Overridepublic void onTitleClick(TitleBar titleBar) {toast("中间 View 被点击");}@Overridepublic void onRightClick(TitleBar titleBar) {toast("右项 View 被点击");}
});
统一 TitleBar 样式
  • 如果对 TitleBar 的默认样式或者属性不满意,可以在 Application 初始化的地方进行拦截并修改
public class XxxApplication extends Application {@Overridepublic void onCreate() {super.onCreate();// 初始化 TitleBar 默认样式TitleBar.setDefaultStyle(new ITitleBarStyle());}
}
框架混淆规则
  • 在混淆规则文件 proguard-rules.pro 中加入
-keep class com.hjq.bar.** {*;}
框架亮点
  • 性能最佳:不使用 LayoutInflater,而使用代码创建 View 的形式
  • 体验最优:TitleBar 默认样式效果已经非常好,可下载 Demo 测试
  • 支持操控子控件:可以在代码中获取 TitleBar 的子控件进行调用相关的 API
  • 兼容沉浸式状态栏:兼容 Github 的沉浸式状态栏框架,达到完全沉浸的效果
  • 框架兼容性良好:本框架不依赖任何第三方库,支持兼容所有的安卓版本
  • 支持全局配置样式:可以在 Application 中初始化 TitleBar 样式,达到一劳永逸的效果

更多推荐

Android标题栏(TitleBar)绝佳解决方案

本文发布于:2023-11-17 11:17:30,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1642316.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:绝佳   标题栏   解决方案   Android   TitleBar

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!