zoukankan      html  css  js  c++  java
  • 封装一个 TopBarBaseActivity

    什么是快速开发嘞,看这个效果

    然而我只用了这么几行代码:

    activity_main.xml 里面什么也没有!

    其实说白了哈,就是我把 TopBar 封装在 TopBarBaseActivity 里面,然后 MainActivity 只需 继承 TopBarBaseActivity 即可。 你想一想,以后每个上面有 TopBar 的界面,只需 让你的 XXActivity extends TopBarBaseActivity,就可以随意的设置你的 TopBar 了,多爽啊!。

    下面跟着我一步一步的实现我们想要的 TopBarBaseActivity。

    2开始

    (1)依赖 appcompat-v7

    新建一个项目,因为 Toolbar 是在 appcompat-v7 包下,所以确保已经依赖 appcompat-v7。

    如果没有请加上,例如:

    compile 'com.android.support:appcompat-v7:25.3.0'

    (2)设置 NoActionBar 主题

    由于我们使用 Toolbar 代替 ActionBar,所以先把 ActionBar 去掉,我们通过设置 Application 的 theme 来隐藏,这样项目中所有的界面的 ActionBar 就都隐藏了。


    先修改 style.xml 中的 AppTheme 继承自 

    Theme.AppCompat.Light.NoActionBar

    <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>
    </style>

    AndroidManifest.xml 文件中默认就会设置主题的

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme">
        ...
    </application>

    (3)创建 TopBarBaseActivity

    new 一个项目之后会默认创建一个 MainActivity.java 和 activity_main.xml ,然后我们再自己新建两个文件 TopBarBaseActivity.java 和 activity_base_top_bar.xml

    然后 TopBarBaseActivity 继承 AppCompatActivity,MainActivity 继承 TopBarBaseActivity

    (4)把 TopBar 封装在 TopBarBaseActivity

    首先我们在 activity_base_top_bar.xml 中 添加 Toolbar,然后在 TopBarBaseActivity 中获取并初始化设置 Toolbar

    到这里,MainActivity 和 TopBarBaseActivity 还是显示它们各自自己的布局,所以我们要实现让 MainActivity 的布局 显示在 TopBarBaseActivity 的布局中,我们先在 activity_base_top_bar.xml 中添加一个 FrameLayout ,这样我们就可以把 MainActivity 的布局解析到 FrameLayout 里面

    然后我们修改下 TopBarBaseActivity

    注意:为了设置两个抽象方法,我们将 TopBarBaseActivity 设置成了抽象类。

    接下来让我们的 MainActivity 自动实现两个父类的抽象方法、删掉 onCreate 方法,并通过 getContentView 方法返回布局 activity_main 的 id。

    现在你运行一下项目,我们并没有在 MainActivity 的布局中添加 ToolBar,但是运行出来的效果是 Toolbar 已经存在了。

    (5)实现一句话添加标题

    接下来我们要实现在 MainActivity 里面 setTitle("标题");一句话设置标题。

    首先我们修改 activity_base_top_bar.xml 布局文件,在 Toolbar 中添加一个 TextView 用来显示标题

    再修改 TopBarBaseActivity 添加一个 setTitle 方法

    然后我们就可以在 MainActivity 中调用了 setTitle 方法了


    效果图:

    (6)实现一句话添加左上角按钮

    接下来我们的目标是通过在 MainActivity 中 一句话 实现自定义 TopBar 左上角的 图标 和 点击监听

    首先修改 TopBarBaseActivity, 我们需要造一个接口并声明

    接下来我们就可以在 MainActivity 中这样写

     

    运行一下试试是不是只需一句话就设置了 TopBar 左按钮的 图标 和 点击事件 !

     

    (7)实现一句话添加右上角按钮

    先创建一个 menu 文件夹和一个 menu 资源文件

    内容是这样的:

    继续修改 TopBarBaseActivity ,添加如下代码:

    现在我们再 MainActivity 调用 setTopRightButton 方法的姿势是这样的

    现在运行看下效果

    到这里我们的 TopBarBaseActivity 就封装完了,过程比较简单,重要的是这个封装的思路,其实还有很多我们常用的布局都是可以进行封装的。

    最后

    可能有些人还会有些疑问:为什么要用 ToolBar 进行封装呢,自己写一个 TopBar 不是更好吗?

    是的,如果你用不惯 Toolbar 你就可以根据自己的习惯写一个扩展性更好的 TopBar。但是我觉得 Toolbar 其实也有一些优质的特点的:

    • 官方提供,符合标准,界面统一。

    • 自带点击效果。

    • 自带点击热区。

  • 相关阅读:
    python笔记01
    【工具大道】ssh登录Linux服务器,并显示图形化界面
    【夯实PHP基础】PHP常用类和函数总结
    【开发软件】 在Mac下配置php开发环境:Apache+php+MySql
    【工具大道】UML的点点滴滴
    【ctags/cscope/project安装使用】给神编辑器vim添加新的翅膀
    PHP程序员的技术成长规划
    【夯实PHP基础】PHPUnit -- PHP测试框架
    【夯实PHP基础】PHP多进程-- pcntl_fork实现
    【工匠大道】升级Mac下的svn,解决命令行不能使用svn的问题
  • 原文地址:https://www.cnblogs.com/huolongluo/p/6799961.html
Copyright © 2011-2022 走看看