mirror of
https://github.com/signalapp/Signal-Android.git
synced 2026-10-05 23:33:34 +01:00
Conversation tab bar animations.
This commit is contained in:
1 parent
2b5d65ae04
commit
fd930d0b1d
5 files changed
+130
-34
No files matched your search
+81
-2
@@ -1,10 +1,20 @@
|
||||
package org.thoughtcrime.securesms.stories.tabs
|
||||
|
||||
import android.animation.Animator
|
||||
import android.animation.AnimatorSet
|
||||
import android.animation.ValueAnimator
|
||||
import android.os.Bundle
|
||||
import android.view.View
|
||||
import android.widget.ImageView
|
||||
import android.widget.TextView
|
||||
import androidx.core.content.ContextCompat
|
||||
import androidx.core.view.animation.PathInterpolatorCompat
|
||||
import androidx.fragment.app.Fragment
|
||||
import androidx.fragment.app.viewModels
|
||||
import com.airbnb.lottie.LottieAnimationView
|
||||
import com.airbnb.lottie.LottieProperty
|
||||
import com.airbnb.lottie.model.KeyPath
|
||||
import org.signal.core.util.DimensionUnit
|
||||
import org.thoughtcrime.securesms.R
|
||||
import org.thoughtcrime.securesms.util.visible
|
||||
import java.text.NumberFormat
|
||||
@@ -18,14 +28,32 @@ class ConversationListTabsFragment : Fragment(R.layout.conversation_list_tabs) {
|
||||
|
||||
private lateinit var chatsUnreadIndicator: TextView
|
||||
private lateinit var storiesUnreadIndicator: TextView
|
||||
private lateinit var chatsIcon: View
|
||||
private lateinit var storiesIcon: View
|
||||
private lateinit var chatsIcon: LottieAnimationView
|
||||
private lateinit var storiesIcon: LottieAnimationView
|
||||
private lateinit var chatsPill: ImageView
|
||||
private lateinit var storiesPill: ImageView
|
||||
|
||||
private var pillAnimator: Animator? = null
|
||||
|
||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||
chatsUnreadIndicator = view.findViewById(R.id.chats_unread_indicator)
|
||||
storiesUnreadIndicator = view.findViewById(R.id.stories_unread_indicator)
|
||||
chatsIcon = view.findViewById(R.id.chats_tab_icon)
|
||||
storiesIcon = view.findViewById(R.id.stories_tab_icon)
|
||||
chatsPill = view.findViewById(R.id.chats_pill)
|
||||
storiesPill = view.findViewById(R.id.stories_pill)
|
||||
|
||||
val iconTint = ContextCompat.getColor(requireContext(), R.color.signal_colorOnSecondaryContainer)
|
||||
|
||||
chatsIcon.addValueCallback(
|
||||
KeyPath("**"),
|
||||
LottieProperty.COLOR
|
||||
) { iconTint }
|
||||
|
||||
storiesIcon.addValueCallback(
|
||||
KeyPath("**"),
|
||||
LottieProperty.COLOR
|
||||
) { iconTint }
|
||||
|
||||
view.findViewById<View>(R.id.chats_tab_touch_point).setOnClickListener {
|
||||
viewModel.onChatsSelected()
|
||||
@@ -39,9 +67,19 @@ class ConversationListTabsFragment : Fragment(R.layout.conversation_list_tabs) {
|
||||
}
|
||||
|
||||
private fun update(state: ConversationListTabsState) {
|
||||
val wasChatSelected = chatsIcon.isSelected
|
||||
|
||||
chatsIcon.isSelected = state.tab == ConversationListTab.CHATS
|
||||
storiesIcon.isSelected = state.tab == ConversationListTab.STORIES
|
||||
|
||||
chatsPill.isSelected = chatsIcon.isSelected
|
||||
storiesPill.isSelected = storiesIcon.isSelected
|
||||
|
||||
if (chatsIcon.isSelected xor wasChatSelected) {
|
||||
runLottieAnimations(chatsIcon, storiesIcon)
|
||||
runPillAnimation(chatsPill, storiesPill)
|
||||
}
|
||||
|
||||
chatsUnreadIndicator.visible = state.unreadChatsCount > 0
|
||||
chatsUnreadIndicator.text = formatCount(state.unreadChatsCount)
|
||||
|
||||
@@ -51,6 +89,47 @@ class ConversationListTabsFragment : Fragment(R.layout.conversation_list_tabs) {
|
||||
requireView().visible = !state.isSearchOpen
|
||||
}
|
||||
|
||||
private fun runLottieAnimations(vararg toAnimate: LottieAnimationView) {
|
||||
toAnimate.forEach {
|
||||
if (it.isSelected) {
|
||||
it.resumeAnimation()
|
||||
} else {
|
||||
if (it.isAnimating) {
|
||||
it.pauseAnimation()
|
||||
}
|
||||
|
||||
it.progress = 0f
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun runPillAnimation(vararg toAnimate: ImageView) {
|
||||
val (selected, unselected) = toAnimate.partition { it.isSelected }
|
||||
|
||||
pillAnimator?.cancel()
|
||||
pillAnimator = AnimatorSet().apply {
|
||||
duration = 150
|
||||
interpolator = PathInterpolatorCompat.create(0.17f, 0.17f, 0f, 1f)
|
||||
playTogether(
|
||||
selected.map { view ->
|
||||
view.visibility = View.VISIBLE
|
||||
ValueAnimator.ofInt(view.paddingLeft, 0).apply {
|
||||
addUpdateListener {
|
||||
view.setPadding(it.animatedValue as Int, 0, it.animatedValue as Int, 0)
|
||||
}
|
||||
}
|
||||
}
|
||||
)
|
||||
start()
|
||||
}
|
||||
|
||||
unselected.forEach {
|
||||
val smallPad = DimensionUnit.DP.toPixels(16f).toInt()
|
||||
it.setPadding(smallPad, 0, smallPad, 0)
|
||||
it.visibility = View.INVISIBLE
|
||||
}
|
||||
}
|
||||
|
||||
private fun formatCount(count: Long): String {
|
||||
if (count > 99L) {
|
||||
return getString(R.string.ConversationListTabs__99p)
|
||||
|
||||
@@ -1,10 +1,6 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<selector xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<item android:state_selected="true">
|
||||
<shape android:shape="rectangle">
|
||||
<solid android:color="@color/signal_colorPrimaryContainer" />
|
||||
<corners android:radius="18dp" />
|
||||
</shape>
|
||||
</item>
|
||||
<item android:drawable="@color/transparent" />
|
||||
</selector>
|
||||
<shape xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:shape="rectangle">
|
||||
<solid android:color="@color/signal_colorPrimaryContainer" />
|
||||
<corners android:radius="18dp" />
|
||||
</shape>
|
||||
@@ -6,14 +6,12 @@
|
||||
android:layout_height="wrap_content"
|
||||
android:background="@color/signal_colorSecondaryContainer"
|
||||
android:minHeight="80dp"
|
||||
android:paddingHorizontal="@dimen/dsl_settings_gutter"
|
||||
android:paddingTop="8dp"
|
||||
android:paddingBottom="8dp">
|
||||
android:paddingHorizontal="@dimen/dsl_settings_gutter">
|
||||
|
||||
<View
|
||||
android:id="@+id/chats_tab_touch_point"
|
||||
android:layout_width="58dp"
|
||||
android:layout_height="48dp"
|
||||
android:layout_width="80dp"
|
||||
android:layout_height="0dp"
|
||||
android:background="?selectableItemBackgroundBorderless"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="@id/chats_tab_icon"
|
||||
@@ -22,28 +20,49 @@
|
||||
|
||||
<View
|
||||
android:id="@+id/stories_tab_touch_point"
|
||||
android:layout_width="58dp"
|
||||
android:layout_height="48dp"
|
||||
android:layout_width="80dp"
|
||||
android:layout_height="0dp"
|
||||
android:background="?selectableItemBackgroundBorderless"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="@id/stories_tab_icon"
|
||||
app:layout_constraintStart_toStartOf="@id/stories_tab_icon"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
<androidx.appcompat.widget.AppCompatImageView
|
||||
android:id="@+id/chats_tab_icon"
|
||||
<ImageView
|
||||
android:id="@+id/chats_pill"
|
||||
android:layout_width="64dp"
|
||||
android:layout_height="32dp"
|
||||
android:background="@drawable/conversation_tab_icon_background"
|
||||
android:importantForAccessibility="no"
|
||||
android:src="@drawable/conversation_tab_icon_background"
|
||||
app:layout_constraintBottom_toBottomOf="@id/chats_tab_icon"
|
||||
app:layout_constraintEnd_toEndOf="@id/chats_tab_icon"
|
||||
app:layout_constraintStart_toStartOf="@id/chats_tab_icon"
|
||||
app:layout_constraintTop_toTopOf="@id/chats_tab_icon" />
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/stories_pill"
|
||||
android:layout_width="64dp"
|
||||
android:layout_height="32dp"
|
||||
android:importantForAccessibility="no"
|
||||
android:paddingHorizontal="16dp"
|
||||
android:src="@drawable/conversation_tab_icon_background"
|
||||
app:layout_constraintBottom_toBottomOf="@id/stories_tab_icon"
|
||||
app:layout_constraintEnd_toEndOf="@id/stories_tab_icon"
|
||||
app:layout_constraintStart_toStartOf="@id/stories_tab_icon"
|
||||
app:layout_constraintTop_toTopOf="@id/stories_tab_icon" />
|
||||
|
||||
<com.airbnb.lottie.LottieAnimationView
|
||||
android:id="@+id/chats_tab_icon"
|
||||
android:layout_width="32dp"
|
||||
android:layout_height="32dp"
|
||||
android:importantForAccessibility="no"
|
||||
android:scaleType="centerInside"
|
||||
android:tint="@color/signal_colorOnSecondaryContainer"
|
||||
app:layout_constraintBottom_toTopOf="@id/chats_tab_label"
|
||||
app:layout_constraintEnd_toStartOf="@id/tabs_center_guide"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintVertical_chainStyle="packed"
|
||||
app:srcCompat="@drawable/ic_chat_message_24" />
|
||||
app:lottie_rawRes="@raw/chats_32" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/chats_tab_label"
|
||||
@@ -65,20 +84,18 @@
|
||||
android:orientation="vertical"
|
||||
app:layout_constraintGuide_percent="0.5" />
|
||||
|
||||
<androidx.appcompat.widget.AppCompatImageView
|
||||
<com.airbnb.lottie.LottieAnimationView
|
||||
android:id="@+id/stories_tab_icon"
|
||||
android:layout_width="64dp"
|
||||
android:layout_width="32dp"
|
||||
android:layout_height="32dp"
|
||||
android:background="@drawable/conversation_tab_icon_background"
|
||||
android:importantForAccessibility="no"
|
||||
android:scaleType="centerInside"
|
||||
android:tint="@color/signal_colorOnSecondaryContainer"
|
||||
app:layout_constraintBottom_toTopOf="@id/stories_tab_label"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toEndOf="@id/tabs_center_guide"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintVertical_chainStyle="packed"
|
||||
app:srcCompat="@drawable/ic_stories_24" />
|
||||
app:lottie_rawRes="@raw/stories_32" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/stories_tab_label"
|
||||
@@ -97,7 +114,8 @@
|
||||
android:id="@+id/chats_unread_indicator"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="16sp"
|
||||
android:layout_marginBottom="21dp"
|
||||
android:layout_marginStart="28.5dp"
|
||||
android:layout_marginTop="6dp"
|
||||
android:background="@drawable/tab_unread_circle"
|
||||
android:gravity="center_horizontal"
|
||||
android:minWidth="16sp"
|
||||
@@ -106,15 +124,16 @@
|
||||
android:textAppearance="@style/Signal.Text.Caption"
|
||||
android:textColor="@color/white"
|
||||
android:textSize="11sp"
|
||||
app:layout_constraintBottom_toBottomOf="@id/chats_tab_icon"
|
||||
app:layout_constraintEnd_toEndOf="@id/chats_tab_touch_point"
|
||||
app:layout_constraintStart_toStartOf="@id/chats_tab_icon"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
tools:text="3" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/stories_unread_indicator"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="16sp"
|
||||
android:layout_marginBottom="21dp"
|
||||
android:layout_marginStart="28.5dp"
|
||||
android:layout_marginTop="6dp"
|
||||
android:background="@drawable/tab_unread_circle"
|
||||
android:gravity="center_horizontal"
|
||||
android:minWidth="16sp"
|
||||
@@ -123,8 +142,8 @@
|
||||
android:textAppearance="@style/Signal.Text.Caption"
|
||||
android:textColor="@color/white"
|
||||
android:textSize="11sp"
|
||||
app:layout_constraintBottom_toBottomOf="@id/stories_tab_icon"
|
||||
app:layout_constraintEnd_toEndOf="@id/stories_tab_touch_point"
|
||||
app:layout_constraintStart_toStartOf="@id/stories_tab_icon"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
tools:text="99+" />
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
@@ -0,0 +1 @@
|
||||
{"v":"5.7.1","fr":60,"ip":0,"op":40,"w":512,"h":512,"nm":"Chats","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":4,"nm":"Solid","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[256,256,0],"ix":2},"a":{"a":0,"k":[256,256,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":2.002,"s":[{"i":[[91.632,0],[0,-79.536],[-21.86,-23.782],[0,0],[-8.336,2.784],[0,0],[-19.787,-0.012],[0,79.536]],"o":[[-92.8,0],[0.316,32.301],[0,0],[-1.44,8.672],[0,0],[18.851,6.011],[92.8,0],[0,-79.536]],"v":[[0,-153],[-168,-9],[-133.552,78.12],[-143.776,139.496],[-131.232,150.216],[-58.304,125.912],[0,135],[168,-9]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":10,"s":[{"i":[[91.632,0],[0,-79.536],[-21.86,-23.782],[0,0],[-8.336,2.784],[0,0],[-19.787,-0.012],[0,79.536]],"o":[[-92.8,0],[0.316,32.301],[0,0],[-1.44,8.672],[0,0],[0,0],[92.8,0],[0,-79.536]],"v":[[0,-153],[-158.625,-9],[-121.052,84.37],[-124.714,125.746],[-114.044,134.279],[-68.929,121.537],[0,135],[152.375,-9]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":20,"s":[{"i":[[90.67,8],[0.225,-66.5],[-21.86,-23.782],[0,0],[-8.336,2.784],[0,0],[-19.787,-0.012],[2.624,94]],"o":[[-90.67,-8],[-0.225,66.5],[0,0],[-1.44,8.672],[0,0],[18.851,6.011],[92.8,0],[-2.219,-79.505]],"v":[[0,-153],[-166.445,-38],[-122.167,84.12],[-149.697,161.496],[-137.153,172.216],[-68.073,126.912],[0,135],[168,-9]],"c":true}]},{"t":30.029345752002,"s":[{"i":[[91.632,0],[0,-79.536],[-21.86,-23.782],[0,0],[-8.336,2.784],[0,0],[-19.787,-0.012],[0,79.536]],"o":[[-92.8,0],[0.316,32.301],[0,0],[-1.44,8.672],[0,0],[18.851,6.011],[92.8,0],[0,-79.536]],"v":[[0,-153],[-168,-9],[-133.552,78.12],[-143.776,139.496],[-131.232,150.216],[-58.304,125.912],[0,135],[168,-9]],"c":true}]}],"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":2.002,"s":[256,257],"to":[-12.667,13.833],"ti":[-7.333,10.167]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":10.01,"s":[180,340],"to":[7.333,-10.167],"ti":[-12.667,13.833]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":20.02,"s":[300,196],"to":[12.667,-13.833],"ti":[7.333,-10.167]},{"t":30.029345752002,"s":[256,257]}],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.667,0.667],"y":[1,1]},"o":{"x":[0.333,0.333],"y":[0,0]},"t":2.002,"s":[100,100]},{"i":{"x":[0.667,0.667],"y":[1,1]},"o":{"x":[0.333,0.333],"y":[0,0]},"t":10.01,"s":[80,80]},{"i":{"x":[0.667,0.667],"y":[1,1]},"o":{"x":[0.333,0.333],"y":[0,0]},"t":20.02,"s":[100,100]},{"t":30.029345752002,"s":[100,100]}],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":10.01,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":20.02,"s":[13]},{"t":30.029345752002,"s":[0]}],"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":2.002002002002,"op":41,"st":2.002002002002,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":"Outline","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[256,256,0],"ix":2},"a":{"a":0,"k":[256,256,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[-79.408,0],[0,-66.176],[79.408,0],[16.501,5.273],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0.297,26.424]],"o":[[79.408,0],[0,66.176],[-17.323,-0.028],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[-17.969,-19.376],[0,-66.176]],"v":[[0,-128],[144,-8],[0,112],[-51.04,104],[-58.48,101.632],[-65.904,104.112],[-116.176,120.896],[-109.872,83.056],[-107.984,71.744],[-115.616,63.168],[-144,-8]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[91.632,0],[0,-79.536],[-21.86,-23.782],[0,0],[-5.776,0],[-1.437,0.495],[0,0],[-19.787,-0.012],[0,79.536]],"o":[[-92.8,0],[0.316,32.301],[0,0],[-1.168,7.008],[1.52,-0.024],[0,0],[18.851,6.011],[92.8,0],[0,-79.536]],"v":[[0,-152],[-168,-8],[-133.552,79.12],[-143.776,140.496],[-135.696,152],[-131.232,151.216],[-58.304,126.912],[0,136],[168,-8]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"mm","mm":1,"nm":"Merge Paths 1","mn":"ADBE Vector Filter - Merge","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[256,256],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"GrouLine truncated
|
||||
@@ -0,0 +1 @@
|
||||
{"v":"5.7.1","fr":60,"ip":0,"op":40,"w":512,"h":512,"nm":"Stories","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":4,"nm":"Foreground","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[256,256,0],"ix":2},"a":{"a":0,"k":[256,256,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,-26.51],[0,0],[-26.51,0],[0,0],[0,26.51],[0,0],[26.51,0]],"o":[[-26.51,0],[0,0],[0,26.51],[0,0],[26.51,0],[0,0],[0,-26.51],[0,0]],"v":[[-64,-176],[-112,-128],[-112,128],[-64,176],[64,176],[112,128],[112,-128],[64,-176]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[289.219,255.262],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.667,0.667],"y":[1,1]},"o":{"x":[0.333,0.333],"y":[0,0]},"t":2.002,"s":[100,100]},{"i":{"x":[0.667,0.667],"y":[1,1]},"o":{"x":[0.333,0.333],"y":[0,0]},"t":10.01,"s":[115,138]},{"t":20.01953125,"s":[100,100]}],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 2","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":2.002002002002,"op":74.0740740740741,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":"Mask","td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[256,256,0],"ix":2},"a":{"a":0,"k":[256,256,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,-26.51],[0,0],[-26.51,0],[0,0],[0,26.51],[0,0],[26.51,0]],"o":[[-26.51,0],[0,0],[0,26.51],[0,0],[26.51,0],[0,0],[0,-26.51],[0,0]],"v":[[-64,-176],[-112,-128],[-112,128],[-64,176],[64,176],[112,128],[112,-128],[64,-176]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[289.219,255.262],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.667,0.667],"y":[1,1]},"o":{"x":[0.333,0.333],"y":[0,0]},"t":2.002,"s":[100,100]},{"i":{"x":[0.667,0.667],"y":[1,1]},"o":{"x":[0.333,0.333],"y":[0,0]},"t":10.01,"s":[132,130]},{"t":20.01953125,"s":[100,100]}],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Mask","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":2.002002002002,"op":74.0740740740741,"st":0,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":"Background","tt":2,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[256,256,0],"ix":2},"a":{"a":0,"k":[256,256,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-1.316,5.114],[0,0],[0,-17.673],[0,0],[-17.673,0],[0,0],[0,5.524]],"o":[[0,-5.525],[0,0],[-17.673,0],[0,0],[0,17.673],[0,0],[-1.316,-5.114],[0,0]],"v":[[14.992,-128],[17.008,-144],[14.992,-144],[-17.008,-112],[-17.008,112],[14.992,144],[17.008,144],[14.992,128]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":6.006,"s":[129.008,256],"to":[-1.501,0],"ti":[0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":16.016,"s":[120,256],"to":[0,0],"ti":[-1.501,0]},{"t":28.02734375,"s":[129.008,256]}],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.667,0.667],"y":[1,1]},"o":{"x":[0.333,0.333],"y":[0,0]},"t":6.006,"s":[100,100]},{"i":{"x":[0.667,0.667],"y":[1,1]},"o":{"x":[0.333,0.333],"y":[0,0]},"t":16.016,"s":[180,130]},{"t":28.02734375,"s":[100,100]}],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":2.002002002002,"op":74.0740740740741,"st":0,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":"Outline","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[256,256,0],"ix":2},"a":{"a":0,"k":[256,256,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,-26.51],[0,0],[-26.51,0],[0,0],[0,26.51],[0,0],[26.51,0]],"o":[[-26.51,0],[0,0],[0,26.51],[0,0],[26.51,0],[0,0],[0,-26.51],[0,0]],"v":[[-31.39,-176],[-79.39,-128],[-79.39,128],[-31.39,176],[96.609,176],[144.609,128],[144.609,-128],[96.609,-176]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":falsLine truncated
|
||||
Reference in new issue
Block a user