Skip to content

Commit

Permalink
feat: add navigation test case
Browse files Browse the repository at this point in the history
  • Loading branch information
hi-dhl committed Dec 21, 2020
1 parent 49b55dc commit 60f4a14
Show file tree
Hide file tree
Showing 15 changed files with 324 additions and 9 deletions.
20 changes: 14 additions & 6 deletions app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -41,18 +41,26 @@ android {

dependencies {
ext.fragment = "1.2.5"
ext.koin_version = "2.1.5"
ext.remote = true
ext.koin_version = "2.2.1"
ext.remote = false
ext.nav_version = "2.3.2"
ext.constraintlayout = "2.0.4"
ext.material = "1.2.1"
ext.appcompat = "1.2.0"
ext.ktx = "1.3.2"

implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
implementation 'androidx.core:core-ktx:1.3.2'
implementation 'androidx.appcompat:appcompat:1.2.0'
implementation 'com.google.android.material:material:1.2.1'
implementation 'androidx.constraintlayout:constraintlayout:2.0.4'
implementation "androidx.core:core-ktx:${ktx}"
implementation "androidx.appcompat:appcompat:${appcompat}"
implementation "com.google.android.material:material:${material}"
implementation "androidx.constraintlayout:constraintlayout:${constraintlayout}"

implementation "org.koin:koin-androidx-viewmodel:${koin_version}"
implementation "io.coil-kt:coil:1.1.0"

implementation"androidx.navigation:navigation-fragment-ktx:$nav_version"
implementation"androidx.navigation:navigation-ui-ktx:$nav_version"

if (remote) {
implementation 'com.hi-dhl:binding:1.0.4'
} else {
Expand Down
3 changes: 3 additions & 0 deletions app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,9 @@
android:name=".databind.list.DataBindRecycleActivity"
android:screenOrientation="portrait" />

<activity
android:name="com.hi.dhl.demo.binding.navigation.NavigationActivity"
android:screenOrientation="portrait" />
</application>

</manifest>
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ import com.hi.dhl.demo.binding.MainViewModel
import com.hi.dhl.demo.binding.R
import com.hi.dhl.demo.binding.databind.list.DataBindRecycleActivity
import com.hi.dhl.demo.binding.databinding.ActivityDataBindBinding
import com.hi.dhl.demo.binding.navigation.NavigationActivity
import org.koin.androidx.viewmodel.ext.android.viewModel

/**
Expand Down Expand Up @@ -55,12 +56,13 @@ class DatBindActivity : AppCompatActivity(), View.OnClickListener {
btnBindAdapter -> viewModel.bindUser()
btnDialog -> DataBindDialog(this@DatBindActivity, lifecycle).show()
btnRecycle -> DataBindRecycleActivity.startActivity(this@DatBindActivity)
btnNavigation -> NavigationActivity.startActivity(this@DatBindActivity)
}
}
}

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

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

import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.fragment.app.Fragment
import androidx.navigation.Navigation
import com.hi.dhl.binding.viewbind
import com.hi.dhl.demo.binding.R
import com.hi.dhl.demo.binding.databinding.FragmentNav1Binding

/**
* <pre>
* author: dhl
* date : 2020/12/21
* desc :
* </pre>
*/
class FragmentNav1 : Fragment() {

val binding: FragmentNav1Binding by viewbind()

override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View {
return binding.root
}


override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
binding.btnJump.setOnClickListener {
Navigation.findNavController(it).navigate(R.id.action_fragmentNav1_to_fragmentNav2)
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
package com.hi.dhl.demo.binding.navigation

import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.fragment.app.Fragment
import androidx.navigation.Navigation
import com.hi.dhl.binding.databind
import com.hi.dhl.demo.binding.MainViewModel
import com.hi.dhl.demo.binding.R
import com.hi.dhl.demo.binding.databinding.FragmentNav2Binding
import org.koin.androidx.viewmodel.ext.android.viewModel

/**
* <pre>
* author: dhl
* date : 2020/12/21
* desc :
* </pre>
*/
class FragmentNav2 : Fragment() {

val binding: FragmentNav2Binding by databind()
val viewModel: MainViewModel by viewModel()

override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View {

return binding.apply {
lifecycleOwner = this@FragmentNav2
mainViewModel = viewModel
}.root
}

override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)

viewModel.generateTimber()
binding.btnJump.setOnClickListener {
Navigation.findNavController(it).navigate(R.id.action_fragmentNav2_to_fragmentNav3)
}
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
package com.hi.dhl.demo.binding.navigation

import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.fragment.app.Fragment
import androidx.navigation.Navigation
import com.hi.dhl.binding.viewbind
import com.hi.dhl.demo.binding.R
import com.hi.dhl.demo.binding.databinding.FragmentNav3Binding

/**
* <pre>
* author: dhl
* date : 2020/12/21
* desc :
* </pre>
*/
class FragmentNav3 : Fragment() {

val binding: FragmentNav3Binding by viewbind()

override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View {
return binding.root
}

override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
binding.btnJump.setOnClickListener {
Navigation.findNavController(it).navigate(R.id.action_fragmentNav3_to_fragmentNav1)
}
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
package com.hi.dhl.demo.binding.navigation

import android.app.Activity
import android.content.Intent
import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
import com.hi.dhl.demo.binding.R

/**
* <pre>
* author: dhl
* date : 2020/12/21
* desc :
* </pre>
*/
class NavigationActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_navigation)
}

companion object {
fun startActivity(activity: Activity) {
activity.startActivity(Intent(activity, NavigationActivity::class.java))
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ import com.hi.dhl.demo.binding.R
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
import com.hi.dhl.demo.binding.navigation.NavigationActivity

/**
* <pre>
Expand Down Expand Up @@ -54,7 +55,7 @@ class ViewBindFragment : Fragment(R.layout.fragment_view_bind), View.OnClickList
}

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

override fun onClick(v: View) {
Expand All @@ -67,7 +68,8 @@ class ViewBindFragment : Fragment(R.layout.fragment_view_bind), View.OnClickList
ViewBindDialog(ctx, lifecycle).show()
}
}
btnRecycle -> DataBindRecycleActivity.startActivity(activity!!)
btnRecycle -> DataBindRecycleActivity.startActivity(requireActivity())
btnNavigation -> NavigationActivity.startActivity(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 @@ -99,5 +99,13 @@
android:layout_height="wrap_content"
android:layout_marginBottom="@dimen/margin_20dp"
android:text="在 RecycleView 当中的使用" />

<androidx.appcompat.widget.AppCompatButton
android:id="@+id/btnNavigation"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/margin_20dp"
android:layout_marginBottom="@dimen/margin_20dp"
android:text="在 Navigation 当中的使用" />
</LinearLayout>
</layout>
17 changes: 17 additions & 0 deletions app/src/main/res/layout/activity_navigation.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"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:orientation="vertical">

<fragment
android:id="@+id/navFragment"
android:name="androidx.navigation.fragment.NavHostFragment"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:defaultNavHost="true"
app:navGraph="@navigation/nav_graph" />

</LinearLayout>
20 changes: 20 additions & 0 deletions app/src/main/res/layout/fragment_nav_1.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
<?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="match_parent"
android:gravity="center"
android:orientation="vertical">

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="这是 FragmentNav1 通过 ViewBinding 绑定" />

<androidx.appcompat.widget.AppCompatButton
android:id="@+id/btnJump"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/margin_20dp"
android:text="跳转 FragmentNav2" />

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

<data>

<variable
name="mainViewModel"
type="com.hi.dhl.demo.binding.MainViewModel" />
</data>

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

<androidx.appcompat.widget.AppCompatTextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="这是 FragmentNav2 通过 DataBinding 绑定" />

<androidx.appcompat.widget.AppCompatTextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="@dimen/margin_20dp"
android:layout_marginBottom="@dimen/margin_10dp"
android:gravity="center_horizontal"
android:text="@={mainViewModel.inputnNumber}"
android:textColor="@color/black" />

<androidx.appcompat.widget.AppCompatButton
android:id="@+id/btnJump"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/margin_20dp"
android:text="跳转 FragmentNav3" />
</LinearLayout>

</layout>
20 changes: 20 additions & 0 deletions app/src/main/res/layout/fragment_nav_3.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
<?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="match_parent"
android:gravity="center"
android:orientation="vertical">

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="这是 FragmentNav3 通过 ViewBinding 绑定" />

<androidx.appcompat.widget.AppCompatButton
android:id="@+id/btnJump"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/margin_20dp"
android:text="跳转 FragmentNav1" />

</LinearLayout>
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 @@ -40,4 +40,12 @@
android:layout_marginTop="@dimen/margin_20dp"
android:layout_marginBottom="@dimen/margin_20dp"
android:text="在 RecycleView 当中的使用" />

<androidx.appcompat.widget.AppCompatButton
android:id="@+id/btnNavigation"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/margin_20dp"
android:layout_marginBottom="@dimen/margin_20dp"
android:text="在 Navigation 当中的使用" />
</LinearLayout>
Loading

0 comments on commit 60f4a14

Please sign in to comment.