大前端 Android 開發(fā)日記四:Toolbar 問題及測試編寫
在之前的两天里,已经实现了大部分的功能。但是,仍然遇到了一些 Toolbar 的问题,除了努力地解决这个问题之外,还写了几个简单的测试。
模块化 APK 的 Toolbar 后退按钮
由于应用程序采用的是类似于 RePlugin 的插件化机制。因为在使用样式来将 Toolbar 改为白色的时候,在另外一个 APK 里没有对应的资源。于是,便想着将 Toolbar 改成了个组件:
<RelativeLayout android:layout_width="match_parent" android:layout_height="56dp" android:background="@color/black" android:gravity="center_vertical"> <include layout="@layout/back_button" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:padding="@dimen/length_16" android:text="@string/something"/></RelativeLayout>
对应的后退按钮:
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/fast_back" android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="center" android:orientation="horizontal"> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:paddingEnd="@dimen/length_24" android:paddingStart="@dimen/length_16" android:paddingTop="@dimen/length_16" android:paddingBottom="@dimen/length_16" android:class="lazyload" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB/AAffA0nNPuCLAAAAAElFTkSuQmCC" data-original="@drawable/back_icon"/></LinearLayout>
这样在另外一个 APK 中,只需要有相应的图片资源即可。在 Code Diff 的时候,被告知这个可以用图片来实现——做的时候,忘记了这个。只能明天再去改吧。
Android 处理 Toolbar 后退
对应的处理后退的逻辑,也由:
@Overridepublic boolean onOptionsItemSelected(MenuItem item) { if (item.getItemId() == android.R.id.home) { onBackPressed(); return true; } return super.onOptionsItemSelected(item); }
变成了简单的后退了。
@OnClick(R.id.fast_back)void clickBackText() { onBackPressed(); }
测试
完成了对 Toolbar 的控制之后,我便写了一个测试:
@Mock private DetailView detailView; @Mock private DetailRepository detailRepository; private DetailPresenter detailPresenter; @Test public void shouldShowDetail() throws Exception { DetailModel detail = mock(DetailModel.class); when(detail.getText()).thenReturn(anyListOf(Related.class)); detailPresenter.onLoadDetailSuccess(detail); verify(detailView).showDetail(any(DetailModel.class)); }
在这个测试里,简单的测试了一个回调成功时,会调用显示详情的逻辑。
點擊查看更多內容
為 TA 點贊
評論
評論
共同學習,寫下你的評論
評論加載中...
作者其他優(yōu)質文章
正在加載中
感謝您的支持,我會繼續(xù)努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦