Skip to content

Commit

Permalink
feat: add ViewStub test case
Browse files Browse the repository at this point in the history
  • Loading branch information
hi-dhl committed Dec 31, 2020
1 parent 9192209 commit 1b26bb5
Show file tree
Hide file tree
Showing 10 changed files with 161 additions and 11 deletions.
4 changes: 4 additions & 0 deletions app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,10 @@
<activity
android:name="com.hi.dhl.demo.binding.navigation.NavigationActivity"
android:screenOrientation="portrait" />

<activity
android:name=".databind.ViewStubActivity"
android:screenOrientation="portrait" />
</application>

</manifest>
Original file line number Diff line number Diff line change
Expand Up @@ -56,12 +56,20 @@ class DatBindActivity : AppCompatActivity(), View.OnClickListener {
btnDialog -> DataBindDialog(this@DatBindActivity, lifecycle).show()
btnRecycle -> DataBindRecycleActivity.startActivity(this@DatBindActivity)
btnNavigation -> NavigationActivity.startActivity(this@DatBindActivity)
btnStub -> ViewStubActivity.startActivtiy(this@DatBindActivity)
}
}
}

private fun getViews() = with(binding) {
arrayListOf<View>(btnBindRandom, btnBindAdapter, btnDialog, btnRecycle, btnNavigation)
arrayListOf<View>(
btnBindRandom,
btnBindAdapter,
btnDialog,
btnRecycle,
btnNavigation,
btnStub
)
}

companion object {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
package com.hi.dhl.demo.binding.databind

import android.app.Activity
import android.content.Intent
import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
import androidx.databinding.DataBindingUtil
import androidx.databinding.ViewStubProxy
import com.hi.dhl.binding.databind
import com.hi.dhl.demo.binding.R
import com.hi.dhl.demo.binding.databinding.ActivityViewStubBinding
import com.hi.dhl.demo.binding.databinding.ViewStubBinding
import com.hi.dhl.demo.binding.databinding.ViewStubDataBinding

/**
* <pre>
* author: dhl
* date : 2020/12/31
* desc :
* </pre>
*/
class ViewStubActivity : AppCompatActivity() {

val binding: ActivityViewStubBinding by databind(R.layout.activity_view_stub)

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)

binding.viewStub.setOnInflateListener { stub, inflated ->

// ViewBinding
val viewStub: ViewStubBinding = ViewStubBinding.bind(inflated)
viewStub.tvTitle.setText("使用 ViewStub 加载 ViewBinding 布局")

}

binding.viewStubData.setOnInflateListener { stub, inflated ->

// DataBinding
val dataViewStub: ViewStubDataBinding = DataBindingUtil.bind(inflated)!!
dataViewStub.tvTitle.setText("使用 ViewStub 加载 DataBinding 布局")
}

inflateLayout(binding.viewStub)
inflateLayout(binding.viewStubData)
}

private fun inflateLayout(viewStubProxy: ViewStubProxy) {
if (!viewStubProxy.isInflated) {
viewStubProxy.viewStub!!.inflate()
}
}

companion object {

fun startActivtiy(activity: Activity) {
activity.startActivity(Intent(activity, ViewStubActivity::class.java))
}

}

}
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import android.view.View
import androidx.fragment.app.Fragment
import com.hi.dhl.binding.viewbind
import com.hi.dhl.demo.binding.R
import com.hi.dhl.demo.binding.databind.ViewStubActivity
import com.hi.dhl.demo.binding.databind.list.DataBindRecycleActivity
import com.hi.dhl.demo.binding.databinding.FragmentViewBindBinding
import com.hi.dhl.demo.binding.databinding.LayoutItem1Binding
Expand Down Expand Up @@ -37,15 +38,10 @@ class ViewBindFragment : Fragment(R.layout.fragment_view_bind), View.OnClickList

with(binding) {
tvTitle.setText("直接使用布局中的控件")
include.includeTvTitle.setText("使用 include 布局中的控件, 不包含 merge")
btnDialog.setOnClickListener {
this@ViewBindFragment.context?.let { ctx -> ViewBindDialog(ctx, lifecycle).show() }
}
}

val bindingMerge = LayoutItem1Binding.bind(binding.root)
with(bindingMerge) {
mergeTvTitle.setText("使用 include 布局中的控件, 包含 merge")
// include without merge
include.includeTvTitle.setText("使用 include 布局中的控件, 不包含 merge")
LayoutItem1Binding.bind(root).mergeTvTitle.setText("使用 include 布局中的控件, 包含 merge")
}

getViews().forEach {
Expand All @@ -55,7 +51,7 @@ class ViewBindFragment : Fragment(R.layout.fragment_view_bind), View.OnClickList
}

private fun getViews() = with(binding) {
arrayListOf<View>(btnDialog, btnRecycle, btnNavigation)
arrayListOf<View>(btnDialog, btnRecycle, btnNavigation, btnDialog, btnStub)
}

override fun onClick(v: View) {
Expand All @@ -70,6 +66,7 @@ class ViewBindFragment : Fragment(R.layout.fragment_view_bind), View.OnClickList
}
btnRecycle -> DataBindRecycleActivity.startActivity(requireActivity())
btnNavigation -> NavigationActivity.startActivity(requireActivity())
btnStub -> ViewStubActivity.startActivtiy(requireActivity())
else -> {
}
}
Expand Down
8 changes: 8 additions & 0 deletions app/src/main/res/layout/activity_data_bind.xml
Original file line number Diff line number Diff line change
Expand Up @@ -107,5 +107,13 @@
android:layout_marginTop="@dimen/margin_20dp"
android:layout_marginBottom="@dimen/margin_20dp"
android:text="在 Navigation 当中的使用" />

<androidx.appcompat.widget.AppCompatButton
android:id="@+id/btnStub"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/margin_20dp"
android:layout_marginBottom="@dimen/margin_20dp"
android:text="使用 ViewStub 加载布局" />
</LinearLayout>
</layout>
6 changes: 5 additions & 1 deletion app/src/main/res/layout/activity_view_bind.xml
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/container"
android:layout_width="match_parent"
Expand All @@ -9,4 +8,9 @@
android:orientation="vertical"
tools:context=".MainActivity">

<ViewStub
android:id="@+id/viewStrub"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout="@layout/view_stub" />
</FrameLayout>
22 changes: 22 additions & 0 deletions app/src/main/res/layout/activity_view_stub.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android">

<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:orientation="vertical">

<ViewStub
android:id="@+id/viewStub"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout="@layout/view_stub" />

<ViewStub
android:id="@+id/viewStubData"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout="@layout/view_stub_data" />
</LinearLayout>
</layout>
8 changes: 8 additions & 0 deletions app/src/main/res/layout/fragment_view_bind.xml
Original file line number Diff line number Diff line change
Expand Up @@ -48,4 +48,12 @@
android:layout_marginTop="@dimen/margin_20dp"
android:layout_marginBottom="@dimen/margin_20dp"
android:text="在 Navigation 当中的使用" />

<androidx.appcompat.widget.AppCompatButton
android:id="@+id/btnStub"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/margin_20dp"
android:layout_marginBottom="@dimen/margin_20dp"
android:text="使用 ViewStub 加载布局" />
</LinearLayout>
17 changes: 17 additions & 0 deletions app/src/main/res/layout/view_stub.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:orientation="vertical">

<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/tvTitle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/margin_20dp"
android:layout_marginBottom="@dimen/margin_20dp"
android:text="----"
android:textColor="@color/black" />
</LinearLayout>

20 changes: 20 additions & 0 deletions app/src/main/res/layout/view_stub_data.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android">

<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:orientation="vertical">

<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/tvTitle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/margin_20dp"
android:layout_marginBottom="@dimen/margin_20dp"
android:text="----"
android:textColor="@color/black" />
</LinearLayout>
</layout>

0 comments on commit 1b26bb5

Please sign in to comment.