Skip to content

Commit 6bf9d3f

Browse files
Optimize usage
1 parent c7f21e0 commit 6bf9d3f

File tree

10 files changed

+52
-42
lines changed

10 files changed

+52
-42
lines changed

loadingstateview-ktx/build.gradle

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,12 +20,15 @@ android {
2020
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
2121
}
2222
}
23+
2324
compileOptions {
2425
sourceCompatibility JavaVersion.VERSION_1_8
2526
targetCompatibility JavaVersion.VERSION_1_8
2627
}
28+
2729
kotlinOptions {
2830
jvmTarget = '1.8'
31+
freeCompilerArgs += ['-module-name', "loading_state_view_ktx",]
2932
}
3033
}
3134

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
package com.dylanc.loadingstateview
2+
3+
interface Decorative {
4+
val isDecorated: Boolean get() = true
5+
}

loadingstateview-ktx/src/main/java/com/dylanc/loadingstateview/LoadingState.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,9 +23,9 @@ import androidx.fragment.app.Fragment
2323

2424
interface LoadingState {
2525

26-
fun Activity.decorateContentView(listener: OnReloadListener? = null, isDecorated: Boolean = true)
26+
fun Activity.decorateContentView(listener: OnReloadListener? = null, decorative: Decorative? = null)
2727

28-
fun View.decorate(listener: OnReloadListener? = null, isDecorated: Boolean = true): View
28+
fun View.decorate(listener: OnReloadListener? = null, decorative: Decorative? = null): View
2929

3030
fun registerView(vararg viewDelegates: LoadingStateView.ViewDelegate)
3131

loadingstateview-ktx/src/main/java/com/dylanc/loadingstateview/LoadingStateImpl.kt renamed to loadingstateview-ktx/src/main/java/com/dylanc/loadingstateview/LoadingStateDelegate.kt

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -22,15 +22,15 @@ import android.view.ViewGroup
2222
import androidx.annotation.StringRes
2323
import androidx.fragment.app.Fragment
2424

25-
class LoadingStateImpl : LoadingState {
25+
class LoadingStateDelegate : LoadingState {
2626
private var loadingStateView: LoadingStateView? = null
2727

28-
override fun Activity.decorateContentView(listener: OnReloadListener?, isDecorated: Boolean) {
29-
findViewById<ViewGroup>(android.R.id.content).getChildAt(0).decorate(listener, isDecorated)
28+
override fun Activity.decorateContentView(listener: OnReloadListener?, decorative: Decorative?) {
29+
findViewById<ViewGroup>(android.R.id.content).getChildAt(0).decorate(listener, decorative)
3030
}
3131

32-
override fun View.decorate(listener: OnReloadListener?, isDecorated: Boolean): View =
33-
if (isDecorated) LoadingStateView(this, listener).also { loadingStateView = it }.decorView else this
32+
override fun View.decorate(listener: OnReloadListener?, decorative: Decorative?): View =
33+
if (decorative?.isDecorated != false) LoadingStateView(this, listener).also { loadingStateView = it }.decorView else this
3434

3535
override fun registerView(vararg viewDelegates: LoadingStateView.ViewDelegate) {
3636
loadingStateView?.register(*viewDelegates)

loadingstateview/build.gradle

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,17 +22,14 @@ android {
2222
tasks.withType(Javadoc).all { enabled = false }
2323
}
2424

25-
compileOptions {
26-
kotlinOptions.freeCompilerArgs += ['-module-name', "loading_state_view",]
27-
}
28-
2925
compileOptions {
3026
sourceCompatibility JavaVersion.VERSION_1_8
3127
targetCompatibility JavaVersion.VERSION_1_8
3228
}
3329

3430
kotlinOptions {
3531
jvmTarget = '1.8'
32+
freeCompilerArgs += ['-module-name', "loading_state_view",]
3633
}
3734
}
3835

sample-kotlin/src/main/java/com/dylanc/loadingstateview/sample/kotlin/base/BaseActivity.kt

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -18,18 +18,17 @@ package com.dylanc.loadingstateview.sample.kotlin.base
1818

1919
import android.os.Bundle
2020
import androidx.appcompat.app.AppCompatActivity
21+
import com.dylanc.loadingstateview.Decorative
2122
import com.dylanc.loadingstateview.LoadingState
22-
import com.dylanc.loadingstateview.LoadingStateImpl
23+
import com.dylanc.loadingstateview.LoadingStateDelegate
2324
import com.dylanc.loadingstateview.OnReloadListener
2425

2526
abstract class BaseActivity(private val layoutRes: Int) : AppCompatActivity(),
26-
LoadingState by LoadingStateImpl(), OnReloadListener {
27-
28-
open val isDecorated = true
27+
LoadingState by LoadingStateDelegate(), OnReloadListener, Decorative {
2928

3029
override fun onCreate(savedInstanceState: Bundle?) {
3130
super.onCreate(savedInstanceState)
3231
setContentView(layoutRes)
33-
decorateContentView(this, isDecorated)
32+
decorateContentView(this, this)
3433
}
3534
}

sample-kotlin/src/main/java/com/dylanc/loadingstateview/sample/kotlin/base/BaseBindingActivity.kt

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -19,24 +19,23 @@ package com.dylanc.loadingstateview.sample.kotlin.base
1919
import android.os.Bundle
2020
import androidx.appcompat.app.AppCompatActivity
2121
import androidx.viewbinding.ViewBinding
22+
import com.dylanc.loadingstateview.Decorative
2223
import com.dylanc.loadingstateview.LoadingState
23-
import com.dylanc.loadingstateview.LoadingStateImpl
24+
import com.dylanc.loadingstateview.LoadingStateDelegate
2425
import com.dylanc.loadingstateview.OnReloadListener
2526
import com.dylanc.viewbinding.base.ViewBindingUtil
2627

2728
abstract class BaseBindingActivity<VB : ViewBinding> : AppCompatActivity(),
28-
LoadingState by LoadingStateImpl(), OnReloadListener {
29+
LoadingState by LoadingStateDelegate(), OnReloadListener, Decorative {
2930

3031
lateinit var binding: VB private set
3132

3233
open val contentView get() = binding.root
3334

34-
open val isDecorated = true
35-
3635
override fun onCreate(savedInstanceState: Bundle?) {
3736
super.onCreate(savedInstanceState)
3837
binding = ViewBindingUtil.inflateWithGeneric(this, layoutInflater)
39-
setContentView(contentView)
40-
contentView.decorate(this, isDecorated)
38+
setContentView(binding.root)
39+
contentView.decorate(this, this)
4140
}
4241
}

sample-kotlin/src/main/java/com/dylanc/loadingstateview/sample/kotlin/base/BaseBindingFragment.kt

Lines changed: 20 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -22,22 +22,34 @@ import android.view.View
2222
import android.view.ViewGroup
2323
import androidx.fragment.app.Fragment
2424
import androidx.viewbinding.ViewBinding
25+
import com.dylanc.loadingstateview.Decorative
2526
import com.dylanc.loadingstateview.LoadingState
26-
import com.dylanc.loadingstateview.LoadingStateImpl
27+
import com.dylanc.loadingstateview.LoadingStateDelegate
2728
import com.dylanc.loadingstateview.OnReloadListener
2829
import com.dylanc.viewbinding.base.ViewBindingUtil
2930

3031
abstract class BaseBindingFragment<VB : ViewBinding> : Fragment(),
31-
LoadingState by LoadingStateImpl(), OnReloadListener {
32+
LoadingState by LoadingStateDelegate(), OnReloadListener, Decorative {
3233

33-
lateinit var binding: VB private set
34+
private var _binding: VB? = null
35+
val binding get() = _binding!!
3436

35-
open val contentView get() = binding.root
37+
open val contentView: View? get() = null
3638

37-
open val isDecorated = true
39+
override fun onCreateView(
40+
inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?
41+
): View? {
42+
_binding = ViewBindingUtil.inflateWithGeneric(this, inflater, container, false)
43+
return if (contentView != null) {
44+
contentView!!.decorate(this, this)
45+
binding.root
46+
} else {
47+
binding.root.decorate(this, this)
48+
}
49+
}
3850

39-
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
40-
binding = ViewBindingUtil.inflateWithGeneric(this, inflater, container, false)
41-
return contentView.decorate(this, isDecorated)
51+
override fun onDestroyView() {
52+
super.onDestroyView()
53+
_binding = null
4254
}
4355
}

sample-kotlin/src/main/java/com/dylanc/loadingstateview/sample/kotlin/base/BaseFragment.kt

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -21,19 +21,18 @@ import android.view.LayoutInflater
2121
import android.view.View
2222
import android.view.ViewGroup
2323
import androidx.fragment.app.Fragment
24+
import com.dylanc.loadingstateview.Decorative
2425
import com.dylanc.loadingstateview.LoadingState
25-
import com.dylanc.loadingstateview.LoadingStateImpl
26+
import com.dylanc.loadingstateview.LoadingStateDelegate
2627
import com.dylanc.loadingstateview.OnReloadListener
2728

2829
abstract class BaseFragment(private val layoutRes: Int) : Fragment(),
29-
LoadingState by LoadingStateImpl(), OnReloadListener {
30-
31-
open val isDecorated = true
30+
LoadingState by LoadingStateDelegate(), OnReloadListener, Decorative {
3231

3332
override fun onCreateView(
3433
inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?
3534
): View? {
3635
val root = inflater.inflate(layoutRes, container, false)
37-
return root.decorate(this, isDecorated)
36+
return root.decorate(this, this)
3837
}
3938
}

sample-kotlin/src/main/java/com/dylanc/loadingstateview/sample/kotlin/ui/MainActivity.kt

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import android.graphics.Color
2020
import android.os.Bundle
2121
import android.os.Handler
2222
import android.os.Looper
23+
import android.view.View
2324
import android.widget.Toast
2425
import com.dylanc.loadingstateview.NavBtnType
2526
import com.dylanc.loadingstateview.sample.kotlin.R
@@ -39,13 +40,6 @@ class MainActivity : BaseBindingActivity<ActivityMainBinding>() {
3940
}
4041
}
4142
showErrorView()
42-
setHeaders(
43-
ToolbarViewDelegate("title") {
44-
rightIcon(R.drawable.ic_error){
45-
46-
}
47-
}
48-
)
4943
}
5044

5145
override fun onReload() {
@@ -54,4 +48,6 @@ class MainActivity : BaseBindingActivity<ActivityMainBinding>() {
5448
showContentView()
5549
}, 2000)
5650
}
51+
52+
override val isDecorated = false
5753
}

0 commit comments

Comments
 (0)