integrate lottie and create view for users

This commit is contained in:
Carlos Martinez
2020-02-02 18:46:51 -03:00
parent 6a2722177e
commit 451d14ad95
14 changed files with 152 additions and 16 deletions

View File

@@ -5,4 +5,4 @@
android:name="androidx.navigation.fragment.NavHostFragment"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:defaultNavHost="true" />
app:defaultNavHost="true"/>

View File

@@ -1,11 +1,10 @@
<resources>
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
<item name="android:windowBackground">@color/soft_background</item>
</style>
</resources>

View File

@@ -52,6 +52,7 @@ dependencies {
api deps.rx.android
api deps.okhttp_logging_interceptor
api deps.timber
api deps.lottie
//Testing
api deps.testing.junit
api deps.testing.koin

View File

@@ -0,0 +1,10 @@
package com.hako.base.extensions
import android.view.LayoutInflater
import android.view.ViewGroup
import androidx.annotation.LayoutRes
fun ViewGroup.inflate(@LayoutRes layout: Int, attachToRoot: Boolean = false) =
LayoutInflater
.from(context)
.inflate(layout, this, attachToRoot)

View File

@@ -0,0 +1,46 @@
package com.hako.base.widgets
import android.content.Context
import android.util.AttributeSet
import android.widget.FrameLayout
import com.hako.base.R
import com.hako.base.extensions.inflate
import kotlinx.android.synthetic.main.like_button.view.*
private const val LIKE_MIN_FRAME = 0
private const val LIKE_MAX_FRAME = 28
private const val LIKE_ANIM_SPEED = 1f
private const val DISLIKE_MIN_FRAME = 28
private const val DISLIKE_MAX_FRAME = 70
private const val DISLIKE_ANIM_SPEED = 2f
class LikeButton @JvmOverloads constructor(
context: Context,
attrs: AttributeSet? = null,
defStyleAttr: Int = 0
) : FrameLayout(context, attrs, defStyleAttr) {
init {
inflate(R.layout.like_button, true)
}
fun like() {
like_button_animation_view.frame = LIKE_MAX_FRAME
}
fun dislike() {
like_button_animation_view.frame = LIKE_MIN_FRAME
}
fun playLike() {
like_button_animation_view.setMinAndMaxFrame(LIKE_MIN_FRAME, LIKE_MAX_FRAME)
like_button_animation_view.speed = LIKE_ANIM_SPEED
like_button_animation_view.playAnimation()
}
fun playDislike() {
like_button_animation_view.setMinAndMaxFrame(DISLIKE_MIN_FRAME, DISLIKE_MAX_FRAME)
like_button_animation_view.speed = DISLIKE_ANIM_SPEED
like_button_animation_view.playAnimation()
}
}

View File

@@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape >
<solid android:color="@color/card_background" />
<corners android:radius="4dp" />
</shape>
</item>
</layer-list>

View File

@@ -0,0 +1,19 @@
<?xml version="1.0" encoding="utf-8"?>
<merge 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:layout_width="wrap_content"
android:layout_height="wrap_content"
tools:parentTag="android.widget.FrameLayout">
<com.airbnb.lottie.LottieAnimationView
android:id="@+id/like_button_animation_view"
android:layout_width="40dp"
android:layout_height="40dp"
android:scaleType="centerInside"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:lottie_rawRes="@raw/like_animation" />
</merge>

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="soft_background">#EEEEEE</color>
<color name="transparent">#00000000</color>
<color name="card_background">#FFFFFF</color>
</resources>

View File

@@ -19,6 +19,7 @@ versions.junit = "4.13"
versions.test = "1.2.0"
versions.test_ext = "1.1.1"
versions.espresso = "3.2.0"
versions.lottie = "3.3.1"
def deps = [:]
@@ -75,5 +76,6 @@ deps.testing = testing
deps.okhttp_logging_interceptor = "com.squareup.okhttp3:logging-interceptor:$versions.okhttp_logging_interceptor"
deps.timber = "com.jakewharton.timber:timber:$versions.timber"
deps.lottie = "com.airbnb.android:lottie:$versions.lottie"
ext.deps = deps

View File

@@ -39,7 +39,3 @@ detekt {
task clean(type: Delete) {
delete rootProject.buildDir
}
repositories {
google()
}

View File

@@ -8,7 +8,13 @@ import androidx.fragment.app.Fragment
import com.hako.friendlist_userlist.R
class UserlistFragment : Fragment() {
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View {
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View {
return inflater.inflate(R.layout.fragment_userlist, container, false)
}
}

View File

@@ -1,15 +1,14 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello world"
tools:layout_editor_absoluteX="174dp"
tools:layout_editor_absoluteY="352dp" />
<include
layout="@layout/item_user_card"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@@ -0,0 +1,40 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout 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:layout_width="match_parent"
android:layout_height="70dp"
android:background="@drawable/bg_card"
android:elevation="2dp"
android:orientation="vertical">
<TextView
android:id="@+id/item_user_card_real_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="24dp"
android:layout_marginTop="16dp"
android:textSize="18sp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:text="Real Name" />
<TextView
android:id="@+id/item_user_card_user_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="12sp"
app:layout_constraintStart_toStartOf="@+id/item_user_card_real_name"
app:layout_constraintTop_toBottomOf="@+id/item_user_card_real_name"
tools:text="User Name" />
<com.hako.base.widgets.LikeButton
android:id="@+id/item_user_card_like_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="24dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>