Skip to content
Jude edited this page Oct 7, 2015 · 5 revisions

BeamBaseActivity是对BeamAppCompatActivity的功能拓展。所以建议使用BeamBaseActivity及下面2个模板型拓展

##视图拓展

 *                    DecorView
 *                        |
 *                    LinearLayout
 *                    /         \
 *                   /           \
 *           FrameLayout       FrameLayout
 *            |             (mContentParent)
 *            |                   /      \      \
 *         TextView     FrameLayout    附加View1 附加View2
 *                      (mContent)
 *                  (在一开始就装入View树)
 *                          |
 *                      setContent()
 *                  (什么时候装入View不确定)

BeamBaseActivity对ContentView多加了一层视图拓展层(mContentParent)。借此可以实现比如显示加载界面。显示错误页面。显示自定义覆盖图层等功能。
getExpansion().showProgressPage() getExpansion().dismissProgressPage()
getExpansion().showErrorPage() getExpansion().dismissErrorPage()
getExpansion().addCustomOverlayView(view) getExpansion().removeCustomOverlayView(view)

##Activity功能拓展 getExpansion()返回一个功能拓展类。Activity对自身功能的拓展委托给ViewExpansionDelegate这个类实现。这个类的功能也会持续增加。DefaultViewExpansionDelegate是对这些拓展的默认实现。也允许自定义这些方法的实现。重写createViewExpansionDelegate方法来为本Activity提供拓展类。

@Override
public ViewExpansionDelegate createViewExpansionDelegate() {
    return super.createViewExpansionDelegate();
}

通过Beam全局设置默认ViewExpansionDelegate:

Beam.setViewExpansionDelegateProvider(new ViewExpansionDelegateProvider() {
                @Override
                public ViewExpansionDelegate createViewExpansionDelegate(BeamBaseActivity activity) {
                    return new PaddingTopViewExpansion(activity);
                }
            });

已拓展这些功能:

public void showProgressDialog(String title){}
public void dismissProgressDialog(){}
public View showProgressPage(){return  null;}
public void dismissProgressPage(){}
public View showErrorPage(){return  null;}
public void dismissErrorPage(){}
public void addCustomOverlayView(View view){}
public void removeCustomOverlayView(View view){}

##自动配置Toolbar 如果你使用了Toolbar。将他的id设为toolbar。然后你将不用再setSupportActionBar()。会自动处理,设置为可返回,并处理返回事件。如果你不需要返回按钮,调用getSupportActionBar().setDisplayHomeAsUpEnabled(false);取消即可。如果你没使用Toolbar。也不会有什么影响。

##findViewByid的便捷写法 Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 等同于 Toolbar toolbar = $(R.id.toolbar)

Toolbar toolbar = (Toolbar) view.findViewById(R.id.toolbar); 等同于 Toolbar toolbar = $(view,R.id.toolbar)

Clone this wiki locally