SimpleNews 项目的重构之旅(6) - 命名规范 & Android Toolbar

字数 389阅读 62

案发现场

之前在做的时候发现 Activity 越来越多,xml 没有可复用的页面,Toolbar 也就相应的多了起来,这时候考虑统一 Toolbar,统一资源 id 命名规则。

目的

  • 每一个控件有唯一的 id 标示;
  • 同样重复控件也持有唯一资源 id 标示;
  • 消灭代码中不合理的地方(重复、不通用);
  • 见明知意;

命名规范

以下为项目中页面布局文件,命名遵守 “类型_页面标示”

例如:

以下为具体到一个布局文件中的命名,遵守 “页面_控件类型_id”,也不是完全非要按照规范一字不差,大致命名满足即可。

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
                android:layout_width="match_parent"
                android:layout_height="match_parent">

    <include
        android:id="@+id/blog_recycle_view_id"
        layout="@layout/recycle_layout"/>

    <RelativeLayout
        android:id="@+id/blog_loading_view_id"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:focusable="false"
        android:layout_centerInParent="true"
        android:gravity="center"
        android:visibility="gone">

        <ProgressBar
            android:id="@+id/blog_progress_bar_id"
            style="@android:style/Widget.ProgressBar.Inverse"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:focusable="false"/>

    </RelativeLayout>

    <LinearLayout
        android:id="@+id/blog_error_view_id"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:gravity="center"
        android:orientation="vertical"
        android:visibility="gone">

        <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:focusable="false"
            android:gravity="center"
            android:text="数据加载失败"/>

        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="10dp"
            android:text="重新加载"/>

    </LinearLayout>

</RelativeLayout>

Toolbar

我这里先处理一版,抽出一个 ActionBarActivity 来集中处理 Toolbar,之前每个 Activitiy 都会出现 mToolbar,违背了重复代码规则,所以必须要处理。

例如:

public abstract class ActionBarActivity extends ThemeActivity {

    private Toolbar mToolbar;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(getLayoutId());
        mToolbar = (Toolbar) findViewById(R.id.base_toolbar);
        initToolBar(mToolbar);
    }

    protected abstract int getLayoutId();

    @Override
    public void setTitle(CharSequence title) {
        if (mToolbar != null) {
            mToolbar.setTitle(title);
        }
    }

    @Override
    public void setTitle(int titleId) {
        if (mToolbar != null) {
            mToolbar.setTitle(ResourceUtil.getString(titleId));
        }
    }

    public Toolbar getToolbar() {
        return mToolbar;
    }
}

SimpleNews 项目的重构之旅其他文章

SimpleNews 项目的重构之旅(1) -项目架构定位 & Gradle 全局配置
SimpleNews 项目的重构之旅(2) - 整理项目 .gitignore 文件
SimpleNews 项目的重构之旅(3) -EventBus 接入
SimpleNews 项目的重构之旅(4) -Gradle for Android 基础知识汇总
SimpleNews 项目的重构之旅(5) - Android Gradle 打包&混淆应用
SimpleNews 项目的重构之旅(6) - 命名规范 & Android Toolbar
SimpleNews 项目的重构之旅(7) - 改头换面&深度清理

推荐阅读更多精彩内容