案发现场
之前在做的时候发现 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) - 改头换面&深度清理
网友评论