Jelajahi Sumber

Removed unnecessary custom attributes

Vadik Sirekanyan 5 tahun lalu
induk
melakukan
2d6e54ef65

+ 3 - 2
app/src/main/java/com/sirekanyan/knigopis/feature/user/behavior/BehaviorHelper.kt

@@ -10,7 +10,7 @@ val View.simpleState
         height
     )
 
-class BehaviorHelper(val start: SimpleViewState, val end: SimpleViewState) {
+class BehaviorHelper(private val start: SimpleViewState, private val end: SimpleViewState) {
 
     fun updateDimensions(child: View, ratio: Float) {
         val dW = (end.width - start.width) * ratio
@@ -20,4 +20,5 @@ class BehaviorHelper(val start: SimpleViewState, val end: SimpleViewState) {
         child.translationX = (end.x - start.x) * ratio + dW / 2
         child.translationY = (end.y - start.y) * ratio + dH / 2
     }
-}
+
+}

+ 15 - 21
app/src/main/java/com/sirekanyan/knigopis/feature/user/behavior/SimpleBehavior.kt

@@ -4,7 +4,9 @@ import android.content.Context
 import android.util.AttributeSet
 import android.view.View
 import androidx.coordinatorlayout.widget.CoordinatorLayout
-import com.sirekanyan.knigopis.R.styleable.*
+import com.sirekanyan.knigopis.R
+import kotlin.math.abs
+import kotlin.math.min
 
 @Suppress("unused")
 class SimpleBehavior(
@@ -12,26 +14,18 @@ class SimpleBehavior(
     attrs: AttributeSet
 ) : CoordinatorLayout.Behavior<View>(context, attrs) {
 
-    private val dependViewId: Int
-    private val endState: SimpleViewState
-    private val minHeight: Int
-    private val maxHeight: Int
+    private val dependViewId = R.id.user_app_bar
+    private val resources = context.resources
+    private val endState = SimpleViewState(
+        resources.getDimensionPixelOffset(R.dimen.avatar_target_x),
+        resources.getDimensionPixelOffset(R.dimen.avatar_target_y),
+        resources.getDimensionPixelOffset(R.dimen.avatar_target_width),
+        resources.getDimensionPixelOffset(R.dimen.avatar_target_height)
+    )
+    private val minHeight = resources.getDimensionPixelOffset(R.dimen.toolbar_height)
+    private val maxHeight = resources.getDimensionPixelOffset(R.dimen.app_bar_height)
     private var behaviorHelper: BehaviorHelper? = null
 
-    init {
-        val a = context.obtainStyledAttributes(attrs, ViewBehavior)
-        dependViewId = a.getResourceId(ViewBehavior_appBarLayout, 0)
-        maxHeight = a.getDimensionPixelOffset(ViewBehavior_appBarMaxHeight, 0)
-        minHeight = a.getDimensionPixelOffset(ViewBehavior_appBarMinHeight, 0)
-        endState = SimpleViewState(
-            a.getDimensionPixelOffset(ViewBehavior_toX, 0),
-            a.getDimensionPixelOffset(ViewBehavior_toY, 0),
-            a.getDimensionPixelOffset(ViewBehavior_toWidth, 0),
-            a.getDimensionPixelOffset(ViewBehavior_toHeight, 0)
-        )
-        a.recycle()
-    }
-
     override fun layoutDependsOn(parent: CoordinatorLayout, child: View, dependency: View) =
         dependency.id == dependViewId
 
@@ -40,8 +34,8 @@ class SimpleBehavior(
         child: View,
         dependency: View
     ): Boolean {
-        val ratio = Math.abs(dependency.y) / (maxHeight - minHeight)
-        getHelper(child.simpleState).updateDimensions(child, Math.min(1f, ratio))
+        val ratio = abs(dependency.y) / (maxHeight - minHeight)
+        getHelper(child.simpleState).updateDimensions(child, min(1f, ratio))
         return false
     }
 

+ 2 - 9
app/src/main/res/layout/user_activity.xml

@@ -7,7 +7,7 @@
     tools:context=".feature.user.UserActivity">
 
     <com.google.android.material.appbar.AppBarLayout
-        android:id="@+id/app_bar"
+        android:id="@id/user_app_bar"
         android:layout_width="match_parent"
         android:layout_height="@dimen/app_bar_height"
         android:elevation="@dimen/app_bar_elevation">
@@ -45,14 +45,7 @@
         android:layout_marginTop="56dp"
         android:layout_marginRight="16dp"
         android:elevation="@dimen/app_bar_elevation"
-        app:appBarLayout="@+id/app_bar"
-        app:appBarMaxHeight="@dimen/app_bar_height"
-        app:appBarMinHeight="@dimen/toolbar_height"
         app:layout_behavior="com.sirekanyan.knigopis.feature.user.behavior.SimpleBehavior"
-        app:toHeight="40dp"
-        app:toWidth="40dp"
-        app:toX="64dp"
-        app:toY="8dp"
         tools:ignore="ContentDescription"
         tools:src="@drawable/oval_placeholder_on_primary" />
 
@@ -87,7 +80,7 @@
         android:src="@drawable/ic_person_add"
         android:visibility="gone"
         app:backgroundTint="@drawable/subscribe_button_background"
-        app:layout_anchor="@id/app_bar"
+        app:layout_anchor="@id/user_app_bar"
         app:layout_anchorGravity="bottom|end" />
 
 </androidx.coordinatorlayout.widget.CoordinatorLayout>

+ 0 - 12
app/src/main/res/values/attrs.xml

@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-    <declare-styleable name="ViewBehavior">
-        <attr name="appBarLayout" format="reference" />
-        <attr name="appBarMaxHeight" format="dimension" />
-        <attr name="appBarMinHeight" format="dimension" />
-        <attr name="toX" format="dimension" />
-        <attr name="toY" format="dimension" />
-        <attr name="toWidth" format="dimension" />
-        <attr name="toHeight" format="dimension" />
-    </declare-styleable>
-</resources>

+ 4 - 0
app/src/main/res/values/dimens.xml

@@ -12,6 +12,10 @@
     <dimen name="avatar_size_expanded">88dp</dimen>
     <dimen name="toolbar_height">56dp</dimen>
     <dimen name="app_bar_height">160dp</dimen>
+    <dimen name="avatar_target_height">40dp</dimen>
+    <dimen name="avatar_target_width">40dp</dimen>
+    <dimen name="avatar_target_x">64dp</dimen>
+    <dimen name="avatar_target_y">8dp</dimen>
     <dimen name="app_bar_elevation">4dp</dimen>
     <dimen name="swipe_refresh_start_offset">36dp</dimen>
     <dimen name="swipe_refresh_end_offset">80dp</dimen>

+ 2 - 0
app/src/main/res/values/ids.xml

@@ -11,4 +11,6 @@
     <item name="option_sort_users_by_count" type="id" />
     <item name="option_sort_users_by_new_count" type="id" />
 
+    <item name="user_app_bar" type="id" />
+
 </resources>