Merge branch 'android14-release' into 14-dev
This commit is contained in:
1 parent
5931c9afec
commit
32700b0100
994 files changed
+36404
-15826
No files matched your search
+3
-3
@@ -79,7 +79,7 @@ android_library {
|
||||
"androidx.test.uiautomator_uiautomator",
|
||||
"androidx.preference_preference",
|
||||
"SystemUISharedLib",
|
||||
"SystemUIAnimationLib",
|
||||
"animationlib",
|
||||
"launcher-testing-shared",
|
||||
],
|
||||
srcs: [
|
||||
@@ -243,7 +243,7 @@ android_library {
|
||||
"lottie",
|
||||
"SystemUISharedLib",
|
||||
"SystemUI-statsd",
|
||||
"SystemUIAnimationLib",
|
||||
"animationlib",
|
||||
],
|
||||
manifest: "quickstep/AndroidManifest.xml",
|
||||
min_sdk_version: "current",
|
||||
@@ -305,7 +305,7 @@ android_library {
|
||||
"SystemUISharedLib",
|
||||
"Launcher3CommonDepsLib",
|
||||
"QuickstepResLib",
|
||||
"SystemUIAnimationLib",
|
||||
"animationlib",
|
||||
],
|
||||
manifest: "quickstep/AndroidManifest.xml",
|
||||
platform_apis: true,
|
||||
|
||||
@@ -47,8 +47,8 @@
|
||||
<!-- for rotating surface by arbitrary degree -->
|
||||
<uses-permission android:name="android.permission.VIBRATE"/>
|
||||
<uses-permission android:name="android.permission.ROTATE_SURFACE_FLINGER" />
|
||||
<uses-permission android:name="android.permission.WAKEUP_SURFACE_FLINGER" />
|
||||
<uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
|
||||
<uses-permission android:name="android.permission.READ_HOME_APP_SEARCH_DATA" />
|
||||
|
||||
<!--
|
||||
Permissions required for read/write access to the workspace data. These permission name
|
||||
|
||||
@@ -5,36 +5,14 @@
|
||||
#
|
||||
|
||||
adamcohen@google.com
|
||||
alexchau@google.com
|
||||
andonian@google.com
|
||||
awickham@google.com
|
||||
brdayauon@google.com
|
||||
brianji@google.com
|
||||
captaincole@google.com
|
||||
charlander@google.com
|
||||
fbaron@google.com
|
||||
ganjam@google.com
|
||||
hwwang@google.com
|
||||
hyunyoungs@google.com
|
||||
jagrutdesai@google.com
|
||||
jeremysim@google.com
|
||||
jiuyu@google.com
|
||||
jonmiranda@google.com
|
||||
kylim@google.com
|
||||
patmanning@google.com
|
||||
peanutbutter@google.com
|
||||
pinyaoting@google.com
|
||||
randypfohl@google.com
|
||||
saumyaprakash@google.com
|
||||
sihua@google.com
|
||||
sunnygoyal@google.com
|
||||
tracyzhou@google.com
|
||||
tsuharesu@google.com
|
||||
twickham@google.com
|
||||
vadimt@google.com
|
||||
victortulias@google.com
|
||||
winsonc@google.com
|
||||
xuqiu@google.com
|
||||
jonmiranda@google.com
|
||||
alexchau@google.com
|
||||
|
||||
per-file FeatureFlags.java, globs = set noparent
|
||||
per-file FeatureFlags.java = sunnygoyal@google.com, winsonc@google.com, adamcohen@google.com, hyunyoungs@google.com, captaincole@google.com
|
||||
+18
-16
@@ -25,7 +25,7 @@ allprojects {
|
||||
compileSdk 34
|
||||
defaultConfig {
|
||||
minSdk 26
|
||||
targetSdk 33
|
||||
targetSdk 34
|
||||
vectorDrawables.useSupportLibrary = true
|
||||
}
|
||||
lint {
|
||||
@@ -95,11 +95,10 @@ allprojects {
|
||||
|
||||
compileOnlyCommonJars = {
|
||||
dependencies {
|
||||
compileOnly fileTree(dir: FRAMEWORK_PREBUILTS_DIR, include: 'WindowManager-Shell.jar')
|
||||
compileOnly fileTree(dir: FRAMEWORK_PREBUILTS_DIR, include: 'core.jar')
|
||||
compileOnly fileTree(dir: FRAMEWORK_PREBUILTS_DIR, include: 'seeder.jar')
|
||||
compileOnly fileTree(dir: FRAMEWORK_PREBUILTS_DIR, include: 'SystemUI-core.jar')
|
||||
compileOnly fileTree(dir: FRAMEWORK_PREBUILTS_DIR, include: 'SystemUI-statsd.jar')
|
||||
compileOnly fileTree(dir: FRAMEWORK_PREBUILTS_DIR, include: 'WindowManager-Shell-14.jar')
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -114,13 +113,13 @@ final def ciRef = System.getenv("GITHUB_REF") ?: ""
|
||||
final def ciRunNumber = System.getenv("GITHUB_RUN_NUMBER") ?: ""
|
||||
final def isReleaseBuild = ciBuild && ciRef.contains("alpha")
|
||||
final def devReleaseName = ciBuild ? "Dev (#${ciRunNumber})" : "Dev (${buildCommit})"
|
||||
final def version = "13"
|
||||
final def version = "14"
|
||||
final def releaseName = "Alpha 1"
|
||||
final def versionDisplayName = "${version} ${isReleaseBuild ? releaseName : devReleaseName}"
|
||||
final def majorVersion = versionDisplayName.split("\\.")[0]
|
||||
|
||||
final def quickstepMinSdk = "32"
|
||||
final def quickstepMaxSdk = "33"
|
||||
final def quickstepMaxSdk = "34"
|
||||
|
||||
android {
|
||||
namespace "com.android.launcher3"
|
||||
@@ -308,9 +307,9 @@ android {
|
||||
}
|
||||
|
||||
lawn {
|
||||
java.srcDirs = ['src_flags', 'src_shortcuts_overrides', 'lawnchair/src']
|
||||
java.srcDirs = ['src_flags', 'src_shortcuts_overrides', 'lawnchair/src', 'tests/shared']
|
||||
aidl.srcDirs = ['lawnchair/aidl']
|
||||
res.srcDirs = ['lawnchair/res']
|
||||
res.srcDirs = ['lawnchair/res', 'platform_frameworks_libs_systemui/animationlib/res']
|
||||
manifest.srcFile "lawnchair/AndroidManifest.xml"
|
||||
assets {
|
||||
srcDirs 'lawnchair/assets'
|
||||
@@ -341,11 +340,12 @@ android {
|
||||
}
|
||||
}
|
||||
|
||||
addFrameworkJar('framework-13.jar')
|
||||
addFrameworkJar('framework-14.jar')
|
||||
|
||||
dependencies {
|
||||
implementation projects.iconloaderlib
|
||||
implementation projects.searchuilib
|
||||
implementation projects.animationlib
|
||||
|
||||
// Recents lib dependency
|
||||
withQuickstepCompileOnly projects.hiddenApi
|
||||
@@ -353,14 +353,16 @@ dependencies {
|
||||
withQuickstepImplementation projects.systemUIAnim
|
||||
withQuickstepImplementation projects.systemUnFold
|
||||
withQuickstepImplementation projects.systemUIViewCapture
|
||||
withQuickstepImplementation projects.systemUILog
|
||||
withQuickstepImplementation projects.systemUIPlugin
|
||||
withQuickstepImplementation projects.systemUIPluginCore
|
||||
withQuickstepImplementation projects.systemUICommon
|
||||
|
||||
implementation fileTree(dir: FRAMEWORK_PREBUILTS_DIR, include: 'SystemUI-statsd-14.jar')
|
||||
|
||||
implementation fileTree(dir: FRAMEWORK_PREBUILTS_DIR, include: 'WindowManager-Shell-14.jar')
|
||||
withQuickstepCompileOnly fileTree(dir: FRAMEWORK_PREBUILTS_DIR, include: 'framework-14.jar')
|
||||
|
||||
implementation fileTree(dir: FRAMEWORK_PREBUILTS_DIR, include: 'SystemUI-statsd.jar')
|
||||
implementation fileTree(dir: FRAMEWORK_PREBUILTS_DIR, include: 'WindowManager-Shell.jar')
|
||||
withQuickstepCompileOnly fileTree(dir: FRAMEWORK_PREBUILTS_DIR, include: 'seeder.jar')
|
||||
withQuickstepCompileOnly fileTree(dir: FRAMEWORK_PREBUILTS_DIR, include: 'core.jar')
|
||||
withQuickstepCompileOnly fileTree(dir: FRAMEWORK_PREBUILTS_DIR, include: 'core-all.jar')
|
||||
withQuickstepCompileOnly fileTree(dir: FRAMEWORK_PREBUILTS_DIR, include: 'SystemUI-core.jar')
|
||||
withQuickstepCompileOnly fileTree(dir: FRAMEWORK_PREBUILTS_DIR, include: 'framework-statsd.jar')
|
||||
// Required for AOSP to compile. This is already included in the sysui_shared.jar
|
||||
withoutQuickstepImplementation fileTree(dir: FRAMEWORK_PREBUILTS_DIR, include: 'plugin_core.jar')
|
||||
|
||||
|
||||
@@ -16,7 +16,6 @@
|
||||
|
||||
package com.android.launcher3.testing;
|
||||
|
||||
import static com.android.launcher3.testing.shared.TestProtocol.VIEW_AND_ACTIVITY_LEAKS;
|
||||
import static com.android.launcher3.util.Executors.MAIN_EXECUTOR;
|
||||
import static com.android.launcher3.util.Executors.MODEL_EXECUTOR;
|
||||
|
||||
@@ -25,10 +24,8 @@ import android.app.Application;
|
||||
import android.content.Context;
|
||||
import android.os.Binder;
|
||||
import android.os.Bundle;
|
||||
import android.os.Process;
|
||||
import android.system.Os;
|
||||
import android.util.Log;
|
||||
import android.view.View;
|
||||
|
||||
import androidx.annotation.Keep;
|
||||
import androidx.annotation.Nullable;
|
||||
@@ -42,7 +39,6 @@ import com.android.launcher3.testing.shared.TestProtocol;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.LinkedList;
|
||||
import java.util.Map;
|
||||
import java.util.WeakHashMap;
|
||||
import java.util.concurrent.CountDownLatch;
|
||||
@@ -52,7 +48,6 @@ import java.util.concurrent.TimeUnit;
|
||||
* Class to handle requests from tests, including debug ones.
|
||||
*/
|
||||
public class DebugTestInformationHandler extends TestInformationHandler {
|
||||
private static LinkedList sLeaks;
|
||||
private static Collection<String> sEvents;
|
||||
private static Application.ActivityLifecycleCallbacks sActivityLifecycleCallbacks;
|
||||
private static final Map<Activity, Boolean> sActivities =
|
||||
@@ -67,6 +62,7 @@ public class DebugTestInformationHandler extends TestInformationHandler {
|
||||
public void onActivityCreated(Activity activity, Bundle bundle) {
|
||||
sActivities.put(activity, true);
|
||||
++sActivitiesCreatedCount;
|
||||
Log.d(TestProtocol.FLAKY_ACTIVITY_COUNT, "onActivityCreated", new Exception());
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -158,19 +154,6 @@ public class DebugTestInformationHandler extends TestInformationHandler {
|
||||
return response;
|
||||
}
|
||||
|
||||
case TestProtocol.REQUEST_VIEW_LEAK: {
|
||||
if (sLeaks == null) sLeaks = new LinkedList();
|
||||
Log.d(VIEW_AND_ACTIVITY_LEAKS, "forcefully leaking 2 views");
|
||||
sLeaks.add(new View(mContext));
|
||||
sLeaks.add(new View(mContext));
|
||||
return response;
|
||||
}
|
||||
|
||||
case TestProtocol.PRINT_VIEW_LEAK: {
|
||||
Log.d(VIEW_AND_ACTIVITY_LEAKS, "(pid=" + Process.myPid() + ") sLeaks=" + sLeaks);
|
||||
return response;
|
||||
}
|
||||
|
||||
case TestProtocol.REQUEST_START_EVENT_LOGGING: {
|
||||
sEvents = new ArrayList<>();
|
||||
TestLogging.setEventConsumer(
|
||||
@@ -218,29 +201,6 @@ public class DebugTestInformationHandler extends TestInformationHandler {
|
||||
}
|
||||
}
|
||||
|
||||
case TestProtocol.REQUEST_USE_TEST_WORKSPACE_LAYOUT: {
|
||||
useTestWorkspaceLayout(
|
||||
LauncherSettings.Settings.ARG_DEFAULT_WORKSPACE_LAYOUT_TEST);
|
||||
return response;
|
||||
}
|
||||
|
||||
case TestProtocol.REQUEST_USE_TEST2_WORKSPACE_LAYOUT: {
|
||||
useTestWorkspaceLayout(
|
||||
LauncherSettings.Settings.ARG_DEFAULT_WORKSPACE_LAYOUT_TEST2);
|
||||
return response;
|
||||
}
|
||||
|
||||
case TestProtocol.REQUEST_USE_TAPL_WORKSPACE_LAYOUT: {
|
||||
useTestWorkspaceLayout(
|
||||
LauncherSettings.Settings.ARG_DEFAULT_WORKSPACE_LAYOUT_TAPL);
|
||||
return response;
|
||||
}
|
||||
|
||||
case TestProtocol.REQUEST_USE_DEFAULT_WORKSPACE_LAYOUT: {
|
||||
useTestWorkspaceLayout(null);
|
||||
return response;
|
||||
}
|
||||
|
||||
case TestProtocol.REQUEST_HOTSEAT_ICON_NAMES: {
|
||||
return getLauncherUIProperty(Bundle::putStringArrayList, l -> {
|
||||
ShortcutAndWidgetContainer hotseatIconsContainer =
|
||||
@@ -278,20 +238,4 @@ public class DebugTestInformationHandler extends TestInformationHandler {
|
||||
return super.call(method, arg, extras);
|
||||
}
|
||||
}
|
||||
|
||||
private void useTestWorkspaceLayout(String layout) {
|
||||
final long identity = Binder.clearCallingIdentity();
|
||||
try {
|
||||
if (layout != null) {
|
||||
LauncherSettings.Settings.call(mContext.getContentResolver(),
|
||||
LauncherSettings.Settings.METHOD_SET_USE_TEST_WORKSPACE_LAYOUT_FLAG,
|
||||
layout);
|
||||
} else {
|
||||
LauncherSettings.Settings.call(mContext.getContentResolver(),
|
||||
LauncherSettings.Settings.METHOD_CLEAR_USE_TEST_WORKSPACE_LAYOUT_FLAG);
|
||||
}
|
||||
} finally {
|
||||
Binder.restoreCallingIdentity(identity);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -34,4 +34,6 @@
|
||||
<color name="black_900">#000000</color>
|
||||
|
||||
<color name="bugNotificationColor">#ff4caf50</color>
|
||||
<!-- Yellow 600, used for highlighting "important" conversations in settings & notifications -->
|
||||
<color name="important_conversation">#f9ab00</color>
|
||||
</resources>
|
||||
@@ -104,7 +104,7 @@
|
||||
<bool name="config_default_show_icon_labels_on_home_screen">true</bool>
|
||||
<bool name="config_default_show_icon_labels_in_drawer">true</bool>
|
||||
<bool name="config_default_enable_fuzzy_search">false</bool>
|
||||
<bool name="config_default_enable_smartspace">true</bool>
|
||||
<bool name="config_default_enable_smartspace">false</bool>
|
||||
<bool name="config_default_enable_feed">true</bool>
|
||||
<bool name="config_default_enable_icon_selection">false</bool>
|
||||
<bool name="config_default_show_component_names">false</bool>
|
||||
|
||||
@@ -143,7 +143,7 @@ class AllAppsSearchInput(context: Context, attrs: AttributeSet?) :
|
||||
}
|
||||
}
|
||||
|
||||
override fun setFocusedResultTitle(title: CharSequence?, sub: CharSequence?) {
|
||||
override fun setFocusedResultTitle(title: CharSequence?, sub: CharSequence?, showArrow: Boolean) {
|
||||
focusedResultTitle = title?.toString().orEmpty()
|
||||
updateHint()
|
||||
}
|
||||
|
||||
File diff suppressed because it is too large.
Load diff
@@ -0,0 +1,664 @@
|
||||
|
||||
/*
|
||||
* Copyright (C) 2020 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package app.lawnchair.common
|
||||
|
||||
import android.annotation.SuppressLint
|
||||
import android.content.Context
|
||||
import android.graphics.PointF
|
||||
import android.os.VibrationAttributes
|
||||
import android.os.VibrationEffect
|
||||
import android.os.Vibrator
|
||||
import android.view.MotionEvent
|
||||
import android.view.VelocityTracker
|
||||
import android.view.View
|
||||
import android.view.ViewConfiguration
|
||||
import androidx.dynamicanimation.animation.DynamicAnimation
|
||||
import androidx.dynamicanimation.animation.FloatPropertyCompat
|
||||
import androidx.dynamicanimation.animation.SpringForce
|
||||
import app.lawnchair.animation.PhysicsAnimator
|
||||
import kotlin.math.abs
|
||||
import kotlin.math.hypot
|
||||
|
||||
/**
|
||||
* Utility class for creating 'magnetized' objects that are attracted to one or more magnetic
|
||||
* targets. Magnetic targets attract objects that are dragged near them, and hold them there unless
|
||||
* they're moved away or released. Releasing objects inside a magnetic target typically performs an
|
||||
* action on the object.
|
||||
*
|
||||
* MagnetizedObject also supports flinging to targets, which will result in the object being pulled
|
||||
* into the target and released as if it was dragged into it.
|
||||
*
|
||||
* To use this class, either construct an instance with an object of arbitrary type, or use the
|
||||
* [MagnetizedObject.magnetizeView] shortcut method if you're magnetizing a view. Then, set
|
||||
* [magnetListener] to receive event callbacks. In your touch handler, pass all MotionEvents
|
||||
* that move this object to [maybeConsumeMotionEvent]. If that method returns true, consider the
|
||||
* event consumed by the MagnetizedObject and don't move the object unless it begins returning false
|
||||
* again.
|
||||
*
|
||||
* @param context Context, used to retrieve a Vibrator instance for vibration effects.
|
||||
* @param underlyingObject The actual object that we're magnetizing.
|
||||
* @param xProperty Property that sets the x value of the object's position.
|
||||
* @param yProperty Property that sets the y value of the object's position.
|
||||
*/
|
||||
abstract class MagnetizedObject<T : Any>(
|
||||
val context: Context,
|
||||
|
||||
/** The actual object that is animated. */
|
||||
val underlyingObject: T,
|
||||
|
||||
/** Property that gets/sets the object's X value. */
|
||||
val xProperty: FloatPropertyCompat<in T>,
|
||||
|
||||
/** Property that gets/sets the object's Y value. */
|
||||
val yProperty: FloatPropertyCompat<in T>
|
||||
) {
|
||||
|
||||
/** Return the width of the object. */
|
||||
abstract fun getWidth(underlyingObject: T): Float
|
||||
|
||||
/** Return the height of the object. */
|
||||
abstract fun getHeight(underlyingObject: T): Float
|
||||
|
||||
/**
|
||||
* Fill the provided array with the location of the top-left of the object, relative to the
|
||||
* entire screen. Compare to [View.getLocationOnScreen].
|
||||
*/
|
||||
abstract fun getLocationOnScreen(underlyingObject: T, loc: IntArray)
|
||||
|
||||
/** Methods for listening to events involving a magnetized object. */
|
||||
interface MagnetListener {
|
||||
|
||||
/**
|
||||
* Called when touch events move within the magnetic field of a target, causing the
|
||||
* object to animate to the target and become 'stuck' there. The animation happens
|
||||
* automatically here - you should not move the object. You can, however, change its state
|
||||
* to indicate to the user that it's inside the target and releasing it will have an effect.
|
||||
*
|
||||
* [maybeConsumeMotionEvent] is now returning true and will continue to do so until a call
|
||||
* to [onUnstuckFromTarget] or [onReleasedInTarget].
|
||||
*
|
||||
* @param target The target that the object is now stuck to.
|
||||
*/
|
||||
fun onStuckToTarget(target: MagneticTarget)
|
||||
|
||||
/**
|
||||
* Called when the object is no longer stuck to a target. This means that either touch
|
||||
* events moved outside of the magnetic field radius, or that a forceful fling out of the
|
||||
* target was detected.
|
||||
*
|
||||
* The object won't be automatically animated out of the target, since you're responsible
|
||||
* for moving the object again. You should move it (or animate it) using your own
|
||||
* movement/animation logic.
|
||||
*
|
||||
* Reverse any effects applied in [onStuckToTarget] here.
|
||||
*
|
||||
* If [wasFlungOut] is true, [maybeConsumeMotionEvent] returned true for the ACTION_UP event
|
||||
* that concluded the fling. If [wasFlungOut] is false, that means a drag gesture is ongoing
|
||||
* and [maybeConsumeMotionEvent] is now returning false.
|
||||
*
|
||||
* @param target The target that this object was just unstuck from.
|
||||
* @param velX The X velocity of the touch gesture when it exited the magnetic field.
|
||||
* @param velY The Y velocity of the touch gesture when it exited the magnetic field.
|
||||
* @param wasFlungOut Whether the object was unstuck via a fling gesture. This means that
|
||||
* an ACTION_UP event was received, and that the gesture velocity was sufficient to conclude
|
||||
* that the user wants to un-stick the object despite no touch events occurring outside of
|
||||
* the magnetic field radius.
|
||||
*/
|
||||
fun onUnstuckFromTarget(
|
||||
target: MagneticTarget,
|
||||
velX: Float,
|
||||
velY: Float,
|
||||
wasFlungOut: Boolean
|
||||
)
|
||||
|
||||
/**
|
||||
* Called when the object is released inside a target, or flung towards it with enough
|
||||
* velocity to reach it.
|
||||
*
|
||||
* @param target The target that the object was released in.
|
||||
*/
|
||||
fun onReleasedInTarget(target: MagneticTarget)
|
||||
}
|
||||
|
||||
private val animator: PhysicsAnimator<T> = PhysicsAnimator.getInstance(underlyingObject)
|
||||
private val objectLocationOnScreen = IntArray(2)
|
||||
|
||||
/**
|
||||
* Targets that have been added to this object. These will all be considered when determining
|
||||
* magnetic fields and fling trajectories.
|
||||
*/
|
||||
private val associatedTargets = ArrayList<MagneticTarget>()
|
||||
|
||||
private val velocityTracker: VelocityTracker = VelocityTracker.obtain()
|
||||
private val vibrator: Vibrator = context.getSystemService(Context.VIBRATOR_SERVICE) as Vibrator
|
||||
private val vibrationAttributes: VibrationAttributes = VibrationAttributes.createForUsage(
|
||||
VibrationAttributes.USAGE_TOUCH)
|
||||
|
||||
private var touchDown = PointF()
|
||||
private var touchSlop = 0
|
||||
private var movedBeyondSlop = false
|
||||
|
||||
/** Whether touch events are presently occurring within the magnetic field area of a target. */
|
||||
val objectStuckToTarget: Boolean
|
||||
get() = targetObjectIsStuckTo != null
|
||||
|
||||
/** The target the object is stuck to, or null if the object is not stuck to any target. */
|
||||
private var targetObjectIsStuckTo: MagneticTarget? = null
|
||||
|
||||
/**
|
||||
* Sets the listener to receive events. This must be set, or [maybeConsumeMotionEvent]
|
||||
* will always return false and no magnetic effects will occur.
|
||||
*/
|
||||
lateinit var magnetListener: MagnetizedObject.MagnetListener
|
||||
|
||||
/**
|
||||
* Optional update listener to provide to the PhysicsAnimator that is used to spring the object
|
||||
* into the target.
|
||||
*/
|
||||
var physicsAnimatorUpdateListener: PhysicsAnimator.UpdateListener<T>? = null
|
||||
|
||||
/**
|
||||
* Optional end listener to provide to the PhysicsAnimator that is used to spring the object
|
||||
* into the target.
|
||||
*/
|
||||
var physicsAnimatorEndListener: PhysicsAnimator.EndListener<T>? = null
|
||||
|
||||
/**
|
||||
* Method that is called when the object should be animated stuck to the target. The default
|
||||
* implementation uses the object's x and y properties to animate the object centered inside the
|
||||
* target. You can override this if you need custom animation.
|
||||
*
|
||||
* The method is invoked with the MagneticTarget that the object is sticking to, the X and Y
|
||||
* velocities of the gesture that brought the object into the magnetic radius, whether or not it
|
||||
* was flung, and a callback you must call after your animation completes.
|
||||
*/
|
||||
var animateStuckToTarget: (MagneticTarget, Float, Float, Boolean, (() -> Unit)?) -> Unit =
|
||||
::animateStuckToTargetInternal
|
||||
|
||||
/**
|
||||
* Sets whether forcefully flinging the object vertically towards a target causes it to be
|
||||
* attracted to the target and then released immediately, despite never being dragged within the
|
||||
* magnetic field.
|
||||
*/
|
||||
var flingToTargetEnabled = true
|
||||
|
||||
/**
|
||||
* If fling to target is enabled, forcefully flinging the object towards a target will cause
|
||||
* it to be attracted to the target and then released immediately, despite never being dragged
|
||||
* within the magnetic field.
|
||||
*
|
||||
* This sets the width of the area considered 'near' enough a target to be considered a fling,
|
||||
* in terms of percent of the target view's width. For example, setting this to 3f means that
|
||||
* flings towards a 100px-wide target will be considered 'near' enough if they're towards the
|
||||
* 300px-wide area around the target.
|
||||
*
|
||||
* Flings whose trajectory intersects the area will be attracted and released - even if the
|
||||
* target view itself isn't intersected:
|
||||
*
|
||||
* | |
|
||||
* | 0 |
|
||||
* | / |
|
||||
* | / |
|
||||
* | X / |
|
||||
* |.....###.....|
|
||||
*
|
||||
*
|
||||
* Flings towards the target whose trajectories do not intersect the area will be treated as
|
||||
* normal flings and the magnet will leave the object alone:
|
||||
*
|
||||
* | |
|
||||
* | |
|
||||
* | 0 |
|
||||
* | / |
|
||||
* | / X |
|
||||
* |.....###.....|
|
||||
*
|
||||
*/
|
||||
var flingToTargetWidthPercent = 3f
|
||||
|
||||
/**
|
||||
* Sets the minimum velocity (in pixels per second) required to fling an object to the target
|
||||
* without dragging it into the magnetic field.
|
||||
*/
|
||||
var flingToTargetMinVelocity = 4000f
|
||||
|
||||
/**
|
||||
* Sets the minimum velocity (in pixels per second) required to fling un-stuck an object stuck
|
||||
* to the target. If this velocity is reached, the object will be freed even if it wasn't moved
|
||||
* outside the magnetic field radius.
|
||||
*/
|
||||
var flingUnstuckFromTargetMinVelocity = 4000f
|
||||
|
||||
/**
|
||||
* Sets the maximum X velocity above which the object will not stick to the target. Even if the
|
||||
* object is dragged through the magnetic field, it will not stick to the target until the
|
||||
* horizontal velocity is below this value.
|
||||
*/
|
||||
var stickToTargetMaxXVelocity = 2000f
|
||||
|
||||
/**
|
||||
* Enable or disable haptic vibration effects when the object interacts with the magnetic field.
|
||||
*
|
||||
* If you're experiencing crashes when the object enters targets, ensure that you have the
|
||||
* android.permission.VIBRATE permission!
|
||||
*/
|
||||
var hapticsEnabled = true
|
||||
|
||||
/** Default spring configuration to use for animating the object into a target. */
|
||||
var springConfig = PhysicsAnimator.SpringConfig(
|
||||
SpringForce.STIFFNESS_MEDIUM, SpringForce.DAMPING_RATIO_NO_BOUNCY)
|
||||
|
||||
/**
|
||||
* Spring configuration to use to spring the object into a target specifically when it's flung
|
||||
* towards (rather than dragged near) it.
|
||||
*/
|
||||
var flungIntoTargetSpringConfig = springConfig
|
||||
|
||||
/**
|
||||
* Adds the provided MagneticTarget to this object. The object will now be attracted to the
|
||||
* target if it strays within its magnetic field or is flung towards it.
|
||||
*
|
||||
* If this target (or its magnetic field) overlaps another target added to this object, the
|
||||
* prior target will take priority.
|
||||
*/
|
||||
fun addTarget(target: MagneticTarget) {
|
||||
associatedTargets.add(target)
|
||||
target.updateLocationOnScreen()
|
||||
}
|
||||
|
||||
/**
|
||||
* Shortcut that accepts a View and a magnetic field radius and adds it as a magnetic target.
|
||||
*
|
||||
* @return The MagneticTarget instance for the given View. This can be used to change the
|
||||
* target's magnetic field radius after it's been added. It can also be added to other
|
||||
* magnetized objects.
|
||||
*/
|
||||
fun addTarget(target: View, magneticFieldRadiusPx: Int): MagneticTarget {
|
||||
return MagneticTarget(target, magneticFieldRadiusPx).also { addTarget(it) }
|
||||
}
|
||||
|
||||
/**
|
||||
* Removes the given target from this object. The target will no longer attract the object.
|
||||
*/
|
||||
fun removeTarget(target: MagneticTarget) {
|
||||
associatedTargets.remove(target)
|
||||
}
|
||||
|
||||
/**
|
||||
* Removes all associated targets from this object.
|
||||
*/
|
||||
fun clearAllTargets() {
|
||||
associatedTargets.clear()
|
||||
}
|
||||
|
||||
/**
|
||||
* Provide this method with all motion events that move the magnetized object. If the
|
||||
* location of the motion events moves within the magnetic field of a target, or indicate a
|
||||
* fling-to-target gesture, this method will return true and you should not move the object
|
||||
* yourself until it returns false again.
|
||||
*
|
||||
* Note that even when this method returns true, you should continue to pass along new motion
|
||||
* events so that we know when the events move back outside the magnetic field area.
|
||||
*
|
||||
* This method will always return false if you haven't set a [magnetListener].
|
||||
*/
|
||||
fun maybeConsumeMotionEvent(ev: MotionEvent): Boolean {
|
||||
// Short-circuit if we don't have a listener or any targets, since those are required.
|
||||
if (associatedTargets.size == 0) {
|
||||
return false
|
||||
}
|
||||
|
||||
// When a gesture begins, recalculate target views' positions on the screen in case they
|
||||
// have changed. Also, clear state.
|
||||
if (ev.action == MotionEvent.ACTION_DOWN) {
|
||||
updateTargetViews()
|
||||
|
||||
// Clear the velocity tracker and stuck target.
|
||||
velocityTracker.clear()
|
||||
targetObjectIsStuckTo = null
|
||||
|
||||
// Set the touch down coordinates and reset movedBeyondSlop.
|
||||
touchDown.set(ev.rawX, ev.rawY)
|
||||
movedBeyondSlop = false
|
||||
}
|
||||
|
||||
// Always pass events to the VelocityTracker.
|
||||
addMovement(ev)
|
||||
|
||||
// If we haven't yet moved beyond the slop distance, check if we have.
|
||||
if (!movedBeyondSlop) {
|
||||
val dragDistance = hypot(ev.rawX - touchDown.x, ev.rawY - touchDown.y)
|
||||
if (dragDistance > touchSlop) {
|
||||
// If we're beyond the slop distance, save that and continue.
|
||||
movedBeyondSlop = true
|
||||
} else {
|
||||
// Otherwise, don't do anything yet.
|
||||
return false
|
||||
}
|
||||
}
|
||||
|
||||
val targetObjectIsInMagneticFieldOf = associatedTargets.firstOrNull { target ->
|
||||
val distanceFromTargetCenter = hypot(
|
||||
ev.rawX - target.centerOnScreen.x,
|
||||
ev.rawY - target.centerOnScreen.y)
|
||||
distanceFromTargetCenter < target.magneticFieldRadiusPx
|
||||
}
|
||||
|
||||
// If we aren't currently stuck to a target, and we're in the magnetic field of a target,
|
||||
// we're newly stuck.
|
||||
val objectNewlyStuckToTarget =
|
||||
!objectStuckToTarget && targetObjectIsInMagneticFieldOf != null
|
||||
|
||||
// If we are currently stuck to a target, we're in the magnetic field of a target, and that
|
||||
// target isn't the one we're currently stuck to, then touch events have moved into a
|
||||
// adjacent target's magnetic field.
|
||||
val objectMovedIntoDifferentTarget =
|
||||
objectStuckToTarget &&
|
||||
targetObjectIsInMagneticFieldOf != null &&
|
||||
targetObjectIsStuckTo != targetObjectIsInMagneticFieldOf
|
||||
|
||||
if (objectNewlyStuckToTarget || objectMovedIntoDifferentTarget) {
|
||||
velocityTracker.computeCurrentVelocity(1000)
|
||||
val velX = velocityTracker.xVelocity
|
||||
val velY = velocityTracker.yVelocity
|
||||
|
||||
// If the object is moving too quickly within the magnetic field, do not stick it. This
|
||||
// only applies to objects newly stuck to a target. If the object is moved into a new
|
||||
// target, it wasn't moving at all (since it was stuck to the previous one).
|
||||
if (objectNewlyStuckToTarget && abs(velX) > stickToTargetMaxXVelocity) {
|
||||
return false
|
||||
}
|
||||
|
||||
// This touch event is newly within the magnetic field - let the listener know, and
|
||||
// animate sticking to the magnet.
|
||||
targetObjectIsStuckTo = targetObjectIsInMagneticFieldOf
|
||||
cancelAnimations()
|
||||
magnetListener.onStuckToTarget(targetObjectIsInMagneticFieldOf!!)
|
||||
animateStuckToTarget(targetObjectIsInMagneticFieldOf, velX, velY, false, null)
|
||||
|
||||
vibrateIfEnabled(VibrationEffect.EFFECT_HEAVY_CLICK)
|
||||
} else if (targetObjectIsInMagneticFieldOf == null && objectStuckToTarget) {
|
||||
velocityTracker.computeCurrentVelocity(1000)
|
||||
|
||||
// This touch event is newly outside the magnetic field - let the listener know. It will
|
||||
// move the object out of the target using its own movement logic.
|
||||
cancelAnimations()
|
||||
magnetListener.onUnstuckFromTarget(
|
||||
targetObjectIsStuckTo!!, velocityTracker.xVelocity, velocityTracker.yVelocity,
|
||||
wasFlungOut = false)
|
||||
targetObjectIsStuckTo = null
|
||||
|
||||
vibrateIfEnabled(VibrationEffect.EFFECT_TICK)
|
||||
}
|
||||
|
||||
// First, check for relevant gestures concluding with an ACTION_UP.
|
||||
if (ev.action == MotionEvent.ACTION_UP) {
|
||||
|
||||
velocityTracker.computeCurrentVelocity(1000 /* units */)
|
||||
val velX = velocityTracker.xVelocity
|
||||
val velY = velocityTracker.yVelocity
|
||||
|
||||
// Cancel the magnetic animation since we might still be springing into the magnetic
|
||||
// target, but we're about to fling away or release.
|
||||
cancelAnimations()
|
||||
|
||||
if (objectStuckToTarget) {
|
||||
if (-velY > flingUnstuckFromTargetMinVelocity) {
|
||||
// If the object is stuck, but it was forcefully flung away from the target in
|
||||
// the upward direction, tell the listener so the object can be animated out of
|
||||
// the target.
|
||||
magnetListener.onUnstuckFromTarget(
|
||||
targetObjectIsStuckTo!!, velX, velY, wasFlungOut = true)
|
||||
} else {
|
||||
// If the object is stuck and not flung away, it was released inside the target.
|
||||
magnetListener.onReleasedInTarget(targetObjectIsStuckTo!!)
|
||||
vibrateIfEnabled(VibrationEffect.EFFECT_HEAVY_CLICK)
|
||||
}
|
||||
|
||||
// Either way, we're no longer stuck.
|
||||
targetObjectIsStuckTo = null
|
||||
return true
|
||||
}
|
||||
|
||||
// The target we're flinging towards, or null if we're not flinging towards any target.
|
||||
val flungToTarget = associatedTargets.firstOrNull { target ->
|
||||
isForcefulFlingTowardsTarget(target, ev.rawX, ev.rawY, velX, velY)
|
||||
}
|
||||
|
||||
if (flungToTarget != null) {
|
||||
// If this is a fling-to-target, animate the object to the magnet and then release
|
||||
// it.
|
||||
magnetListener.onStuckToTarget(flungToTarget)
|
||||
targetObjectIsStuckTo = flungToTarget
|
||||
|
||||
animateStuckToTarget(flungToTarget, velX, velY, true) {
|
||||
magnetListener.onReleasedInTarget(flungToTarget)
|
||||
targetObjectIsStuckTo = null
|
||||
vibrateIfEnabled(VibrationEffect.EFFECT_HEAVY_CLICK)
|
||||
}
|
||||
|
||||
return true
|
||||
}
|
||||
|
||||
// If it's not either of those things, we are not interested.
|
||||
return false
|
||||
}
|
||||
|
||||
return objectStuckToTarget // Always consume touch events if the object is stuck.
|
||||
}
|
||||
|
||||
/** Plays the given vibration effect if haptics are enabled. */
|
||||
@SuppressLint("MissingPermission")
|
||||
private fun vibrateIfEnabled(effectId: Int) {
|
||||
if (hapticsEnabled) {
|
||||
vibrator.vibrate(VibrationEffect.createPredefined(effectId), vibrationAttributes)
|
||||
}
|
||||
}
|
||||
|
||||
/** Adds the movement to the velocity tracker using raw coordinates. */
|
||||
private fun addMovement(event: MotionEvent) {
|
||||
// Add movement to velocity tracker using raw screen X and Y coordinates instead
|
||||
// of window coordinates because the window frame may be moving at the same time.
|
||||
val deltaX = event.rawX - event.x
|
||||
val deltaY = event.rawY - event.y
|
||||
event.offsetLocation(deltaX, deltaY)
|
||||
velocityTracker.addMovement(event)
|
||||
event.offsetLocation(-deltaX, -deltaY)
|
||||
}
|
||||
|
||||
/** Animates sticking the object to the provided target with the given start velocities. */
|
||||
private fun animateStuckToTargetInternal(
|
||||
target: MagneticTarget,
|
||||
velX: Float,
|
||||
velY: Float,
|
||||
flung: Boolean,
|
||||
after: (() -> Unit)? = null
|
||||
) {
|
||||
target.updateLocationOnScreen()
|
||||
getLocationOnScreen(underlyingObject, objectLocationOnScreen)
|
||||
|
||||
// Calculate the difference between the target's center coordinates and the object's.
|
||||
// Animating the object's x/y properties by these values will center the object on top
|
||||
// of the magnetic target.
|
||||
val xDiff = target.centerOnScreen.x -
|
||||
getWidth(underlyingObject) / 2f - objectLocationOnScreen[0]
|
||||
val yDiff = target.centerOnScreen.y -
|
||||
getHeight(underlyingObject) / 2f - objectLocationOnScreen[1]
|
||||
|
||||
val springConfig = if (flung) flungIntoTargetSpringConfig else springConfig
|
||||
|
||||
cancelAnimations()
|
||||
|
||||
// Animate to the center of the target.
|
||||
animator
|
||||
.spring(xProperty, xProperty.getValue(underlyingObject) + xDiff, velX,
|
||||
springConfig)
|
||||
.spring(yProperty, yProperty.getValue(underlyingObject) + yDiff, velY,
|
||||
springConfig)
|
||||
|
||||
if (physicsAnimatorUpdateListener != null) {
|
||||
animator.addUpdateListener(physicsAnimatorUpdateListener!!)
|
||||
}
|
||||
|
||||
if (physicsAnimatorEndListener != null) {
|
||||
animator.addEndListener(physicsAnimatorEndListener!!)
|
||||
}
|
||||
|
||||
if (after != null) {
|
||||
animator.withEndActions(after)
|
||||
}
|
||||
|
||||
animator.start()
|
||||
}
|
||||
|
||||
/**
|
||||
* Whether or not the provided values match a 'fast fling' towards the provided target. If it
|
||||
* does, we consider it a fling-to-target gesture.
|
||||
*/
|
||||
private fun isForcefulFlingTowardsTarget(
|
||||
target: MagneticTarget,
|
||||
rawX: Float,
|
||||
rawY: Float,
|
||||
velX: Float,
|
||||
velY: Float
|
||||
): Boolean {
|
||||
if (!flingToTargetEnabled) {
|
||||
return false
|
||||
}
|
||||
|
||||
// Whether velocity is sufficient, depending on whether we're flinging into a target at the
|
||||
// top or the bottom of the screen.
|
||||
val velocitySufficient =
|
||||
if (rawY < target.centerOnScreen.y) velY > flingToTargetMinVelocity
|
||||
else velY < flingToTargetMinVelocity
|
||||
|
||||
if (!velocitySufficient) {
|
||||
return false
|
||||
}
|
||||
|
||||
// Whether the trajectory of the fling intersects the target area.
|
||||
var targetCenterXIntercept = rawX
|
||||
|
||||
// Only do math if the X velocity is non-zero, otherwise X won't change.
|
||||
if (velX != 0f) {
|
||||
// Rise over run...
|
||||
val slope = velY / velX
|
||||
// ...y = mx + b, b = y / mx...
|
||||
val yIntercept = rawY - slope * rawX
|
||||
|
||||
// ...calculate the x value when y = the target's y-coordinate.
|
||||
targetCenterXIntercept = (target.centerOnScreen.y - yIntercept) / slope
|
||||
}
|
||||
|
||||
// The width of the area we're looking for a fling towards.
|
||||
val targetAreaWidth = target.targetView.width * flingToTargetWidthPercent
|
||||
|
||||
// Velocity was sufficient, so return true if the intercept is within the target area.
|
||||
return targetCenterXIntercept > target.centerOnScreen.x - targetAreaWidth / 2 &&
|
||||
targetCenterXIntercept < target.centerOnScreen.x + targetAreaWidth / 2
|
||||
}
|
||||
|
||||
/** Cancel animations on this object's x/y properties. */
|
||||
internal fun cancelAnimations() {
|
||||
animator.cancel(xProperty, yProperty)
|
||||
}
|
||||
|
||||
/** Updates the locations on screen of all of the [associatedTargets]. */
|
||||
internal fun updateTargetViews() {
|
||||
associatedTargets.forEach { it.updateLocationOnScreen() }
|
||||
|
||||
// Update the touch slop, since the configuration may have changed.
|
||||
if (associatedTargets.size > 0) {
|
||||
touchSlop =
|
||||
ViewConfiguration.get(associatedTargets[0].targetView.context).scaledTouchSlop
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Represents a target view with a magnetic field radius and cached center-on-screen
|
||||
* coordinates.
|
||||
*
|
||||
* Instances of MagneticTarget are passed to a MagnetizedObject's [addTarget], and can then
|
||||
* attract the object if it's dragged near or flung towards it. MagneticTargets can be added to
|
||||
* multiple objects.
|
||||
*/
|
||||
class MagneticTarget(
|
||||
val targetView: View,
|
||||
var magneticFieldRadiusPx: Int
|
||||
) {
|
||||
val centerOnScreen = PointF()
|
||||
|
||||
private val tempLoc = IntArray(2)
|
||||
|
||||
fun updateLocationOnScreen() {
|
||||
targetView.post {
|
||||
targetView.getLocationOnScreen(tempLoc)
|
||||
|
||||
// Add half of the target size to get the center, and subtract translation since the
|
||||
// target could be animating in while we're doing this calculation.
|
||||
centerOnScreen.set(
|
||||
tempLoc[0] + targetView.width / 2f - targetView.translationX,
|
||||
tempLoc[1] + targetView.height / 2f - targetView.translationY)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
companion object {
|
||||
/**
|
||||
* Magnetizes the given view. Magnetized views are attracted to one or more magnetic
|
||||
* targets. Magnetic targets attract objects that are dragged near them, and hold them there
|
||||
* unless they're moved away or released. Releasing objects inside a magnetic target
|
||||
* typically performs an action on the object.
|
||||
*
|
||||
* Magnetized views can also be flung to targets, which will result in the view being pulled
|
||||
* into the target and released as if it was dragged into it.
|
||||
*
|
||||
* To use the returned MagnetizedObject<View> instance, first set [magnetListener] to
|
||||
* receive event callbacks. In your touch handler, pass all MotionEvents that move this view
|
||||
* to [maybeConsumeMotionEvent]. If that method returns true, consider the event consumed by
|
||||
* MagnetizedObject and don't move the view unless it begins returning false again.
|
||||
*
|
||||
* The view will be moved via translationX/Y properties, and its
|
||||
* width/height will be determined via getWidth()/getHeight(). If you are animating
|
||||
* something other than a view, or want to position your view using properties other than
|
||||
* translationX/Y, implement an instance of [MagnetizedObject].
|
||||
*
|
||||
* Note that the magnetic library can't re-order your view automatically. If the view
|
||||
* renders on top of the target views, it will obscure the target when it sticks to it.
|
||||
* You'll want to bring the view to the front in [MagnetListener.onStuckToTarget].
|
||||
*/
|
||||
@JvmStatic
|
||||
fun <T : View> magnetizeView(view: T): MagnetizedObject<T> {
|
||||
return object : MagnetizedObject<T>(
|
||||
view.context,
|
||||
view,
|
||||
DynamicAnimation.TRANSLATION_X,
|
||||
DynamicAnimation.TRANSLATION_Y) {
|
||||
override fun getWidth(underlyingObject: T): Float {
|
||||
return underlyingObject.width.toFloat()
|
||||
}
|
||||
|
||||
override fun getHeight(underlyingObject: T): Float {
|
||||
return underlyingObject.height.toFloat() }
|
||||
|
||||
override fun getLocationOnScreen(underlyingObject: T, loc: IntArray) {
|
||||
underlyingObject.getLocationOnScreen(loc)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -14,9 +14,9 @@ import app.lawnchair.font.FontManager
|
||||
import app.lawnchair.util.recursiveChildren
|
||||
import com.android.launcher3.R
|
||||
import com.android.launcher3.icons.ShadowGenerator
|
||||
import com.android.launcher3.testing.shared.ResourceUtils
|
||||
import com.android.launcher3.util.Themes
|
||||
import com.android.launcher3.views.DoubleShadowBubbleTextView
|
||||
import com.android.systemui.shared.testing.ResourceUtils
|
||||
|
||||
class ThemedSmartSpaceHostView(context: Context) : SmartSpaceHostView(context) {
|
||||
|
||||
|
||||
@@ -38,7 +38,7 @@ class LawnchairSearchAdapterProvider(
|
||||
private var quickLaunchItem: SearchResultView? = null
|
||||
set(value) {
|
||||
field = value
|
||||
appsView.searchUiManager.setFocusedResultTitle(field?.titleText, field?.titleText)
|
||||
appsView.searchUiManager.setFocusedResultTitle(field?.titleText, field?.titleText, false)
|
||||
}
|
||||
|
||||
override fun isViewSupported(viewType: Int): Boolean = layoutIdMap.contains(viewType)
|
||||
|
||||
@@ -15,12 +15,12 @@ import com.android.launcher3.InvariantDeviceProfile
|
||||
import com.android.launcher3.LauncherAppState
|
||||
import com.android.launcher3.LauncherSettings.Favorites.CONTAINER
|
||||
import com.android.launcher3.LauncherSettings.Favorites.CONTAINER_HOTSEAT
|
||||
import com.android.launcher3.LauncherSettings.Favorites.PREVIEW_CONTENT_URI
|
||||
import com.android.launcher3.LauncherSettings.Favorites.SCREEN
|
||||
import com.android.launcher3.R
|
||||
import com.android.launcher3.graphics.LauncherPreviewRenderer
|
||||
import com.android.launcher3.model.BgDataModel
|
||||
import com.android.launcher3.model.GridSizeMigrationUtil
|
||||
import com.android.launcher3.model.LauncherBinder
|
||||
import com.android.launcher3.model.LoaderTask
|
||||
import com.android.launcher3.model.ModelDelegate
|
||||
import com.android.launcher3.util.ComponentKey
|
||||
@@ -93,13 +93,16 @@ class LauncherPreviewView(
|
||||
null,
|
||||
BgDataModel(),
|
||||
ModelDelegate(),
|
||||
null,
|
||||
LauncherBinder(
|
||||
LauncherAppState.getInstance(previewContext), BgDataModel(), /* bgAllAppsList= */
|
||||
null, arrayOfNulls<BgDataModel.Callbacks>(0)
|
||||
),
|
||||
) {
|
||||
override fun run() {
|
||||
loadWorkspace(
|
||||
emptyList(),
|
||||
PREVIEW_CONTENT_URI,
|
||||
"$SCREEN = 0 or $CONTAINER = $CONTAINER_HOTSEAT",
|
||||
"",
|
||||
null,
|
||||
)
|
||||
MAIN_EXECUTOR.execute {
|
||||
renderView(previewContext, mBgDataModel, mWidgetProvidersMap)
|
||||
@@ -127,7 +130,7 @@ class LauncherPreviewView(
|
||||
if (!needsToMigrate) {
|
||||
return false
|
||||
}
|
||||
return GridSizeMigrationUtil.migrateGridIfNeeded(context, idp)
|
||||
return GridSizeMigrationUtil.needsToMigrate(context, idp)
|
||||
}
|
||||
|
||||
@UiThread
|
||||
|
||||
@@ -0,0 +1,148 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<issues format="6" by="lint 8.0.0-dev" type="baseline" dependencies="true" variant="all" version="8.0.0-dev">
|
||||
|
||||
<issue
|
||||
id="NewApi"
|
||||
message="Call requires API level 28 (current min is 26): `android.app.Person#getKey`">
|
||||
<location
|
||||
file="packages/apps/Launcher3/src/com/android/launcher3/notification/NotificationKeyData.java"
|
||||
line="72"/>
|
||||
</issue>
|
||||
|
||||
<issue
|
||||
id="NewApi"
|
||||
message="Call requires API level 29 (current min is 26): `android.content.res.Resources#getFloat`">
|
||||
<location
|
||||
file="packages/apps/Launcher3/src/com/android/launcher3/util/DynamicResource.java"
|
||||
line="73"/>
|
||||
</issue>
|
||||
|
||||
<issue
|
||||
id="NewApi"
|
||||
message="Call requires API level 30 (current min is 26): `android.graphics.Outline#setPath`">
|
||||
<location
|
||||
file="packages/apps/Launcher3/src/com/android/launcher3/popup/RoundedArrowDrawable.java"
|
||||
line="114"/>
|
||||
</issue>
|
||||
|
||||
<issue
|
||||
id="NewApi"
|
||||
message="Call requires API level 30 (current min is 26): `android.view.View#getWindowInsetsController`">
|
||||
<location
|
||||
file="packages/apps/Launcher3/src/com/android/launcher3/widget/picker/WidgetsFullSheet.java"
|
||||
line="902"/>
|
||||
</issue>
|
||||
|
||||
<issue
|
||||
id="NewApi"
|
||||
message="Call requires API level 30 (current min is 26): `android.view.WindowInsets.Type#ime`">
|
||||
<location
|
||||
file="packages/apps/Launcher3/src/com/android/launcher3/widget/picker/WidgetsFullSheet.java"
|
||||
line="902"/>
|
||||
</issue>
|
||||
|
||||
<issue
|
||||
id="NewApi"
|
||||
message="Call requires API level 30 (current min is 26): `android.view.WindowInsetsController#hide`">
|
||||
<location
|
||||
file="packages/apps/Launcher3/src/com/android/launcher3/widget/picker/WidgetsFullSheet.java"
|
||||
line="902"/>
|
||||
</issue>
|
||||
|
||||
<issue
|
||||
id="NewApi"
|
||||
message="Call requires API level 31 (current min is 26): `android.appwidget.AppWidgetHostView#resetColorResources`">
|
||||
<location
|
||||
file="packages/apps/Launcher3/src/com/android/launcher3/widget/LauncherAppWidgetHostView.java"
|
||||
line="114"/>
|
||||
</issue>
|
||||
|
||||
<issue
|
||||
id="NewApi"
|
||||
message="Call requires API level 31 (current min is 30): `android.appwidget.AppWidgetHostView#setColorResources`">
|
||||
<location
|
||||
file="packages/apps/Launcher3/src/com/android/launcher3/graphics/LauncherPreviewRenderer.java"
|
||||
line="415"/>
|
||||
</issue>
|
||||
|
||||
<issue
|
||||
id="NewApi"
|
||||
message="Field requires API level 28 (current min is 26): `android.appwidget.AppWidgetProviderInfo#widgetFeatures`">
|
||||
<location
|
||||
file="packages/apps/Launcher3/src/com/android/launcher3/widget/WidgetAddFlowHandler.java"
|
||||
line="93"/>
|
||||
</issue>
|
||||
|
||||
<issue
|
||||
id="NewApi"
|
||||
message="Field requires API level 29 (current min is 26): `android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction#ACTION_PAGE_LEFT`">
|
||||
<location
|
||||
file="packages/apps/Launcher3/src/com/android/launcher3/PagedView.java"
|
||||
line="1814"/>
|
||||
</issue>
|
||||
|
||||
<issue
|
||||
id="NewApi"
|
||||
message="Field requires API level 29 (current min is 26): `android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction#ACTION_PAGE_LEFT`">
|
||||
<location
|
||||
file="packages/apps/Launcher3/src/com/android/launcher3/PagedView.java"
|
||||
line="1824"/>
|
||||
</issue>
|
||||
|
||||
<issue
|
||||
id="NewApi"
|
||||
message="Field requires API level 29 (current min is 26): `android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction#ACTION_PAGE_RIGHT`">
|
||||
<location
|
||||
file="packages/apps/Launcher3/src/com/android/launcher3/PagedView.java"
|
||||
line="1815"/>
|
||||
</issue>
|
||||
|
||||
<issue
|
||||
id="NewApi"
|
||||
message="Field requires API level 29 (current min is 26): `android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction#ACTION_PAGE_RIGHT`">
|
||||
<location
|
||||
file="packages/apps/Launcher3/src/com/android/launcher3/PagedView.java"
|
||||
line="1823"/>
|
||||
</issue>
|
||||
|
||||
<issue
|
||||
id="NewApi"
|
||||
message="Method reference requires API level 28 (current min is 26): `Person::getKey`">
|
||||
<location
|
||||
file="packages/apps/Launcher3/src/com/android/launcher3/model/data/WorkspaceItemInfo.java"
|
||||
line="195"/>
|
||||
</issue>
|
||||
|
||||
<issue
|
||||
id="NewApi"
|
||||
message="Method reference requires API level 28 (current min is 26): `Person::getKey`">
|
||||
<location
|
||||
file="packages/apps/Launcher3/src/com/android/launcher3/notification/NotificationKeyData.java"
|
||||
line="73"/>
|
||||
</issue>
|
||||
|
||||
<issue
|
||||
id="NewApi"
|
||||
message="`?android:attr/dialogCornerRadius` requires API level 28 (current min is 26)">
|
||||
<location
|
||||
file="packages/apps/Launcher3/res/drawable/add_item_dialog_background.xml"
|
||||
line="6"/>
|
||||
</issue>
|
||||
|
||||
<issue
|
||||
id="NewApi"
|
||||
message="`?android:attr/dialogCornerRadius` requires API level 28 (current min is 26)">
|
||||
<location
|
||||
file="packages/apps/Launcher3/res/drawable/add_item_dialog_background.xml"
|
||||
line="7"/>
|
||||
</issue>
|
||||
|
||||
<issue
|
||||
id="NewApi"
|
||||
message="`@android:dimen/system_app_widget_background_radius` requires API level 31 (current min is 26)">
|
||||
<location
|
||||
file="packages/apps/Launcher3/res/drawable/widget_resize_frame.xml"
|
||||
line="20"/>
|
||||
</issue>
|
||||
|
||||
</issues>
|
||||
Submodule platform_frameworks_libs_systemui updated: be60d23181...8c0d7f78da.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+1
-1
@@ -50,7 +50,7 @@
|
||||
-dontwarn com.android.internal.util.**
|
||||
|
||||
################ Do not optimize recents lib #############
|
||||
-keep class com.android.systemui.** {
|
||||
-keep class com.android.systemui.shared.** {
|
||||
*;
|
||||
}
|
||||
|
||||
|
||||
@@ -135,7 +135,7 @@ message TaskBarContainer {
|
||||
}
|
||||
}
|
||||
|
||||
// Next value 44
|
||||
// Next value 51
|
||||
enum Attribute {
|
||||
option allow_alias = true;
|
||||
|
||||
@@ -173,11 +173,12 @@ enum Attribute {
|
||||
ALL_APPS_SEARCH_RESULT_SLICE = 19;
|
||||
ALL_APPS_SEARCH_RESULT_WIDGETS = 20;
|
||||
ALL_APPS_SEARCH_RESULT_PLAY = 21;
|
||||
ALL_APPS_SEARCH_RESULT_PLAY_GMS = 44;
|
||||
ALL_APPS_SEARCH_RESULT_FALLBACK = 22;
|
||||
ALL_APPS_SEARCH_RESULT_SUGGEST = 22 [deprecated = true];
|
||||
ALL_APPS_SEARCH_RESULT_ASSISTANT = 23;
|
||||
ALL_APPS_SEARCH_RESULT_CHROMETAB = 24;
|
||||
ALL_APPS_SEARCH_RESULT_NAVVYSITE = 25;
|
||||
ALL_APPS_SEARCH_RESULT_NAVVYSITE = 25 [deprecated = true];
|
||||
ALL_APPS_SEARCH_RESULT_TIPS = 26;
|
||||
ALL_APPS_SEARCH_RESULT_PEOPLE_TILE = 27;
|
||||
ALL_APPS_SEARCH_RESULT_LEGACY_SHORTCUT = 30;
|
||||
@@ -185,6 +186,14 @@ enum Attribute {
|
||||
ALL_APPS_SEARCH_RESULT_VIDEO = 41;
|
||||
ALL_APPS_SEARCH_RESULT_SYSTEM_POINTER = 42;
|
||||
ALL_APPS_SEARCH_RESULT_EDUCARD = 43;
|
||||
ALL_APPS_SEARCH_RESULT_LOCATION = 50;
|
||||
|
||||
// Result sources
|
||||
DATA_SOURCE_APPSEARCH_APP_PREVIEW = 45;
|
||||
DATA_SOURCE_APPSEARCH_APP_SRP_PREVIEW = 46;
|
||||
DATA_SOURCE_APPSEARCH_CATEGORY_SRP_PREVIEW = 48;
|
||||
DATA_SOURCE_APPSEARCH_ENTITY_SRP_PREVIEW = 49;
|
||||
DATA_SOURCE_AIAI_SEARCH_ROOT = 47;
|
||||
|
||||
// Web suggestions provided by AGA
|
||||
ALL_APPS_SEARCH_RESULT_WEB_SUGGEST = 39;
|
||||
|
||||
@@ -63,5 +63,6 @@ message GestureStateProto {
|
||||
RECENTS = 2;
|
||||
NEW_TASK = 3;
|
||||
LAST_TASK = 4;
|
||||
ALL_APPS = 5;
|
||||
}
|
||||
}
|
||||
@@ -103,7 +103,8 @@
|
||||
android:autoRemoveFromRecents="true"
|
||||
android:excludeFromRecents="true"
|
||||
android:theme="@style/GestureTutorialActivity"
|
||||
android:exported="true">
|
||||
android:exported="true"
|
||||
android:configChanges="orientation">
|
||||
<intent-filter>
|
||||
<action android:name="com.android.quickstep.action.GESTURE_SANDBOX"/>
|
||||
<category android:name="android.intent.category.DEFAULT"/>
|
||||
|
||||
@@ -0,0 +1,19 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Copyright (C) 2023 The Android Open Source Project
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
-->
|
||||
<selector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:androidprv="http://schemas.android.com/apk/prv/res/android">
|
||||
<item android:color="?attr/materialColorPrimaryContainer"/>
|
||||
</selector>
|
||||
@@ -0,0 +1,19 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Copyright (C) 2023 The Android Open Source Project
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
-->
|
||||
<selector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:androidprv="http://schemas.android.com/apk/prv/res/android">
|
||||
<item android:color="?attr/materialColorTertiary"/>
|
||||
</selector>
|
||||
@@ -0,0 +1,6 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<selector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:androidprv="http://schemas.android.com/apk/prv/res/android">
|
||||
<item android:state_hovered="false" android:color="?attr/materialColorSurfaceBright" />
|
||||
<item android:state_hovered="true" android:color="?attr/materialColorSurfaceVariant" />
|
||||
</selector>
|
||||
+1
-1
@@ -14,5 +14,5 @@
|
||||
limitations under the License.
|
||||
-->
|
||||
<selector xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<item android:color="?android:attr/textColorSecondary"/>
|
||||
<item android:color="@android:color/system_neutral2_700"/>
|
||||
</selector>
|
||||
+1
-2
@@ -14,6 +14,5 @@
|
||||
limitations under the License.
|
||||
-->
|
||||
<selector xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<item android:color="#EFF1F2" android:state_expanded="false" />
|
||||
<item android:color="#191C1D" android:state_expanded="true" />
|
||||
<item android:color="@android:color/system_neutral2_200"/>
|
||||
</selector>
|
||||
@@ -19,5 +19,5 @@
|
||||
android:viewportHeight="208">
|
||||
<path
|
||||
android:pathData="M24.53,169.2L32.09,165.56C77.7,143.55 77.7,64.45 32.09,42.35L24.53,38.71C14.55,33.95 6.06,25.56 0,14.92V193.08C6.06,182.44 14.55,174.05 24.53,169.2Z"
|
||||
android:fillColor="#217500"/>
|
||||
android:fillColor="?attr/onSurfaceBack"/>
|
||||
</vector>
|
||||
@@ -17,11 +17,7 @@
|
||||
android:height="67dp"
|
||||
android:viewportWidth="232"
|
||||
android:viewportHeight="67">
|
||||
<group>
|
||||
<clip-path
|
||||
android:pathData="M0,0h232v67h-232z"/>
|
||||
<path
|
||||
android:pathData="M180.9,0.6H51.1C22.9,0.6 0,23.4 0,51.7V67.6H232V51.7C232,23.4 209.1,0.6 180.9,0.6Z"
|
||||
android:fillColor="#4B67AE"/>
|
||||
</group>
|
||||
<path
|
||||
android:pathData="M180.9,0.6H51.1C22.9,0.6 0,23.4 0,51.7V67.6H232V51.7C232,23.4 209.1,0.6 180.9,0.6Z"
|
||||
android:fillColor="?attr/onSurfaceHome"/>
|
||||
</vector>
|
||||
@@ -17,11 +17,7 @@
|
||||
android:height="94dp"
|
||||
android:viewportWidth="194"
|
||||
android:viewportHeight="94">
|
||||
<group>
|
||||
<clip-path
|
||||
android:pathData="M0,0h194v94.09h-194z"/>
|
||||
<path
|
||||
android:pathData="M185.56,76.95C184.79,75.3 184.3,73.56 184.21,71.81L182.85,55.81C182.46,51.34 180.13,47.27 176.45,44.65L163.25,35.44C161.8,34.37 160.54,33.11 159.47,31.65L150.16,18.46C147.54,14.77 143.47,12.45 139,12.06L123,10.6C121.25,10.41 119.51,10.02 117.86,9.24L103.31,2.45C101.27,1.49 99.04,1 96.91,1C94.77,1 92.54,1.49 90.5,2.45L75.95,9.24C74.31,10.02 72.56,10.51 70.81,10.6L54.81,11.96C50.35,12.35 46.27,14.68 43.65,18.36L34.44,31.56C33.37,33.01 32.11,34.27 30.66,35.34L17.27,44.65C13.58,47.27 11.26,51.34 10.87,55.81L9.41,71.81C9.22,73.56 8.83,75.3 8.05,76.95L1.26,91.5C0.78,92.67 0.39,93.83 0.1,94.99H193.52C193.32,93.83 192.94,92.57 192.35,91.5L185.56,76.95Z"
|
||||
android:fillColor="#7E44AD"/>
|
||||
</group>
|
||||
<path
|
||||
android:pathData="M185.56,76.95C184.79,75.3 184.3,73.56 184.21,71.81L182.85,55.81C182.46,51.34 180.13,47.27 176.45,44.65L163.25,35.44C161.8,34.37 160.54,33.11 159.47,31.65L150.16,18.46C147.54,14.77 143.47,12.45 139,12.06L123,10.6C121.25,10.41 119.51,10.02 117.86,9.24L103.31,2.45C101.27,1.49 99.04,1 96.91,1C94.77,1 92.54,1.49 90.5,2.45L75.95,9.24C74.31,10.02 72.56,10.51 70.81,10.6L54.81,11.96C50.35,12.35 46.27,14.68 43.65,18.36L34.44,31.56C33.37,33.01 32.11,34.27 30.66,35.34L17.27,44.65C13.58,47.27 11.26,51.34 10.87,55.81L9.41,71.81C9.22,73.56 8.83,75.3 8.05,76.95L1.26,91.5C0.78,92.67 0.39,93.83 0.1,94.99H193.52C193.32,93.83 192.94,92.57 192.35,91.5L185.56,76.95Z"
|
||||
android:fillColor="?attr/onSurfaceOverview"/>
|
||||
</vector>
|
||||
@@ -19,5 +19,5 @@
|
||||
android:viewportHeight="303">
|
||||
<path
|
||||
android:pathData="M35.65,245.9L46.63,240.61C112.92,208.62 112.92,93.67 46.63,61.54L35.65,56.26C21.15,49.34 8.81,37.14 0,21.69V280.6C8.81,265.15 21.15,252.95 35.65,245.9Z"
|
||||
android:fillColor="#217500"/>
|
||||
android:fillColor="?attr/onSurfaceBack"/>
|
||||
</vector>
|
||||
@@ -17,11 +17,7 @@
|
||||
android:height="73dp"
|
||||
android:viewportWidth="362"
|
||||
android:viewportHeight="73">
|
||||
<group>
|
||||
<clip-path
|
||||
android:pathData="M0,0h362v73h-362z"/>
|
||||
<path
|
||||
android:pathData="M282.3,0H79.7C38,0 3.7,32.1 0.3,73H361.7C358.3,32.1 324,0 282.3,0Z"
|
||||
android:fillColor="#4B67AE"/>
|
||||
</group>
|
||||
<path
|
||||
android:pathData="M282.3,0H79.7C38,0 3.7,32.1 0.3,73H361.7C358.3,32.1 324,0 282.3,0Z"
|
||||
android:fillColor="?attr/onSurfaceHome"/>
|
||||
</vector>
|
||||
@@ -17,11 +17,7 @@
|
||||
android:height="144dp"
|
||||
android:viewportWidth="297"
|
||||
android:viewportHeight="144">
|
||||
<group>
|
||||
<clip-path
|
||||
android:pathData="M0,0h297v144.04h-297z"/>
|
||||
<path
|
||||
android:pathData="M284.38,116.48C283.19,113.95 282.45,111.28 282.3,108.61L280.22,84.1C279.63,77.27 276.06,71.03 270.42,67.03L250.22,52.92C247.99,51.28 246.06,49.35 244.43,47.13L230.18,26.93C226.16,21.29 219.93,17.72 213.1,17.13L188.6,14.9C185.92,14.6 183.25,14.01 180.72,12.82L158.45,2.43C155.33,0.94 151.91,0.2 148.65,0.2C145.38,0.2 141.97,0.94 138.85,2.43L116.57,12.82C114.05,14.01 111.38,14.75 108.7,14.9L84.2,16.98C77.37,17.57 71.13,21.14 67.12,26.78L53.01,46.98C51.38,49.21 49.45,51.14 47.22,52.77L26.73,67.03C21.09,71.03 17.52,77.27 16.93,84.1L14.7,108.61C14.4,111.28 13.81,113.95 12.62,116.48L2.23,138.75C1.48,140.53 0.89,142.32 0.45,144.1H296.55C296.26,142.32 295.66,140.38 294.77,138.75L284.38,116.48Z"
|
||||
android:fillColor="#7E44AD"/>
|
||||
</group>
|
||||
<path
|
||||
android:pathData="M284.38,116.48C283.19,113.95 282.45,111.28 282.3,108.61L280.22,84.1C279.63,77.27 276.06,71.03 270.42,67.03L250.22,52.92C247.99,51.28 246.06,49.35 244.43,47.13L230.18,26.93C226.16,21.29 219.93,17.72 213.1,17.13L188.6,14.9C185.92,14.6 183.25,14.01 180.72,12.82L158.45,2.43C155.33,0.94 151.91,0.2 148.65,0.2C145.38,0.2 141.97,0.94 138.85,2.43L116.57,12.82C114.05,14.01 111.38,14.75 108.7,14.9L84.2,16.98C77.37,17.57 71.13,21.14 67.12,26.78L53.01,46.98C51.38,49.21 49.45,51.14 47.22,52.77L26.73,67.03C21.09,71.03 17.52,77.27 16.93,84.1L14.7,108.61C14.4,111.28 13.81,113.95 12.62,116.48L2.23,138.75C1.48,140.53 0.89,142.32 0.45,144.1H296.55C296.26,142.32 295.66,140.38 294.77,138.75L284.38,116.48Z"
|
||||
android:fillColor="?attr/onSurfaceOverview"/>
|
||||
</vector>
|
||||
@@ -16,5 +16,4 @@
|
||||
<shape xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:shape="rectangle">
|
||||
<corners android:radius="?android:attr/dialogCornerRadius"/>
|
||||
<solid android:color="?android:attr/colorAccent"/>
|
||||
</shape>
|
||||
@@ -21,7 +21,7 @@
|
||||
<shape android:shape="rectangle"
|
||||
android:tint="?colorButtonNormal">
|
||||
<corners android:radius="24dp" />
|
||||
<solid android:color="?android:colorBackground"/>
|
||||
<solid android:color="?attr/materialColorSurfaceBright"/>
|
||||
</shape>
|
||||
</item>
|
||||
</ripple>
|
||||
@@ -17,5 +17,5 @@
|
||||
android:shape="rectangle">
|
||||
|
||||
<corners android:radius="@dimen/dialogCornerRadius" />
|
||||
<solid android:color="?attr/colorSurface" />
|
||||
<solid android:color="?attr/materialColorSurfaceBright"/>
|
||||
</shape>
|
||||
@@ -14,8 +14,8 @@
|
||||
limitations under the License.
|
||||
-->
|
||||
<shape xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:priv-android="http://schemas.android.com/apk/prv/res/android"
|
||||
xmlns:androidprv="http://schemas.android.com/apk/prv/res/android"
|
||||
android:shape="rectangle">
|
||||
<solid android:color="?attr/colorAccentPrimary" />
|
||||
<solid android:color="?attr/materialColorSecondaryFixed" />
|
||||
<corners android:radius="?android:attr/dialogCornerRadius" />
|
||||
</shape>
|
||||
@@ -15,14 +15,13 @@
|
||||
-->
|
||||
|
||||
<inset
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:androidprv="http://schemas.android.com/apk/prv/res/android">
|
||||
xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<ripple
|
||||
android:color="?android:attr/colorControlHighlight">
|
||||
<item>
|
||||
<shape android:shape="rectangle">
|
||||
<corners android:radius="16dp"/>
|
||||
<solid android:color="?attr/colorAccentPrimary"/>
|
||||
<solid android:color="@color/taskbar_edu_button_color"/>
|
||||
</shape>
|
||||
</item>
|
||||
</ripple>
|
||||
|
||||
@@ -13,7 +13,8 @@
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
-->
|
||||
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<layer-list xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:androidprv="http://schemas.android.com/apk/prv/res/android">
|
||||
<item>
|
||||
<shape
|
||||
android:id="@android:id/mask"
|
||||
@@ -25,7 +26,7 @@
|
||||
<shape
|
||||
android:shape="rectangle">
|
||||
<corners android:radius="50dp"/>
|
||||
<solid android:color="?android:attr/colorAccent"/>
|
||||
<solid android:color="@android:color/white"/>
|
||||
</shape>
|
||||
</item>
|
||||
</layer-list>
|
||||
@@ -17,11 +17,7 @@
|
||||
android:height="208dp"
|
||||
android:viewportWidth="83"
|
||||
android:viewportHeight="208">
|
||||
<group>
|
||||
<clip-path
|
||||
android:pathData="M0,0h83.95v208h-83.95z"/>
|
||||
<path
|
||||
android:pathData="M23.53,169.2L31.09,165.56C76.7,143.55 76.7,64.45 31.09,42.35L23.53,38.71C13.55,33.95 5.06,25.56 -1,14.92V193.08C5.06,182.44 13.55,174.05 23.53,169.2Z"
|
||||
android:fillColor="#217500"/>
|
||||
</group>
|
||||
<path
|
||||
android:pathData="M23.53,169.2L31.09,165.56C76.7,143.55 76.7,64.45 31.09,42.35L23.53,38.71C13.55,33.95 5.06,25.56 -1,14.92V193.08C5.06,182.44 13.55,174.05 23.53,169.2Z"
|
||||
android:fillColor="?attr/onSurfaceBack"/>
|
||||
</vector>
|
||||
@@ -19,5 +19,5 @@
|
||||
android:viewportHeight="66">
|
||||
<path
|
||||
android:pathData="M283.8,0H80.2C40.7,0 8,28.5 1.3,66H362.8C356,28.5 323.3,0 283.8,0Z"
|
||||
android:fillColor="#4B67AE"/>
|
||||
android:fillColor="?attr/onSurfaceHome"/>
|
||||
</vector>
|
||||
+1
@@ -15,5 +15,6 @@
|
||||
<shape
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:shape="rectangle">
|
||||
<solid android:color="?attr/surfaceBack" />
|
||||
<corners android:radius="@dimen/gesture_tutorial_menu_button_radius" />
|
||||
</shape>
|
||||
@@ -0,0 +1,20 @@
|
||||
<!-- Copyright (C) 2023 The Android Open Source Project
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
-->
|
||||
<shape
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:shape="rectangle">
|
||||
<solid android:color="?attr/surfaceHome" />
|
||||
<corners android:radius="@dimen/gesture_tutorial_menu_button_radius" />
|
||||
</shape>
|
||||
@@ -0,0 +1,20 @@
|
||||
<!-- Copyright (C) 2023 The Android Open Source Project
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
-->
|
||||
<shape
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:shape="rectangle">
|
||||
<solid android:color="?attr/surfaceOverview" />
|
||||
<corners android:radius="@dimen/gesture_tutorial_menu_button_radius" />
|
||||
</shape>
|
||||
@@ -19,5 +19,5 @@
|
||||
android:viewportHeight="76">
|
||||
<path
|
||||
android:pathData="M188.6,56.5C188.2,51.9 185.8,47.7 182,45L168.4,35.5C166.9,34.4 165.6,33.1 164.5,31.6L155,18C152.3,14.2 148.1,11.8 143.5,11.4L127,9.9C125.2,9.7 123.4,9.3 121.7,8.5L106.7,1.5C104.6,0.5 102.3,0 100.1,0C97.8,0 95.6,0.5 93.5,1.5L78.5,8.5C76.8,9.3 75,9.8 73.2,9.9L56.7,11.3C52.1,11.7 47.9,14.1 45.2,17.9L35.7,31.5C34.6,33 33.3,34.3 31.8,35.4L18,45C14.2,47.7 11.8,51.9 11.4,56.5L9.9,73C9.8,74 9.6,75 9.3,76H190.6C190.3,75 190.1,74 190,73L188.6,56.5Z"
|
||||
android:fillColor="#7E44AD"/>
|
||||
android:fillColor="?attr/onSurfaceOverview"/>
|
||||
</vector>
|
||||
@@ -0,0 +1,28 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
|
||||
<!--
|
||||
Copyright (C) 2023 The Android Open Source Project
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
-->
|
||||
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:viewportWidth="24"
|
||||
android:viewportHeight="24">
|
||||
<path
|
||||
android:pathData="M13.329,2.305H4.242C2.751,2.305 1.542,3.514 1.542,5.005V13.005C1.542,14.496 2.751,15.705 4.242,15.705H7.875V19.011C7.875,20.502 9.084,21.711 10.575,21.711H19.662C21.153,21.711 22.362,20.502 22.362,19.011V10.011C22.362,8.52 21.153,7.311 19.662,7.311H16.029V5.005C16.029,3.514 14.821,2.305 13.329,2.305ZM14.329,7.311V5.005C14.329,4.452 13.882,4.005 13.329,4.005H4.242C3.69,4.005 3.242,4.452 3.242,5.005V13.005C3.242,13.557 3.69,14.005 4.242,14.005H7.875V10.011C7.875,8.52 9.084,7.311 10.575,7.311H14.329ZM9.575,14.005V10.011C9.575,9.611 9.81,9.266 10.15,9.106C10.285,9.037 10.438,8.999 10.6,8.999H19.687C20.239,8.999 20.687,9.447 20.687,9.999V18.999C20.687,19.399 20.452,19.744 20.113,19.904C19.977,19.972 19.824,20.011 19.662,20.011H10.575C10.023,20.011 9.575,19.563 9.575,19.011V15.705H9.6V14.005H9.575ZM15.542,11.996V14H17.588V15H15.542V16.996H14.542V15H12.464V14H14.542V11.996H15.542Z"
|
||||
android:fillColor="#000000"
|
||||
android:fillType="evenOdd"/>
|
||||
</vector>
|
||||
@@ -16,6 +16,6 @@
|
||||
<shape
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:shape="rectangle">
|
||||
<solid android:color="?attr/colorSurfaceVariant" />
|
||||
<solid android:color="?attr/materialColorSurfaceBright" />
|
||||
<corners android:radius="@dimen/keyboard_quick_switch_task_view_radius" />
|
||||
</shape>
|
||||
-1
@@ -16,6 +16,5 @@
|
||||
<shape
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:shape="rectangle">
|
||||
<solid android:color="@color/gesture_home_tutorial_background" />
|
||||
<corners android:radius="@dimen/gesture_tutorial_hotseat_icon_corner_radius" />
|
||||
</shape>
|
||||
@@ -0,0 +1,21 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Copyright (C) 2023 The Android Open Source Project
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
-->
|
||||
<shape
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:shape="rectangle">
|
||||
<solid android:color="?attr/surfaceContainer" />
|
||||
<corners android:radius="@dimen/gesture_tutorial_small_task_view_corner_radius" />
|
||||
</shape>
|
||||
@@ -0,0 +1,21 @@
|
||||
<!--
|
||||
Copyright (C) 2023 The Android Open Source Project
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
-->
|
||||
<shape
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:shape="rectangle">
|
||||
<solid android:color="?attr/surfaceContainer" />
|
||||
<corners android:radius="@dimen/gesture_tutorial_menu_button_radius" />
|
||||
</shape>
|
||||
@@ -0,0 +1,26 @@
|
||||
<!--
|
||||
Copyright (C) 2023 The Android Open Source Project
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
-->
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:androidprv="http://schemas.android.com/apk/prv/res/android"
|
||||
android:width="32dp"
|
||||
android:height="32dp"
|
||||
android:tint="?attr/colorControlNormal"
|
||||
android:viewportHeight="960"
|
||||
android:viewportWidth="960">
|
||||
<path
|
||||
android:fillColor="?attr/materialColorOnSurface"
|
||||
android:pathData="M40,840L480,80L920,840L40,840ZM178,760L782,760L480,240L178,760ZM480,720Q497,720 508.5,708.5Q520,697 520,680Q520,663 508.5,651.5Q497,640 480,640Q463,640 451.5,651.5Q440,663 440,680Q440,697 451.5,708.5Q463,720 480,720ZM440,600L520,600L520,400L440,400L440,600ZM480,500L480,500L480,500L480,500Z" />
|
||||
</vector>
|
||||
@@ -16,6 +16,6 @@
|
||||
-->
|
||||
|
||||
<shape xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<solid android:color="?attr/colorSurface" />
|
||||
<solid android:color="@color/menu_item_hover_state_color" />
|
||||
<corners android:radius="@dimen/task_menu_item_corner_radius" />
|
||||
</shape>
|
||||
@@ -0,0 +1,20 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Copyright (C) 2023 The Android Open Source Project
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
-->
|
||||
<shape xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:shape="rectangle" >
|
||||
<solid android:color="@color/taskbar_divider_background"/>
|
||||
<corners android:radius="1dp" />
|
||||
</shape>
|
||||
@@ -22,30 +22,65 @@
|
||||
android:importantForAccessibility="yes"
|
||||
android:background="@drawable/keyboard_quick_switch_task_view_background"
|
||||
android:clipToOutline="true"
|
||||
launcher:borderColor="?attr/colorAccent">
|
||||
launcher:borderColor="?attr/materialColorOutline">
|
||||
|
||||
<include
|
||||
layout="@layout/keyboard_quick_switch_thumbnail"
|
||||
android:id="@+id/thumbnail1"
|
||||
android:layout_width="0dp"
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:id="@+id/content"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toStartOf="@id/thumbnail2"/>
|
||||
app:layout_constraintEnd_toEndOf="parent">
|
||||
|
||||
<include
|
||||
layout="@layout/keyboard_quick_switch_thumbnail"
|
||||
android:id="@+id/thumbnail2"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="match_parent"
|
||||
android:visibility="gone"
|
||||
android:layout_marginStart="@dimen/keyboard_quick_switch_split_view_spacing"
|
||||
<include
|
||||
layout="@layout/keyboard_quick_switch_thumbnail"
|
||||
android:id="@+id/thumbnail1"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="match_parent"
|
||||
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintStart_toEndOf="@id/thumbnail1"
|
||||
app:layout_constraintEnd_toEndOf="parent"/>
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toStartOf="@id/thumbnail2"/>
|
||||
|
||||
<include
|
||||
layout="@layout/keyboard_quick_switch_thumbnail"
|
||||
android:id="@+id/thumbnail2"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="match_parent"
|
||||
android:visibility="gone"
|
||||
android:layout_marginStart="@dimen/keyboard_quick_switch_split_view_spacing"
|
||||
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintStart_toEndOf="@id/thumbnail1"
|
||||
app:layout_constraintEnd_toEndOf="parent"/>
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/icon1"
|
||||
android:layout_width="@dimen/keyboard_quick_switch_taskview_icon_size"
|
||||
android:layout_height="@dimen/keyboard_quick_switch_taskview_icon_size"
|
||||
android:layout_marginTop="@dimen/keyboard_quick_switch_taskview_icon_margin"
|
||||
android:layout_marginStart="@dimen/keyboard_quick_switch_taskview_icon_margin"
|
||||
android:importantForAccessibility="no"
|
||||
|
||||
app:layout_constraintTop_toTopOf="@id/thumbnail1"
|
||||
app:layout_constraintStart_toStartOf="@id/thumbnail1"/>
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/icon2"
|
||||
android:layout_width="@dimen/keyboard_quick_switch_taskview_icon_size"
|
||||
android:layout_height="@dimen/keyboard_quick_switch_taskview_icon_size"
|
||||
android:layout_marginTop="@dimen/keyboard_quick_switch_taskview_icon_margin"
|
||||
android:layout_marginStart="@dimen/keyboard_quick_switch_taskview_icon_margin"
|
||||
android:importantForAccessibility="no"
|
||||
android:visibility="gone"
|
||||
|
||||
app:layout_constraintTop_toTopOf="@id/thumbnail2"
|
||||
app:layout_constraintStart_toStartOf="@id/thumbnail2"/>
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
||||
</com.android.launcher3.taskbar.KeyboardQuickSwitchTaskView>
|
||||
@@ -22,49 +22,46 @@
|
||||
android:paddingVertical="26dp"
|
||||
android:paddingHorizontal="56dp">
|
||||
|
||||
<androidx.constraintlayout.helper.widget.Flow
|
||||
android:id="@+id/hotseat_flow"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="match_parent"
|
||||
|
||||
app:constraint_referenced_ids=
|
||||
"hotseat_icon_1, hotseat_icon_2, hotseat_icon_3, hotseat_icon_4"
|
||||
app:flow_wrapMode="aligned"
|
||||
app:flow_maxElementsWrap="1"
|
||||
app:flow_verticalStyle="spread_inside"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintBottom_toBottomOf="parent" />
|
||||
|
||||
<View
|
||||
android:id="@+id/hotseat_icon_1"
|
||||
android:layout_width="@dimen/gesture_tutorial_hotseat_icon_size"
|
||||
android:layout_height="@dimen/gesture_tutorial_hotseat_icon_size"
|
||||
android:background="@drawable/hotseat_icon_home"
|
||||
android:clipToOutline="true"
|
||||
|
||||
app:layout_constraintBottom_toTopOf="@id/hotseat_icon_2"
|
||||
app:layout_constraintVertical_chainStyle="spread_inside"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
android:background="@drawable/redesigned_hotseat_icon"
|
||||
android:clipToOutline="true" />
|
||||
|
||||
<View
|
||||
android:id="@+id/hotseat_icon_2"
|
||||
android:layout_width="@dimen/gesture_tutorial_hotseat_icon_size"
|
||||
android:layout_height="@dimen/gesture_tutorial_hotseat_icon_size"
|
||||
android:background="@drawable/hotseat_icon_home"
|
||||
android:clipToOutline="true"
|
||||
|
||||
app:layout_constraintBottom_toTopOf="@id/hotseat_icon_3"
|
||||
app:layout_constraintTop_toBottomOf="@id/hotseat_icon_1"
|
||||
app:layout_constraintStart_toStartOf="parent" />
|
||||
android:background="@drawable/redesigned_hotseat_icon"
|
||||
android:clipToOutline="true" />
|
||||
|
||||
<View
|
||||
android:id="@+id/hotseat_icon_3"
|
||||
android:layout_width="@dimen/gesture_tutorial_hotseat_icon_size"
|
||||
android:layout_height="@dimen/gesture_tutorial_hotseat_icon_size"
|
||||
android:background="@drawable/hotseat_icon_home"
|
||||
android:clipToOutline="true"
|
||||
|
||||
app:layout_constraintBottom_toTopOf="@id/hotseat_icon_4"
|
||||
app:layout_constraintTop_toBottomOf="@id/hotseat_icon_2"
|
||||
app:layout_constraintStart_toStartOf="parent" />
|
||||
android:background="@drawable/redesigned_hotseat_icon"
|
||||
android:clipToOutline="true" />
|
||||
|
||||
<View
|
||||
android:id="@+id/hotseat_icon_4"
|
||||
android:layout_width="@dimen/gesture_tutorial_hotseat_icon_size"
|
||||
android:layout_height="@dimen/gesture_tutorial_hotseat_icon_size"
|
||||
android:background="@drawable/hotseat_icon_home"
|
||||
android:clipToOutline="true"
|
||||
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@id/hotseat_icon_3"
|
||||
app:layout_constraintBottom_toBottomOf="parent" />
|
||||
android:background="@drawable/redesigned_hotseat_icon"
|
||||
android:clipToOutline="true" />
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
@@ -0,0 +1,87 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Copyright (C) 2023 The Android Open Source Project
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
-->
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
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="wrap_content"
|
||||
android:paddingBottom="32dp"
|
||||
android:paddingStart="@dimen/gesture_tutorial_hotseat_padding_start_end"
|
||||
android:paddingEnd="@dimen/gesture_tutorial_hotseat_padding_start_end">
|
||||
|
||||
<androidx.constraintlayout.helper.widget.Flow
|
||||
android:id="@+id/hotseat_flow"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
|
||||
app:constraint_referenced_ids="hotseat_search_bar, hotseat_icon_1, hotseat_icon_2,
|
||||
hotseat_icon_3, hotseat_icon_4, hotseat_icon_5, hotseat_icon_6"
|
||||
app:flow_horizontalStyle="spread"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
<View
|
||||
android:id="@+id/hotseat_search_bar"
|
||||
android:layout_width="200dp"
|
||||
android:layout_height="@dimen/gesture_tutorial_hotseat_search_height"
|
||||
android:background="@drawable/redesigned_hotseat_icon"
|
||||
android:clipToOutline="true" />
|
||||
|
||||
<View
|
||||
android:id="@+id/hotseat_icon_1"
|
||||
android:layout_width="@dimen/gesture_tutorial_hotseat_icon_size"
|
||||
android:layout_height="@dimen/gesture_tutorial_hotseat_icon_size"
|
||||
android:background="@drawable/redesigned_hotseat_icon"
|
||||
android:clipToOutline="true" />
|
||||
|
||||
<View
|
||||
android:id="@+id/hotseat_icon_2"
|
||||
android:layout_width="@dimen/gesture_tutorial_hotseat_icon_size"
|
||||
android:layout_height="@dimen/gesture_tutorial_hotseat_icon_size"
|
||||
android:background="@drawable/redesigned_hotseat_icon"
|
||||
android:clipToOutline="true" />
|
||||
|
||||
<View
|
||||
android:id="@+id/hotseat_icon_3"
|
||||
android:layout_width="@dimen/gesture_tutorial_hotseat_icon_size"
|
||||
android:layout_height="@dimen/gesture_tutorial_hotseat_icon_size"
|
||||
android:background="@drawable/redesigned_hotseat_icon"
|
||||
android:clipToOutline="true" />
|
||||
|
||||
<View
|
||||
android:id="@+id/hotseat_icon_4"
|
||||
android:layout_width="@dimen/gesture_tutorial_hotseat_icon_size"
|
||||
android:layout_height="@dimen/gesture_tutorial_hotseat_icon_size"
|
||||
android:background="@drawable/redesigned_hotseat_icon"
|
||||
android:clipToOutline="true" />
|
||||
|
||||
<View
|
||||
android:id="@+id/hotseat_icon_5"
|
||||
android:layout_width="@dimen/gesture_tutorial_hotseat_icon_size"
|
||||
android:layout_height="@dimen/gesture_tutorial_hotseat_icon_size"
|
||||
android:background="@drawable/redesigned_hotseat_icon"
|
||||
android:clipToOutline="true" />
|
||||
|
||||
<View
|
||||
android:id="@+id/hotseat_icon_6"
|
||||
android:layout_width="@dimen/gesture_tutorial_hotseat_icon_size"
|
||||
android:layout_height="@dimen/gesture_tutorial_hotseat_icon_size"
|
||||
android:background="@drawable/redesigned_hotseat_icon"
|
||||
android:clipToOutline="true" />
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
@@ -15,24 +15,27 @@
|
||||
-->
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:androidprv="http://schemas.android.com/apk/prv/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
android:theme="@style/GestureTutorialActivity"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:paddingTop="@dimen/gesture_tutorial_menu_padding_top"
|
||||
android:paddingBottom="@dimen/gesture_tutorial_menu_padding_bottom"
|
||||
android:paddingHorizontal="@dimen/gesture_tutorial_menu_padding_horizontal"
|
||||
android:background="@color/gesture_tutorial_menu_background">
|
||||
android:background="?attr/materialColorSurfaceContainer">
|
||||
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:id="@+id/gesture_tutorial_menu_home_button"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="@dimen/gesture_tutorial_menu_button_height"
|
||||
android:layout_marginEnd="@dimen/gesture_tutorial_menu_button_spacing"
|
||||
android:background="@drawable/gesture_tutorial_menu_button_background"
|
||||
android:layout_marginBottom="24dp"
|
||||
android:background="@drawable/gesture_tutorial_menu_home_button_background"
|
||||
android:clipToOutline="true"
|
||||
android:backgroundTint="@color/gesture_home_tutorial_background"
|
||||
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintBottom_toTopOf="@id/guideline"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toStartOf="@id/gesture_tutorial_menu_back_button">
|
||||
|
||||
@@ -40,13 +43,15 @@
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:src="@drawable/gesture_tutorial_home_step_shape"
|
||||
android:scaleType="fitXY"
|
||||
android:adjustViewBounds="true"
|
||||
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"/>
|
||||
|
||||
<TextView
|
||||
style="@style/TextAppearance.GestureTutorial.MenuButton"
|
||||
style="@style/TextAppearance.GestureTutorial.MenuButton.Home"
|
||||
android:id="@+id/gesture_tutorial_menu_home_button_text"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
@@ -64,11 +69,12 @@
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="@dimen/gesture_tutorial_menu_button_height"
|
||||
android:layout_marginEnd="@dimen/gesture_tutorial_menu_button_spacing"
|
||||
android:background="@drawable/gesture_tutorial_menu_button_background"
|
||||
android:layout_marginBottom="24dp"
|
||||
android:background="@drawable/gesture_tutorial_menu_back_button_background"
|
||||
android:clipToOutline="true"
|
||||
android:backgroundTint="@color/gesture_back_tutorial_exiting_app"
|
||||
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintBottom_toTopOf="@id/guideline"
|
||||
app:layout_constraintStart_toEndOf="@id/gesture_tutorial_menu_home_button"
|
||||
app:layout_constraintEnd_toStartOf="@id/gesture_tutorial_menu_overview_button">
|
||||
|
||||
@@ -77,12 +83,14 @@
|
||||
android:layout_height="wrap_content"
|
||||
android:src="@drawable/gesture_tutorial_back_step_shape"
|
||||
android:layout_marginBottom="@dimen/gesture_tutorial_menu_back_shape_bottom_margin"
|
||||
android:scaleType="fitXY"
|
||||
android:adjustViewBounds="true"
|
||||
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"/>
|
||||
|
||||
<TextView
|
||||
style="@style/TextAppearance.GestureTutorial.MenuButton"
|
||||
style="@style/TextAppearance.GestureTutorial.MenuButton.Back"
|
||||
android:id="@+id/gesture_tutorial_menu_back_button_text"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
@@ -99,11 +107,12 @@
|
||||
android:id="@+id/gesture_tutorial_menu_overview_button"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="@dimen/gesture_tutorial_menu_button_height"
|
||||
android:background="@drawable/gesture_tutorial_menu_button_background"
|
||||
android:layout_marginBottom="24dp"
|
||||
android:background="@drawable/gesture_tutorial_menu_overview_button_background"
|
||||
android:clipToOutline="true"
|
||||
android:backgroundTint="@color/gesture_overview_tutorial_background"
|
||||
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintBottom_toTopOf="@id/guideline"
|
||||
app:layout_constraintStart_toEndOf="@id/gesture_tutorial_menu_back_button"
|
||||
app:layout_constraintEnd_toEndOf="parent">
|
||||
|
||||
@@ -111,13 +120,15 @@
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:src="@drawable/gesture_tutorial_overview_step_shape"
|
||||
android:scaleType="fitXY"
|
||||
android:adjustViewBounds="true"
|
||||
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"/>
|
||||
|
||||
<TextView
|
||||
style="@style/TextAppearance.GestureTutorial.MenuButton"
|
||||
style="@style/TextAppearance.GestureTutorial.MenuButton.Overview"
|
||||
android:id="@+id/gesture_tutorial_menu_overview_button_text"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
@@ -142,12 +153,11 @@
|
||||
style="@style/TextAppearance.GestureTutorial.ButtonLabel"
|
||||
android:id="@+id/gesture_tutorial_menu_done_button"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:paddingVertical="16dp"
|
||||
android:paddingHorizontal="26dp"
|
||||
android:layout_marginVertical="@dimen/gesture_tutorial_menu_done_button_margin"
|
||||
android:layout_height="40dp"
|
||||
android:layout_marginVertical="16dp"
|
||||
android:text="@string/gesture_tutorial_action_button_label"
|
||||
android:background="@drawable/gesture_tutorial_action_button_background"
|
||||
android:backgroundTint="?attr/materialColorPrimary"
|
||||
android:stateListAnimator="@null"
|
||||
|
||||
app:layout_constraintTop_toBottomOf="@id/guideline"
|
||||
|
||||
+3
-26
@@ -16,41 +16,18 @@
|
||||
<merge xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto">
|
||||
|
||||
<androidx.constraintlayout.widget.Guideline
|
||||
android:id="@+id/navigation_settings_guideline_bottom"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="horizontal"
|
||||
app:layout_constraintGuide_percent="0.83" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/navigation_settings"
|
||||
style="@style/TextAppearance.GestureTutorial.LinkText"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="24dp"
|
||||
android:background="?android:attr/selectableItemBackground"
|
||||
android:minHeight="48dp"
|
||||
android:text="@string/allset_navigation_settings"
|
||||
app:layout_constraintBottom_toBottomOf="@id/navigation_settings_guideline_bottom"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent" />
|
||||
android:gravity="center_horizontal"
|
||||
|
||||
<androidx.constraintlayout.widget.Guideline
|
||||
android:id="@+id/hint_guideline_bottom"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="horizontal"
|
||||
app:layout_constraintGuide_percent="0.94" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/hint"
|
||||
style="@style/TextAppearance.GestureTutorial.Feedback.Subtitle"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/allset_hint"
|
||||
android:textSize="@dimen/allset_page_swipe_up_text_size"
|
||||
app:layout_constraintBottom_toBottomOf="@id/hint_guideline_bottom"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@id/subtitle"
|
||||
app:layout_constraintStart_toStartOf="parent" />
|
||||
|
||||
</merge>
|
||||
@@ -14,33 +14,43 @@
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
-->
|
||||
<FrameLayout
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
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:id="@+id/root_view"
|
||||
android:background="@color/all_set_page_background" >
|
||||
android:fitsSystemWindows="false"
|
||||
android:background="@color/all_set_page_background">
|
||||
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
<com.airbnb.lottie.LottieAnimationView
|
||||
android:id="@+id/animated_background"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:id="@+id/content_view"
|
||||
android:fitsSystemWindows="false">
|
||||
android:gravity="center"
|
||||
android:scaleType="centerCrop"
|
||||
app:lottie_autoPlay="true"
|
||||
app:lottie_loop="true"
|
||||
|
||||
<com.airbnb.lottie.LottieAnimationView
|
||||
android:id="@+id/animated_background"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:gravity="center"
|
||||
android:scaleType="centerCrop"
|
||||
app:lottie_autoPlay="true"
|
||||
app:lottie_loop="true" />
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"/>
|
||||
|
||||
<ScrollView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:fillViewport="true"
|
||||
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent">
|
||||
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:id="@+id/text_content_view"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="@dimen/allset_page_margin_horizontal"
|
||||
android:layout_marginEnd="@dimen/allset_page_margin_horizontal"
|
||||
android:layoutDirection="locale"
|
||||
@@ -78,10 +88,24 @@
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
android:gravity="start"/>
|
||||
|
||||
<include layout="@layout/allset_navigation_and_hint"/>
|
||||
<include layout="@layout/allset_navigation"/>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/hint"
|
||||
style="@style/TextAppearance.GestureTutorial.Feedback.Subtitle"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginBottom="24dp"
|
||||
android:text="@string/allset_hint"
|
||||
android:textSize="@dimen/allset_page_swipe_up_text_size"
|
||||
android:gravity="center_horizontal"
|
||||
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent" />
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
</ScrollView>
|
||||
|
||||
</FrameLayout>
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
+5
-11
@@ -22,21 +22,15 @@
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="24dp"
|
||||
android:layout_marginBottom="24dp"
|
||||
android:background="?android:attr/selectableItemBackground"
|
||||
android:minHeight="48dp"
|
||||
android:text="@string/allset_navigation_settings"
|
||||
app:layout_constraintTop_toBottomOf="@id/subtitle"
|
||||
app:layout_constraintStart_toStartOf="parent" />
|
||||
android:gravity="center_horizontal"
|
||||
|
||||
<TextView
|
||||
android:id="@+id/hint"
|
||||
style="@style/TextAppearance.GestureTutorial.Feedback.Subtitle"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginBottom="24dp"
|
||||
android:text="@string/allset_hint"
|
||||
android:textSize="@dimen/allset_page_swipe_up_text_size"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintVertical_bias="1.0"
|
||||
app:layout_constraintTop_toBottomOf="@id/subtitle"
|
||||
app:layout_constraintBottom_toTopOf="@id/hint"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent" />
|
||||
|
||||
@@ -0,0 +1,55 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
~ Copyright (C) 2023 The Android Open Source Project
|
||||
~
|
||||
~ Licensed under the Apache License, Version 2.0 (the "License");
|
||||
~ you may not use this file except in compliance with the License.
|
||||
~ You may obtain a copy of the License at
|
||||
~
|
||||
~ http://www.apache.org/licenses/LICENSE-2.0
|
||||
~
|
||||
~ Unless required by applicable law or agreed to in writing, software
|
||||
~ distributed under the License is distributed on an "AS IS" BASIS,
|
||||
~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
~ See the License for the specific language governing permissions and
|
||||
~ limitations under the License.
|
||||
-->
|
||||
<merge xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/icon_view"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:contentDescription="@null" />
|
||||
|
||||
<!--
|
||||
Icon badge size is defined in Launcher3 BaseIconFactory as 0.444 of icon size.
|
||||
Constraint guide starts from left, which means for a badge positioned on the right,
|
||||
percent has to be 1 - 0.444 to have the same effect.
|
||||
-->
|
||||
<androidx.constraintlayout.widget.Guideline
|
||||
android:id="@+id/app_icon_constraint_horizontal"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="horizontal"
|
||||
app:layout_constraintGuide_percent="0.556" />
|
||||
|
||||
<androidx.constraintlayout.widget.Guideline
|
||||
android:id="@+id/app_icon_constraint_vertical"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical"
|
||||
app:layout_constraintGuide_percent="0.556" />
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/app_icon_view"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="0dp"
|
||||
android:contentDescription="@null"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintLeft_toLeftOf="@id/app_icon_constraint_vertical"
|
||||
app:layout_constraintRight_toRightOf="parent"
|
||||
app:layout_constraintTop_toTopOf="@id/app_icon_constraint_horizontal" />
|
||||
|
||||
</merge>
|
||||
@@ -0,0 +1,21 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
~ Copyright (C) 2023 The Android Open Source Project
|
||||
~
|
||||
~ Licensed under the Apache License, Version 2.0 (the "License");
|
||||
~ you may not use this file except in compliance with the License.
|
||||
~ You may obtain a copy of the License at
|
||||
~
|
||||
~ http://www.apache.org/licenses/LICENSE-2.0
|
||||
~
|
||||
~ Unless required by applicable law or agreed to in writing, software
|
||||
~ distributed under the License is distributed on an "AS IS" BASIS,
|
||||
~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
~ See the License for the specific language governing permissions and
|
||||
~ limitations under the License
|
||||
-->
|
||||
<com.android.launcher3.taskbar.bubbles.BubbleView
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:id="@+id/bubble_view"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"/>
|
||||
@@ -16,7 +16,7 @@
|
||||
-->
|
||||
<TextView
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:priv-android="http://schemas.android.com/apk/prv/res/android"
|
||||
xmlns:androidprv="http://schemas.android.com/apk/prv/res/android"
|
||||
style="@style/TextTitle"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="48dp"
|
||||
@@ -24,5 +24,7 @@
|
||||
android:forceHasOverlappingRendering="false"
|
||||
android:gravity="center"
|
||||
android:importantForAccessibility="noHideDescendants"
|
||||
android:textColor="?attr/textColorOnAccent"
|
||||
android:textSize="14sp"/>
|
||||
android:textColor="?attr/materialColorOnSecondaryFixed"
|
||||
android:textSize="14sp"
|
||||
android:autoSizeTextType="uniform"
|
||||
android:autoSizeMaxTextSize="14sp"/>
|
||||
@@ -13,7 +13,80 @@
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
-->
|
||||
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:id="@+id/gesture_tutorial_fragment_container"
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
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:layout_height="match_parent">
|
||||
|
||||
<FrameLayout
|
||||
android:id="@+id/gesture_tutorial_fragment_container"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent" />
|
||||
|
||||
<RelativeLayout
|
||||
android:id="@+id/rotation_prompt"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:background="?attr/surfaceHome"
|
||||
android:visibility="gone"
|
||||
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent">
|
||||
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:id="@+id/background"
|
||||
android:layout_width="300dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_centerHorizontal="true"
|
||||
android:layout_centerVertical="true"
|
||||
android:background="@drawable/rotate_prompt_bg"
|
||||
android:padding="24dp">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/icon"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:src="@drawable/rotate_tutorial_warning"
|
||||
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/rotate_title"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="20dp"
|
||||
android:lineSpacingExtra="2sp"
|
||||
android:text="@string/gesture_tutorial_rotation_prompt_title"
|
||||
android:textAppearance="@style/rotate_prompt_title"
|
||||
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@id/icon"
|
||||
app:layout_constraintEnd_toEndOf="parent" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/rotate_screen_subtitle"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="16dp"
|
||||
android:gravity="center"
|
||||
android:text="@string/gesture_tutorial_rotation_prompt"
|
||||
android:textAppearance="@style/rotate_prompt_subtitle"
|
||||
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@id/rotate_title"
|
||||
app:layout_constraintEnd_toEndOf="parent" />
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
</RelativeLayout>
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
@@ -175,6 +175,7 @@
|
||||
android:paddingEnd="26dp"
|
||||
android:text="@string/gesture_tutorial_action_button_label"
|
||||
android:background="@drawable/gesture_tutorial_action_button_background"
|
||||
android:backgroundTint="?android:attr/colorAccent"
|
||||
android:stateListAnimator="@null"
|
||||
android:visibility="invisible"
|
||||
|
||||
|
||||
@@ -1,20 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
Copyright (C) 2023 The Android Open Source Project
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
-->
|
||||
<View
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:id="@+id/overview_gesture_tutorial_shape"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_margin="20dp"
|
||||
android:background="@color/gesture_overview_tutorial_background" />
|
||||
@@ -15,22 +15,23 @@
|
||||
-->
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:androidprv="http://schemas.android.com/apk/prv/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
android:theme="@style/GestureTutorialActivity"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:paddingTop="@dimen/gesture_tutorial_menu_padding_top"
|
||||
android:paddingBottom="@dimen/gesture_tutorial_menu_padding_bottom"
|
||||
android:paddingHorizontal="@dimen/gesture_tutorial_menu_padding_horizontal"
|
||||
android:background="@color/gesture_tutorial_menu_background"
|
||||
android:background="?attr/materialColorSurfaceContainer"
|
||||
android:clipToPadding="false">
|
||||
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:id="@+id/gesture_tutorial_menu_home_button"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="@dimen/gesture_tutorial_menu_button_height"
|
||||
android:background="@drawable/gesture_tutorial_menu_button_background"
|
||||
android:background="@drawable/gesture_tutorial_menu_home_button_background"
|
||||
android:clipToOutline="true"
|
||||
android:backgroundTint="@color/gesture_home_tutorial_background"
|
||||
app:layout_constraintVertical_chainStyle="packed"
|
||||
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
@@ -42,13 +43,15 @@
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:src="@drawable/gesture_tutorial_home_step_shape"
|
||||
android:scaleType="fitXY"
|
||||
android:adjustViewBounds="true"
|
||||
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"/>
|
||||
|
||||
<TextView
|
||||
style="@style/TextAppearance.GestureTutorial.MenuButton"
|
||||
style="@style/TextAppearance.GestureTutorial.MenuButton.Home"
|
||||
android:id="@+id/gesture_tutorial_menu_home_button_text"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
@@ -66,9 +69,8 @@
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="@dimen/gesture_tutorial_menu_button_height"
|
||||
android:layout_marginTop="@dimen/gesture_tutorial_menu_button_spacing"
|
||||
android:background="@drawable/gesture_tutorial_menu_button_background"
|
||||
android:background="@drawable/gesture_tutorial_menu_back_button_background"
|
||||
android:clipToOutline="true"
|
||||
android:backgroundTint="@color/gesture_back_tutorial_exiting_app"
|
||||
|
||||
app:layout_constraintTop_toBottomOf="@id/gesture_tutorial_menu_home_button"
|
||||
app:layout_constraintBottom_toTopOf="@id/gesture_tutorial_menu_overview_button"
|
||||
@@ -79,13 +81,15 @@
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:src="@drawable/gesture_tutorial_back_step_shape"
|
||||
android:scaleType="fitXY"
|
||||
android:adjustViewBounds="true"
|
||||
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"/>
|
||||
|
||||
<TextView
|
||||
style="@style/TextAppearance.GestureTutorial.MenuButton"
|
||||
style="@style/TextAppearance.GestureTutorial.MenuButton.Back"
|
||||
android:id="@+id/gesture_tutorial_menu_back_button_text"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
@@ -103,9 +107,8 @@
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="@dimen/gesture_tutorial_menu_button_height"
|
||||
android:layout_marginTop="@dimen/gesture_tutorial_menu_button_spacing"
|
||||
android:background="@drawable/gesture_tutorial_menu_button_background"
|
||||
android:background="@drawable/gesture_tutorial_menu_overview_button_background"
|
||||
android:clipToOutline="true"
|
||||
android:backgroundTint="@color/gesture_overview_tutorial_background"
|
||||
|
||||
app:layout_constraintTop_toBottomOf="@id/gesture_tutorial_menu_back_button"
|
||||
app:layout_constraintBottom_toTopOf="@id/guideline"
|
||||
@@ -116,13 +119,15 @@
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:src="@drawable/gesture_tutorial_overview_step_shape"
|
||||
android:scaleType="fitXY"
|
||||
android:adjustViewBounds="true"
|
||||
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"/>
|
||||
|
||||
<TextView
|
||||
style="@style/TextAppearance.GestureTutorial.MenuButton"
|
||||
style="@style/TextAppearance.GestureTutorial.MenuButton.Overview"
|
||||
android:id="@+id/gesture_tutorial_menu_overview_button_text"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
@@ -147,11 +152,11 @@
|
||||
style="@style/TextAppearance.GestureTutorial.ButtonLabel"
|
||||
android:id="@+id/gesture_tutorial_menu_done_button"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:paddingVertical="16dp"
|
||||
android:paddingHorizontal="26dp"
|
||||
android:layout_height="40dp"
|
||||
android:layout_marginVertical="16dp"
|
||||
android:text="@string/gesture_tutorial_action_button_label"
|
||||
android:background="@drawable/gesture_tutorial_action_button_background"
|
||||
android:backgroundTint="?attr/materialColorPrimary"
|
||||
android:stateListAnimator="@null"
|
||||
|
||||
app:layout_constraintTop_toBottomOf="@id/guideline"
|
||||
|
||||
@@ -20,35 +20,47 @@
|
||||
xmlns:launcher="http://schemas.android.com/apk/res-auto"
|
||||
android:layout_width="@dimen/keyboard_quick_switch_taskview_width"
|
||||
android:layout_height="@dimen/keyboard_quick_switch_taskview_height"
|
||||
android:background="@drawable/keyboard_quick_switch_overview_button_background"
|
||||
android:clipToOutline="true"
|
||||
android:importantForAccessibility="yes"
|
||||
launcher:borderColor="?attr/colorAccentPrimary">
|
||||
launcher:borderColor="?attr/materialColorOutline">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/icon"
|
||||
android:layout_width="@dimen/keyboard_quick_switch_recents_icon_size"
|
||||
android:layout_height="@dimen/keyboard_quick_switch_recents_icon_size"
|
||||
android:layout_marginBottom="8dp"
|
||||
android:src="@drawable/ic_empty_recents"
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:id="@+id/content"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:background="@drawable/keyboard_quick_switch_overview_button_background"
|
||||
|
||||
app:tint="?android:attr/textColorPrimary"
|
||||
app:layout_constraintVertical_chainStyle="packed"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintBottom_toTopOf="@id/text"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"/>
|
||||
|
||||
<TextView
|
||||
style="@style/KeyboardQuickSwitchOverview"
|
||||
android:id="@+id/text"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:textAlignment="center"
|
||||
|
||||
app:layout_constraintTop_toBottomOf="@id/icon"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"/>
|
||||
app:layout_constraintEnd_toEndOf="parent">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/icon"
|
||||
android:layout_width="@dimen/keyboard_quick_switch_recents_icon_size"
|
||||
android:layout_height="@dimen/keyboard_quick_switch_recents_icon_size"
|
||||
android:layout_marginBottom="8dp"
|
||||
android:src="@drawable/ic_empty_recents"
|
||||
android:tint="?attr/materialColorOnSurface"
|
||||
|
||||
app:layout_constraintVertical_chainStyle="packed"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintBottom_toTopOf="@id/text"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"/>
|
||||
|
||||
<TextView
|
||||
style="@style/KeyboardQuickSwitchText"
|
||||
android:id="@+id/text"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:textAlignment="center"
|
||||
|
||||
app:layout_constraintTop_toBottomOf="@id/icon"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"/>
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
||||
</com.android.launcher3.taskbar.KeyboardQuickSwitchTaskView>
|
||||
@@ -22,7 +22,17 @@
|
||||
android:importantForAccessibility="yes"
|
||||
android:background="@drawable/keyboard_quick_switch_task_view_background"
|
||||
android:clipToOutline="true"
|
||||
launcher:borderColor="?attr/colorAccentPrimary">
|
||||
launcher:borderColor="?attr/materialColorOutline">
|
||||
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:id="@+id/content"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent">
|
||||
|
||||
<include
|
||||
layout="@layout/keyboard_quick_switch_thumbnail"
|
||||
@@ -48,4 +58,29 @@
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"/>
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/icon1"
|
||||
android:layout_width="@dimen/keyboard_quick_switch_taskview_icon_size"
|
||||
android:layout_height="@dimen/keyboard_quick_switch_taskview_icon_size"
|
||||
android:layout_marginTop="@dimen/keyboard_quick_switch_taskview_icon_margin"
|
||||
android:layout_marginStart="@dimen/keyboard_quick_switch_taskview_icon_margin"
|
||||
android:importantForAccessibility="no"
|
||||
|
||||
app:layout_constraintTop_toTopOf="@id/thumbnail1"
|
||||
app:layout_constraintStart_toStartOf="@id/thumbnail1"/>
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/icon2"
|
||||
android:layout_width="@dimen/keyboard_quick_switch_taskview_icon_size"
|
||||
android:layout_height="@dimen/keyboard_quick_switch_taskview_icon_size"
|
||||
android:layout_marginTop="@dimen/keyboard_quick_switch_taskview_icon_margin"
|
||||
android:layout_marginStart="@dimen/keyboard_quick_switch_taskview_icon_margin"
|
||||
android:importantForAccessibility="no"
|
||||
android:visibility="gone"
|
||||
|
||||
app:layout_constraintTop_toTopOf="@id/thumbnail2"
|
||||
app:layout_constraintStart_toStartOf="@id/thumbnail2"/>
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
||||
</com.android.launcher3.taskbar.KeyboardQuickSwitchTaskView>
|
||||
@@ -19,4 +19,5 @@
|
||||
android:layout_height="match_parent"
|
||||
android:scaleType="centerCrop"
|
||||
android:background="@drawable/keyboard_quick_switch_task_view_background"
|
||||
android:clipToOutline="true"/>
|
||||
android:clipToOutline="true"
|
||||
android:importantForAccessibility="no"/>
|
||||
@@ -15,17 +15,55 @@
|
||||
-->
|
||||
<com.android.launcher3.taskbar.KeyboardQuickSwitchView
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:androidprv="http://schemas.android.com/apk/prv/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:paddingVertical="@dimen/keyboard_quick_switch_view_spacing"
|
||||
android:layout_marginTop="@dimen/keyboard_quick_switch_margin_top"
|
||||
android:layout_marginHorizontal="@dimen/keyboard_quick_switch_margin_ends"
|
||||
android:background="@drawable/keyboard_quick_switch_view_background"
|
||||
android:clipToOutline="true"
|
||||
android:alpha="0"
|
||||
android:visibility="invisible"
|
||||
android:focusableInTouchMode="true">
|
||||
android:focusableInTouchMode="true"
|
||||
app:layout_ignoreInsets="true">
|
||||
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:id="@+id/no_recent_items_pane"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="@dimen/keyboard_quick_switch_taskview_height"
|
||||
android:paddingVertical="@dimen/keyboard_quick_switch_view_spacing"
|
||||
android:alpha="0"
|
||||
android:visibility="gone">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/no_recent_items_icon"
|
||||
android:layout_width="@dimen/keyboard_quick_switch_no_recent_items_icon_size"
|
||||
android:layout_height="@dimen/keyboard_quick_switch_no_recent_items_icon_size"
|
||||
android:layout_marginBottom="@dimen/keyboard_quick_switch_no_recent_items_icon_margin"
|
||||
android:src="@drawable/ic_empty_recents"
|
||||
android:tint="?attr/materialColorOnSurfaceInverse"
|
||||
android:importantForAccessibility="no"
|
||||
|
||||
app:layout_constraintVertical_chainStyle="packed"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintBottom_toTopOf="@id/no_recent_items_text"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"/>
|
||||
|
||||
<TextView
|
||||
style="@style/KeyboardQuickSwitchText.OnBackground"
|
||||
android:id="@+id/no_recent_items_text"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/recents_empty_message"
|
||||
|
||||
app:layout_constraintTop_toBottomOf="@id/no_recent_items_icon"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"/>
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
||||
<HorizontalScrollView
|
||||
android:id="@+id/scroll_view"
|
||||
@@ -34,7 +72,7 @@
|
||||
android:fillViewport="true"
|
||||
android:scrollbars="none"
|
||||
android:alpha="0"
|
||||
android:visibility="invisible"
|
||||
android:visibility="gone"
|
||||
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
@@ -43,7 +81,9 @@
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:id="@+id/content"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"/>
|
||||
android:layout_height="wrap_content"
|
||||
android:paddingVertical="@dimen/keyboard_quick_switch_view_spacing"
|
||||
android:clipToPadding="false"/>
|
||||
|
||||
</HorizontalScrollView>
|
||||
|
||||
|
||||
@@ -16,10 +16,11 @@
|
||||
-->
|
||||
<com.android.quickstep.views.ClearAllButton
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:androidprv="http://schemas.android.com/apk/prv/res/android"
|
||||
style="@style/OverviewClearAllButton"
|
||||
android:id="@+id/clear_all"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/recents_clear_all"
|
||||
android:textColor="?android:attr/textColorPrimary"
|
||||
android:textColor="?attr/materialColorOnSurface"
|
||||
android:textSize="14sp" />
|
||||
@@ -0,0 +1,92 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Copyright (C) 2023 The Android Open Source Project
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
-->
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
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="wrap_content"
|
||||
android:paddingBottom="32dp"
|
||||
android:paddingStart="@dimen/gesture_tutorial_hotseat_padding_start_end"
|
||||
android:paddingEnd="@dimen/gesture_tutorial_hotseat_padding_start_end">
|
||||
|
||||
<View
|
||||
android:id="@+id/hotseat_search_bar"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="@dimen/gesture_tutorial_hotseat_search_height"
|
||||
android:background="@drawable/redesigned_hotseat_icon"
|
||||
android:clipToOutline="true"
|
||||
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"/>
|
||||
|
||||
<androidx.constraintlayout.helper.widget.Flow
|
||||
android:id="@+id/hotseat_flow"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="@dimen/gesture_tutorial_hotseat_icon_search_margin"
|
||||
|
||||
app:constraint_referenced_ids=
|
||||
"hotseat_icon_1, hotseat_icon_2, hotseat_icon_3, hotseat_icon_4, hotseat_icon_5,
|
||||
hotseat_icon_6"
|
||||
app:flow_horizontalStyle="spread_inside"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@id/hotseat_search_bar" />
|
||||
|
||||
<View
|
||||
android:id="@+id/hotseat_icon_1"
|
||||
android:layout_width="@dimen/gesture_tutorial_hotseat_icon_size"
|
||||
android:layout_height="@dimen/gesture_tutorial_hotseat_icon_size"
|
||||
android:background="@drawable/redesigned_hotseat_icon"
|
||||
android:clipToOutline="true" />
|
||||
|
||||
<View
|
||||
android:id="@+id/hotseat_icon_2"
|
||||
android:layout_width="@dimen/gesture_tutorial_hotseat_icon_size"
|
||||
android:layout_height="@dimen/gesture_tutorial_hotseat_icon_size"
|
||||
android:background="@drawable/redesigned_hotseat_icon"
|
||||
android:clipToOutline="true" />
|
||||
|
||||
<View
|
||||
android:id="@+id/hotseat_icon_3"
|
||||
android:layout_width="@dimen/gesture_tutorial_hotseat_icon_size"
|
||||
android:layout_height="@dimen/gesture_tutorial_hotseat_icon_size"
|
||||
android:background="@drawable/redesigned_hotseat_icon"
|
||||
android:clipToOutline="true" />
|
||||
|
||||
<View
|
||||
android:id="@+id/hotseat_icon_4"
|
||||
android:layout_width="@dimen/gesture_tutorial_hotseat_icon_size"
|
||||
android:layout_height="@dimen/gesture_tutorial_hotseat_icon_size"
|
||||
android:background="@drawable/redesigned_hotseat_icon"
|
||||
android:clipToOutline="true" />
|
||||
|
||||
<View
|
||||
android:id="@+id/hotseat_icon_5"
|
||||
android:layout_width="@dimen/gesture_tutorial_hotseat_icon_size"
|
||||
android:layout_height="@dimen/gesture_tutorial_hotseat_icon_size"
|
||||
android:background="@drawable/redesigned_hotseat_icon"
|
||||
android:clipToOutline="true" />
|
||||
|
||||
<View
|
||||
android:id="@+id/hotseat_icon_6"
|
||||
android:layout_width="@dimen/gesture_tutorial_hotseat_icon_size"
|
||||
android:layout_height="@dimen/gesture_tutorial_hotseat_icon_size"
|
||||
android:background="@drawable/redesigned_hotseat_icon"
|
||||
android:clipToOutline="true" />
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
@@ -42,8 +42,6 @@
|
||||
android:id="@+id/gesture_tutorial_fake_previous_task_view"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:scaleX="0.98"
|
||||
android:scaleY="0.98"
|
||||
android:visibility="invisible">
|
||||
|
||||
<View
|
||||
@@ -63,7 +61,7 @@
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="0dp"
|
||||
android:layout_marginBottom="@dimen/gesture_tutorial_multi_row_task_view_spacing"
|
||||
android:background="@drawable/top_task_view"
|
||||
android:background="@drawable/redesigned_top_task_view"
|
||||
android:clipToOutline="true"
|
||||
android:visibility="invisible"
|
||||
|
||||
@@ -76,7 +74,7 @@
|
||||
android:id="@+id/bottom_task_view"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="0dp"
|
||||
android:background="@drawable/top_task_view"
|
||||
android:background="@drawable/redesigned_top_task_view"
|
||||
android:clipToOutline="true"
|
||||
android:visibility="invisible"
|
||||
|
||||
@@ -98,15 +96,6 @@
|
||||
android:layout_height="match_parent"
|
||||
android:background="@drawable/gesture_tutorial_ripple" />
|
||||
|
||||
<include
|
||||
android:id="@+id/gesture_tutorial_fake_taskbar_view"
|
||||
layout="@layout/gesture_tutorial_tablet_mock_taskbar"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_alignParentBottom="true"
|
||||
android:layout_centerHorizontal="true"
|
||||
android:layout_marginBottom="@dimen/gesture_tutorial_taskbar_margin_bottom" />
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/gesture_tutorial_edge_gesture_video"
|
||||
android:layout_width="match_parent"
|
||||
@@ -123,7 +112,6 @@
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_centerVertical="true"
|
||||
android:background="@color/gesture_back_tutorial_exiting_app"
|
||||
android:visibility="gone" />
|
||||
|
||||
<RelativeLayout
|
||||
@@ -136,7 +124,7 @@
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:gravity="center"
|
||||
android:scaleType="centerCrop"
|
||||
android:scaleType="matrix"
|
||||
app:lottie_loop="true" />
|
||||
|
||||
</RelativeLayout>
|
||||
@@ -205,25 +193,26 @@
|
||||
android:id="@+id/checkmark_animation"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginBottom="44dp"
|
||||
android:gravity="center"
|
||||
android:scaleType="centerCrop"
|
||||
app:lottie_loop="false"
|
||||
android:visibility="gone"
|
||||
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@id/gesture_tutorial_fragment_feedback_subtitle" />
|
||||
app:layout_constraintTop_toBottomOf="@id/gesture_tutorial_fragment_feedback_subtitle"
|
||||
app:layout_constraintBottom_toBottomOf="parent" />
|
||||
|
||||
<Button
|
||||
android:id="@+id/gesture_tutorial_fragment_action_button"
|
||||
style="@style/TextAppearance.GestureTutorial.ButtonLabel"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="@drawable/gesture_tutorial_action_button_background"
|
||||
android:stateListAnimator="@null"
|
||||
android:text="@string/gesture_tutorial_action_button_label"
|
||||
android:visibility="invisible"
|
||||
android:layout_marginBottom="60dp"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
|
||||
@@ -23,64 +23,56 @@
|
||||
android:paddingStart="26dp"
|
||||
android:paddingEnd="26dp">
|
||||
|
||||
<androidx.constraintlayout.helper.widget.Flow
|
||||
android:id="@+id/hotseat_flow"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
|
||||
app:constraint_referenced_ids=
|
||||
"hotseat_icon_1, hotseat_icon_2, hotseat_icon_3, hotseat_icon_4"
|
||||
app:flow_horizontalStyle="spread_inside"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
<View
|
||||
android:id="@+id/hotseat_icon_1"
|
||||
android:layout_width="@dimen/gesture_tutorial_hotseat_icon_size"
|
||||
android:layout_height="@dimen/gesture_tutorial_hotseat_icon_size"
|
||||
android:background="@drawable/hotseat_icon_home"
|
||||
android:clipToOutline="true"
|
||||
|
||||
app:layout_constraintDimensionRatio="1:1"
|
||||
app:layout_constraintEnd_toStartOf="@id/hotseat_icon_2"
|
||||
app:layout_constraintHorizontal_chainStyle="spread_inside"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
android:background="@drawable/redesigned_hotseat_icon"
|
||||
android:clipToOutline="true" />
|
||||
|
||||
<View
|
||||
android:id="@+id/hotseat_icon_2"
|
||||
android:layout_width="@dimen/gesture_tutorial_hotseat_icon_size"
|
||||
android:layout_height="@dimen/gesture_tutorial_hotseat_icon_size"
|
||||
android:background="@drawable/hotseat_icon_home"
|
||||
android:clipToOutline="true"
|
||||
|
||||
app:layout_constraintDimensionRatio="1:1"
|
||||
app:layout_constraintEnd_toStartOf="@id/hotseat_icon_3"
|
||||
app:layout_constraintStart_toEndOf="@id/hotseat_icon_1"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
android:background="@drawable/redesigned_hotseat_icon"
|
||||
android:clipToOutline="true" />
|
||||
|
||||
<View
|
||||
android:id="@+id/hotseat_icon_3"
|
||||
android:layout_width="@dimen/gesture_tutorial_hotseat_icon_size"
|
||||
android:layout_height="@dimen/gesture_tutorial_hotseat_icon_size"
|
||||
android:background="@drawable/hotseat_icon_home"
|
||||
android:clipToOutline="true"
|
||||
|
||||
app:layout_constraintDimensionRatio="1:1"
|
||||
app:layout_constraintEnd_toStartOf="@id/hotseat_icon_4"
|
||||
app:layout_constraintStart_toEndOf="@id/hotseat_icon_2"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
android:background="@drawable/redesigned_hotseat_icon"
|
||||
android:clipToOutline="true" />
|
||||
|
||||
<View
|
||||
android:id="@+id/hotseat_icon_4"
|
||||
android:layout_width="@dimen/gesture_tutorial_hotseat_icon_size"
|
||||
android:layout_height="@dimen/gesture_tutorial_hotseat_icon_size"
|
||||
android:background="@drawable/hotseat_icon_home"
|
||||
android:clipToOutline="true"
|
||||
|
||||
app:layout_constraintDimensionRatio="1:1"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toEndOf="@id/hotseat_icon_3"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
android:background="@drawable/redesigned_hotseat_icon"
|
||||
android:clipToOutline="true" />
|
||||
|
||||
<View
|
||||
android:id="@+id/hotseat_search_bar"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="@dimen/gesture_tutorial_hotseat_search_height"
|
||||
android:layout_marginTop="@dimen/gesture_tutorial_hotseat_icon_search_margin"
|
||||
android:background="@drawable/hotseat_icon_home"
|
||||
android:background="@drawable/redesigned_hotseat_icon"
|
||||
android:clipToOutline="true"
|
||||
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@id/hotseat_icon_1" />
|
||||
app:layout_constraintTop_toBottomOf="@id/hotseat_flow" />
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
@@ -0,0 +1,92 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Copyright (C) 2023 The Android Open Source Project
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
-->
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
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="wrap_content"
|
||||
android:paddingBottom="32dp"
|
||||
android:paddingStart="@dimen/gesture_tutorial_hotseat_padding_start_end"
|
||||
android:paddingEnd="@dimen/gesture_tutorial_hotseat_padding_start_end">
|
||||
|
||||
<View
|
||||
android:id="@+id/hotseat_search_bar"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="@dimen/gesture_tutorial_hotseat_search_height"
|
||||
android:background="@drawable/redesigned_hotseat_icon"
|
||||
android:clipToOutline="true"
|
||||
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"/>
|
||||
|
||||
<androidx.constraintlayout.helper.widget.Flow
|
||||
android:id="@+id/hotseat_flow"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="@dimen/gesture_tutorial_hotseat_icon_search_margin"
|
||||
|
||||
app:constraint_referenced_ids=
|
||||
"hotseat_icon_1, hotseat_icon_2, hotseat_icon_3, hotseat_icon_4, hotseat_icon_5,
|
||||
hotseat_icon_6"
|
||||
app:flow_horizontalStyle="spread_inside"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@id/hotseat_search_bar" />
|
||||
|
||||
<View
|
||||
android:id="@+id/hotseat_icon_1"
|
||||
android:layout_width="@dimen/gesture_tutorial_hotseat_icon_size"
|
||||
android:layout_height="@dimen/gesture_tutorial_hotseat_icon_size"
|
||||
android:background="@drawable/redesigned_hotseat_icon"
|
||||
android:clipToOutline="true" />
|
||||
|
||||
<View
|
||||
android:id="@+id/hotseat_icon_2"
|
||||
android:layout_width="@dimen/gesture_tutorial_hotseat_icon_size"
|
||||
android:layout_height="@dimen/gesture_tutorial_hotseat_icon_size"
|
||||
android:background="@drawable/redesigned_hotseat_icon"
|
||||
android:clipToOutline="true" />
|
||||
|
||||
<View
|
||||
android:id="@+id/hotseat_icon_3"
|
||||
android:layout_width="@dimen/gesture_tutorial_hotseat_icon_size"
|
||||
android:layout_height="@dimen/gesture_tutorial_hotseat_icon_size"
|
||||
android:background="@drawable/redesigned_hotseat_icon"
|
||||
android:clipToOutline="true" />
|
||||
|
||||
<View
|
||||
android:id="@+id/hotseat_icon_4"
|
||||
android:layout_width="@dimen/gesture_tutorial_hotseat_icon_size"
|
||||
android:layout_height="@dimen/gesture_tutorial_hotseat_icon_size"
|
||||
android:background="@drawable/redesigned_hotseat_icon"
|
||||
android:clipToOutline="true" />
|
||||
|
||||
<View
|
||||
android:id="@+id/hotseat_icon_5"
|
||||
android:layout_width="@dimen/gesture_tutorial_hotseat_icon_size"
|
||||
android:layout_height="@dimen/gesture_tutorial_hotseat_icon_size"
|
||||
android:background="@drawable/redesigned_hotseat_icon"
|
||||
android:clipToOutline="true" />
|
||||
|
||||
<View
|
||||
android:id="@+id/hotseat_icon_6"
|
||||
android:layout_width="@dimen/gesture_tutorial_hotseat_icon_size"
|
||||
android:layout_height="@dimen/gesture_tutorial_hotseat_icon_size"
|
||||
android:background="@drawable/redesigned_hotseat_icon"
|
||||
android:clipToOutline="true" />
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
@@ -24,7 +24,7 @@
|
||||
android:clipChildren="false"
|
||||
android:defaultFocusHighlightEnabled="false"
|
||||
android:focusable="true"
|
||||
launcher:borderColor="?attr/colorAccentPrimary">
|
||||
launcher:borderColor="?attr/materialColorOutline">
|
||||
|
||||
<com.android.quickstep.views.TaskThumbnailView
|
||||
android:id="@+id/snapshot"
|
||||
@@ -40,7 +40,6 @@
|
||||
android:layout_gravity="end"
|
||||
android:alpha="0"
|
||||
android:tint="@color/recents_filter_icon"
|
||||
android:contentDescription="@string/recents_filter_icon_desc"
|
||||
android:importantForAccessibility="no"
|
||||
android:src="@drawable/ic_select_windows" />
|
||||
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
android:clipToOutline="true"
|
||||
android:defaultFocusHighlightEnabled="false"
|
||||
android:focusable="true"
|
||||
launcher:borderColor="?attr/colorAccentPrimary">
|
||||
launcher:borderColor="?attr/materialColorOutline">
|
||||
|
||||
<View
|
||||
android:id="@+id/background"
|
||||
|
||||
@@ -28,7 +28,7 @@
|
||||
android:clipChildren="false"
|
||||
android:defaultFocusHighlightEnabled="false"
|
||||
android:focusable="true"
|
||||
launcher:borderColor="?attr/colorAccentPrimary">
|
||||
launcher:borderColor="?attr/materialColorOutline">
|
||||
|
||||
<com.android.quickstep.views.TaskThumbnailView
|
||||
android:id="@+id/snapshot"
|
||||
@@ -49,7 +49,6 @@
|
||||
android:layout_gravity="start"
|
||||
android:alpha="0"
|
||||
android:tint="@color/recents_filter_icon"
|
||||
android:contentDescription="@string/recents_filter_icon_desc"
|
||||
android:importantForAccessibility="no"
|
||||
android:src="@drawable/ic_select_windows" />
|
||||
|
||||
@@ -62,7 +61,6 @@
|
||||
android:layout_gravity="end"
|
||||
android:alpha="0"
|
||||
android:tint="@color/recents_filter_icon"
|
||||
android:contentDescription="@string/recents_filter_icon_desc"
|
||||
android:importantForAccessibility="no"
|
||||
android:src="@drawable/ic_select_windows" />
|
||||
|
||||
|
||||
@@ -16,6 +16,7 @@
|
||||
|
||||
<LinearLayout
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:androidprv="http://schemas.android.com/apk/prv/res/android"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="horizontal"
|
||||
@@ -30,7 +31,7 @@
|
||||
android:layout_height="@dimen/system_shortcut_icon_size"
|
||||
android:layout_marginStart="@dimen/task_menu_option_start_margin"
|
||||
android:layout_gravity="center_horizontal"
|
||||
android:backgroundTint="?android:attr/textColorPrimary"/>
|
||||
android:backgroundTint="?attr/materialColorOnSurface"/>
|
||||
|
||||
<TextView
|
||||
style="@style/BaseIcon"
|
||||
@@ -39,7 +40,7 @@
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="@dimen/task_menu_option_start_margin"
|
||||
android:textSize="14sp"
|
||||
android:textColor="?android:attr/textColorPrimary"
|
||||
android:textColor="?attr/materialColorOnSurface"
|
||||
android:focusable="false" />
|
||||
|
||||
</LinearLayout>
|
||||
@@ -13,16 +13,16 @@
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
-->
|
||||
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:id="@+id/taskbar_divider_container"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content">
|
||||
<FrameLayout
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="@dimen/taskbar_icon_min_touch_size"
|
||||
android:layout_height="@dimen/taskbar_icon_min_touch_size"
|
||||
android:contentDescription="@string/taskbar_divider_a11y_title"
|
||||
android:backgroundTint="@android:color/transparent">
|
||||
|
||||
<View
|
||||
android:id="@+id/taskbar_divider_bar"
|
||||
android:layout_height="32dp"
|
||||
android:layout_width="2dp"
|
||||
android:layout_gravity="center"
|
||||
android:background="@drawable/bg_rounded_corner_bottom_sheet_handle" />
|
||||
<!-- TODO(b/265347148): Create separate drawable -->
|
||||
</FrameLayout>
|
||||
android:background="@drawable/taskbar_divider_bg" />
|
||||
</FrameLayout>
|
||||
@@ -0,0 +1,98 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
Copyright (C) 2023 The Android Open Source Project
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
-->
|
||||
<com.android.launcher3.taskbar.TaskbarDividerPopupView
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="@dimen/taskbar_pinning_popup_menu_width"
|
||||
android:layout_height="wrap_content"
|
||||
android:focusable="true"
|
||||
android:background="@drawable/popup_background_material_u"
|
||||
android:orientation="vertical">
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/taskbar_switch_option"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="52dp"
|
||||
android:layout_gravity="center_vertical"
|
||||
android:elevation="2dp"
|
||||
android:focusable="true"
|
||||
android:clickable="true"
|
||||
android:gravity="center_vertical"
|
||||
android:orientation="horizontal"
|
||||
android:background="@drawable/top_rounded_popup_ripple"
|
||||
android:paddingEnd="10dp"
|
||||
android:paddingStart="10dp"
|
||||
android:theme="@style/PopupItem">
|
||||
|
||||
<View
|
||||
android:layout_margin="6dp"
|
||||
android:layout_width="20dp"
|
||||
android:layout_height="20dp"
|
||||
android:background="@drawable/ic_visibility"
|
||||
android:backgroundTint="?android:attr/textColorPrimary" />
|
||||
|
||||
<Switch
|
||||
style="@style/BaseIcon"
|
||||
android:id="@+id/taskbar_pinning_switch"
|
||||
android:background="@null"
|
||||
android:clickable="false"
|
||||
android:gravity="start|center_vertical"
|
||||
android:textAlignment="viewStart"
|
||||
android:paddingStart="12dp"
|
||||
android:singleLine="true"
|
||||
android:ellipsize="end"
|
||||
android:textSize="14sp"
|
||||
android:textColor="?android:attr/textColorPrimary"
|
||||
android:text="@string/always_show_taskbar" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/navigation_mode_switch_option"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="52dp"
|
||||
android:layout_gravity="center_vertical"
|
||||
android:elevation="2dp"
|
||||
android:clickable="true"
|
||||
android:focusable="true"
|
||||
android:background="@drawable/bottom_rounded_popup_ripple"
|
||||
android:gravity="center_vertical"
|
||||
android:orientation="horizontal"
|
||||
android:paddingEnd="10dp"
|
||||
android:paddingStart="10dp"
|
||||
android:theme="@style/PopupItem">
|
||||
|
||||
<View
|
||||
android:layout_width="24dp"
|
||||
android:layout_height="24dp"
|
||||
android:layout_margin="4dp"
|
||||
android:background="@drawable/ic_touch"
|
||||
android:backgroundTint="?android:attr/textColorPrimary" />
|
||||
|
||||
<com.android.launcher3.BubbleTextView
|
||||
style="@style/BaseIcon"
|
||||
android:id="@+id/change_navigation_mode_text"
|
||||
android:gravity="start|center_vertical"
|
||||
android:textAlignment="viewStart"
|
||||
android:paddingStart="12dp"
|
||||
android:singleLine="true"
|
||||
android:ellipsize="end"
|
||||
android:textSize="14sp"
|
||||
android:textColor="?android:attr/textColorPrimary"
|
||||
android:text="@string/change_navigation_mode" />
|
||||
|
||||
</LinearLayout>
|
||||
</com.android.launcher3.taskbar.TaskbarDividerPopupView>
|
||||
@@ -1,79 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Copyright (C) 2021 The Android Open Source Project
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
-->
|
||||
|
||||
<com.android.launcher3.taskbar.TaskbarEduView xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:androidprv="http://schemas.android.com/apk/prv/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
xmlns:launcher="http://schemas.android.com/apk/res-auto"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="bottom"
|
||||
android:gravity="bottom"
|
||||
android:orientation="vertical"
|
||||
android:layout_marginHorizontal="108dp">
|
||||
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:id="@+id/edu_view"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="@drawable/bg_rounded_corner_bottom_sheet"
|
||||
android:gravity="center_horizontal"
|
||||
android:paddingHorizontal="36dp"
|
||||
android:paddingTop="64dp">
|
||||
|
||||
<com.android.launcher3.taskbar.TaskbarEduPagedView
|
||||
android:id="@+id/content"
|
||||
android:clipToPadding="false"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="378dp"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
launcher:pageIndicator="@+id/content_page_indicator" />
|
||||
|
||||
<Button
|
||||
android:id="@+id/edu_start_button"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="36dp"
|
||||
android:layout_marginBottom="18dp"
|
||||
android:layout_marginTop="32dp"
|
||||
app:layout_constraintTop_toBottomOf="@id/content"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
android:text="@string/taskbar_edu_close"
|
||||
style="@style/TaskbarEdu.Button.Close"
|
||||
android:textColor="?android:attr/textColorPrimary"/>
|
||||
|
||||
<com.android.launcher3.pageindicators.PageIndicatorDots
|
||||
android:id="@+id/content_page_indicator"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
app:layout_constraintTop_toTopOf="@id/edu_start_button"
|
||||
app:layout_constraintBottom_toBottomOf="@id/edu_start_button"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
android:elevation="1dp" />
|
||||
|
||||
<Button
|
||||
android:id="@+id/edu_end_button"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="0dp"
|
||||
app:layout_constraintTop_toTopOf="@id/edu_start_button"
|
||||
app:layout_constraintBottom_toBottomOf="@id/edu_start_button"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
android:text="@string/taskbar_edu_next"
|
||||
style="@style/TaskbarEdu.Button.Next"
|
||||
android:textColor="?attr/textColorOnAccent"/>
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
</com.android.launcher3.taskbar.TaskbarEduView>
|
||||
@@ -13,29 +13,36 @@
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
-->
|
||||
<merge xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:androidprv="http://schemas.android.com/apk/prv/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto">
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/title"
|
||||
style="@style/TextAppearance.TaskbarEduTooltip.Title"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:paddingBottom="@dimen/taskbar_edu_tooltip_vertical_margin"
|
||||
android:text="@string/taskbar_edu_features"
|
||||
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintBottom_toTopOf="@id/splitscreen_animation"/>
|
||||
|
||||
<com.airbnb.lottie.LottieAnimationView
|
||||
android:id="@+id/splitscreen_animation"
|
||||
android:layout_width="@dimen/taskbar_edu_features_lottie_width"
|
||||
android:layout_height="@dimen/taskbar_edu_features_lottie_height"
|
||||
android:layout_marginTop="@dimen/taskbar_edu_tooltip_vertical_margin"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@id/title"
|
||||
|
||||
app:lottie_autoPlay="true"
|
||||
app:lottie_loop="true" />
|
||||
app:lottie_loop="true"
|
||||
|
||||
app:layout_constraintEnd_toEndOf="@id/splitscreen_text"
|
||||
app:layout_constraintStart_toStartOf="@id/splitscreen_text"
|
||||
app:layout_constraintTop_toBottomOf="@id/title" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/splitscreen_text"
|
||||
@@ -43,8 +50,9 @@
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/taskbar_edu_splitscreen"
|
||||
app:layout_constraintEnd_toEndOf="@id/splitscreen_animation"
|
||||
app:layout_constraintStart_toStartOf="@id/splitscreen_animation"
|
||||
|
||||
app:layout_constraintEnd_toStartOf="@id/settings_text"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@id/splitscreen_animation" />
|
||||
|
||||
<androidx.constraintlayout.widget.Group
|
||||
@@ -57,13 +65,14 @@
|
||||
android:id="@+id/settings_animation"
|
||||
android:layout_width="@dimen/taskbar_edu_features_lottie_width"
|
||||
android:layout_height="@dimen/taskbar_edu_features_lottie_height"
|
||||
android:layout_marginStart="@dimen/taskbar_edu_features_horizontal_spacing"
|
||||
android:layout_marginTop="@dimen/taskbar_edu_tooltip_vertical_margin"
|
||||
app:layout_constraintStart_toEndOf="@id/splitscreen_animation"
|
||||
app:layout_constraintTop_toBottomOf="@id/title"
|
||||
|
||||
app:lottie_autoPlay="true"
|
||||
app:lottie_loop="true"
|
||||
app:lottie_rawRes="@raw/taskbar_edu_settings" />
|
||||
app:lottie_rawRes="@raw/taskbar_edu_settings"
|
||||
|
||||
app:layout_constraintEnd_toEndOf="@id/settings_text"
|
||||
app:layout_constraintStart_toStartOf="@id/settings_text"
|
||||
app:layout_constraintTop_toBottomOf="@id/title" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/settings_text"
|
||||
@@ -71,21 +80,23 @@
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/taskbar_edu_settings_persistent"
|
||||
app:layout_constraintEnd_toEndOf="@id/settings_animation"
|
||||
app:layout_constraintStart_toStartOf="@id/settings_animation"
|
||||
android:layout_marginStart="@dimen/taskbar_edu_features_horizontal_spacing"
|
||||
|
||||
app:layout_constraintEnd_toStartOf="@id/suggestions_text"
|
||||
app:layout_constraintStart_toEndOf="@id/splitscreen_text"
|
||||
app:layout_constraintTop_toBottomOf="@id/settings_animation" />
|
||||
|
||||
<com.airbnb.lottie.LottieAnimationView
|
||||
android:id="@+id/suggestions_animation"
|
||||
android:layout_width="@dimen/taskbar_edu_features_lottie_width"
|
||||
android:layout_height="@dimen/taskbar_edu_features_lottie_height"
|
||||
android:layout_marginStart="@dimen/taskbar_edu_features_horizontal_spacing"
|
||||
android:layout_marginTop="@dimen/taskbar_edu_tooltip_vertical_margin"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toEndOf="@id/settings_animation"
|
||||
app:layout_constraintTop_toBottomOf="@id/title"
|
||||
|
||||
app:lottie_autoPlay="true"
|
||||
app:lottie_loop="true" />
|
||||
app:lottie_loop="true"
|
||||
|
||||
app:layout_constraintEnd_toEndOf="@id/suggestions_text"
|
||||
app:layout_constraintStart_toStartOf="@id/suggestions_text"
|
||||
app:layout_constraintTop_toBottomOf="@id/title" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/suggestions_text"
|
||||
@@ -93,8 +104,10 @@
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/taskbar_edu_suggestions"
|
||||
app:layout_constraintEnd_toEndOf="@id/suggestions_animation"
|
||||
app:layout_constraintStart_toStartOf="@id/suggestions_animation"
|
||||
android:layout_marginStart="@dimen/taskbar_edu_features_horizontal_spacing"
|
||||
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toEndOf="@id/settings_text"
|
||||
app:layout_constraintTop_toBottomOf="@id/suggestions_animation" />
|
||||
|
||||
<androidx.constraintlayout.widget.Barrier
|
||||
@@ -106,13 +119,14 @@
|
||||
|
||||
<Button
|
||||
android:id="@+id/done_button"
|
||||
style="@style/TaskbarEdu.Button.Next"
|
||||
style="@style/TaskbarEdu.Button.Done"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="36dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="32dp"
|
||||
android:text="@string/taskbar_edu_done"
|
||||
android:textColor="?attr/textColorOnAccent"
|
||||
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@id/edu_barrier_bottom" />
|
||||
</merge>
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
@@ -1,58 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?><!-- Copyright (C) 2022 The Android Open Source Project
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
-->
|
||||
|
||||
<merge xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto">
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:gravity="center_horizontal"
|
||||
android:orientation="vertical">
|
||||
|
||||
<TextView
|
||||
style="@style/TextAppearance.TaskbarEdu.Title"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/taskbar_edu_splitscreen" />
|
||||
|
||||
<com.airbnb.lottie.LottieAnimationView
|
||||
android:id="@+id/animation"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="16dp"
|
||||
app:lottie_rawRes="@raw/taskbar_edu_splitscreen_persistent" />
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:gravity="center_horizontal"
|
||||
android:orientation="vertical">
|
||||
|
||||
<TextView
|
||||
style="@style/TextAppearance.TaskbarEdu.Title"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/taskbar_edu_suggestions" />
|
||||
|
||||
<com.airbnb.lottie.LottieAnimationView
|
||||
android:id="@id/animation"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="16dp"
|
||||
app:lottie_rawRes="@raw/taskbar_edu_suggestions_persistent" />
|
||||
</LinearLayout>
|
||||
</merge>
|
||||
@@ -1,78 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?><!-- Copyright (C) 2022 The Android Open Source Project
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
-->
|
||||
|
||||
<merge xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto">
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:gravity="center_horizontal"
|
||||
android:orientation="vertical">
|
||||
|
||||
<TextView
|
||||
style="@style/TextAppearance.TaskbarEdu.Title"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/taskbar_edu_stashing" />
|
||||
|
||||
<com.airbnb.lottie.LottieAnimationView
|
||||
android:id="@+id/animation"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="16dp"
|
||||
app:lottie_rawRes="@raw/taskbar_edu_stashing_transient" />
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:gravity="center_horizontal"
|
||||
android:orientation="vertical">
|
||||
|
||||
<TextView
|
||||
style="@style/TextAppearance.TaskbarEdu.Title"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/taskbar_edu_splitscreen" />
|
||||
|
||||
<com.airbnb.lottie.LottieAnimationView
|
||||
android:id="@id/animation"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="16dp"
|
||||
app:lottie_rawRes="@raw/taskbar_edu_splitscreen_transient" />
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:gravity="center_horizontal"
|
||||
android:orientation="vertical">
|
||||
|
||||
<TextView
|
||||
style="@style/TextAppearance.TaskbarEdu.Title"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/taskbar_edu_suggestions" />
|
||||
|
||||
<com.airbnb.lottie.LottieAnimationView
|
||||
android:id="@id/animation"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="16dp"
|
||||
app:lottie_rawRes="@raw/taskbar_edu_suggestions_transient" />
|
||||
</LinearLayout>
|
||||
</merge>
|
||||
@@ -13,8 +13,10 @@
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
-->
|
||||
<merge xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto">
|
||||
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/title"
|
||||
@@ -39,4 +41,4 @@
|
||||
app:lottie_loop="true"
|
||||
app:lottie_rawRes="@raw/taskbar_edu_stashing" />
|
||||
|
||||
</merge>
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
@@ -17,16 +17,16 @@
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="bottom|center"
|
||||
android:layout_marginBottom="16dp"
|
||||
android:layout_marginHorizontal="24dp"
|
||||
android:paddingBottom="16dp"
|
||||
android:clipChildren="false"
|
||||
android:clipToPadding="false"
|
||||
android:fitsSystemWindows="true"
|
||||
android:focusable="true"
|
||||
android:importantForAccessibility="yes"
|
||||
android:gravity="center"
|
||||
android:orientation="vertical">
|
||||
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
<FrameLayout
|
||||
android:id="@+id/content"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
|
||||
@@ -38,6 +38,20 @@
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"/>
|
||||
|
||||
<com.android.launcher3.taskbar.bubbles.BubbleBarView
|
||||
android:id="@+id/taskbar_bubbles"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="@dimen/bubblebar_size"
|
||||
android:layout_gravity="bottom|end"
|
||||
android:layout_marginEnd="@dimen/transient_taskbar_bottom_margin"
|
||||
android:layout_marginBottom="@dimen/transient_taskbar_bottom_margin"
|
||||
android:paddingEnd="@dimen/taskbar_icon_spacing"
|
||||
android:paddingStart="@dimen/taskbar_icon_spacing"
|
||||
android:visibility="gone"
|
||||
android:gravity="center"
|
||||
android:clipChildren="false"
|
||||
/>
|
||||
|
||||
<FrameLayout
|
||||
android:id="@+id/navbuttons_view"
|
||||
android:layout_width="match_parent"
|
||||
@@ -74,10 +88,20 @@
|
||||
<com.android.launcher3.taskbar.StashedHandleView
|
||||
android:id="@+id/stashed_handle"
|
||||
tools:comment1="The actual size and shape will be set as a ViewOutlineProvider at runtime"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="@color/taskbar_stashed_handle_dark_color"
|
||||
android:clipToOutline="true"
|
||||
android:layout_gravity="bottom"/>
|
||||
|
||||
<com.android.launcher3.taskbar.StashedHandleView
|
||||
android:id="@+id/stashed_bubble_handle"
|
||||
tools:comment1="The actual size and shape will be set as a ViewOutlineProvider at runtime"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:visibility="gone"
|
||||
android:background="@color/taskbar_stashed_handle_dark_color"
|
||||
android:clipToOutline="true"
|
||||
android:layout_gravity="bottom"/>
|
||||
|
||||
</com.android.launcher3.taskbar.TaskbarDragLayer>
|
||||
@@ -0,0 +1 @@
|
||||
{"v":"5.8.1","fr":60,"ip":0,"op":181,"w":796,"h":412,"nm":"SUW_Welcome_Handheld_Landscape_Dynamic","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":4,"nm":".primary","cl":"primary","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[-55]},{"t":180,"s":[0]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.07,"y":0.942},"o":{"x":0.167,"y":0.167},"t":0,"s":[700.266,85.857,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.773,"y":0.043},"t":95,"s":[700.266,-103.727,0],"to":[0,0,0],"ti":[0,0,0]},{"t":180,"s":[700.266,85.857,0]}],"ix":2,"l":2},"a":{"a":0,"k":[-3514.717,-358.642,0],"ix":1,"l":2},"s":{"a":0,"k":[-18.2,18.2,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[100.594,-128.921],[118.85,-93.491],[148.984,-67.406],[148.684,-27.55],[163.244,9.552],[144.457,44.702],[140.106,84.321],[107.136,106.715],[84.872,139.773],[45.271,144.279],[10.194,163.205],[-26.964,148.792],[-66.818,149.249],[-93.023,119.218],[-128.524,101.101],[-137.771,62.332],[-160.786,29.793],[-150.957,-8.833],[-156.215,-48.341],[-129.561,-77.974],[-115.856,-115.401],[-78.484,-129.253],[-48.956,-156.023],[-9.427,-150.921],[29.159,-160.903],[61.789,-138.015]],"o":[[-100.594,128.921],[-118.85,93.491],[-148.984,67.406],[-148.684,27.55],[-163.244,-9.552],[-144.456,-44.702],[-140.106,-84.321],[-107.136,-106.715],[-84.872,-139.773],[-45.271,-144.279],[-10.194,-163.205],[26.964,-148.792],[66.818,-149.249],[93.023,-119.218],[128.524,-101.101],[137.771,-62.332],[160.786,-29.793],[150.957,8.833],[156.215,48.341],[129.561,77.974],[115.856,115.4],[78.484,129.253],[48.956,156.023],[9.427,150.921],[-29.159,160.903],[-61.789,138.015]],"v":[[975.226,761.299],[707.165,899.424],[509.8,1127.42],[208.253,1125.148],[-72.46,1235.308],[-338.41,1093.162],[-638.164,1060.25],[-807.592,810.792],[-1057.715,642.348],[-1091.808,342.727],[-1235.002,77.338],[-1125.948,-203.807],[-1129.407,-505.342],[-902.191,-703.604],[-765.123,-972.207],[-471.796,-1042.166],[-225.603,-1216.305],[66.637,-1141.935],[365.557,-1181.715],[589.761,-980.053],[872.928,-876.361],[977.734,-593.606],[1180.277,-370.197],[1141.675,-71.124],[1217.196,220.821],[1044.029,467.699]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[-3509.952,-363.731],"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":"Polystar 1","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"st","c":{"a":0,"k":[1,0.713725490196,0.556862745098,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"k":[{"s":[10.989],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[10.989],"t":180,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false}],"ip":0,"op":181,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":".tertiary","cl":"tertiary","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.07],"y":[1.047]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[-56]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.773],"y":[-0.035]},"t":95,"s":[-67]},{"t":180,"s":[-56]}],"ix":10},"p":{"s":true,"x":{"a":1,"k":[{"i":{"x":[0.07],"y":[1.073]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[319.023]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.773],"y":[-0.054]},"t":95,"s":[388.573]},{"t":180,"s":[319.023]}],"ix":3},"y":{"a":1,"k":[{"i":{"x":[0.07],"y":[0.927]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[565.531]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.773],"y":[0.054]},"t":95,"s":[482.331]},{"t":180,"s":[565.531]}],"ix":4}},"a":{"a":0,"k":[164.438,1433.781,0],"ix":1,"l":2},"s":{"a":0,"k":[65,65,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[1193.125,1815.766],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"Ellipse Path 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"st","c":{"a":0,"k":[0.901960784314,0.764705882353,0.423529411765,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[164.438,1481.781],"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":"Ellipse 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":181,"st":0,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":".black","cl":"black","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[398,206,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":0,"k":[2472,5352],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"Line truncated
|
||||
@@ -1 +1 @@
|
||||
{"v":"5.8.1","fr":60,"ip":0,"op":180,"w":1280,"h":800,"nm":"3Second_MainWelcomeScreen_Tablet_Landscape_V02","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":3,"nm":"Null 5","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[288,540,0],"ix":2,"l":2},"a":{"a":0,"k":[50,50,0],"ix":1,"l":2},"s":{"a":0,"k":[25,25,100],"ix":6,"l":2}},"ao":0,"ip":0,"op":600,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":"F4BA9E","parent":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[0]},{"t":180,"s":[56]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.07,"y":0.986},"o":{"x":0.167,"y":0.167},"t":0,"s":[375.832,-1006.545,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.773,"y":0.01},"t":95,"s":[375.832,-1811,0],"to":[0,0,0],"ti":[0,0,0]},{"t":180,"s":[375.832,-1006.545,0]}],"ix":2,"l":2},"a":{"a":0,"k":[-3514.717,-358.642,0],"ix":1,"l":2},"s":{"a":0,"k":[110,110,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[75.615,-96.908],[89.338,-70.276],[111.99,-50.668],[111.764,-20.709],[122.709,7.18],[108.586,33.602],[105.316,63.383],[80.533,80.216],[63.797,105.066],[34.03,108.453],[7.663,122.679],[-20.269,111.845],[-50.226,112.189],[-69.924,89.614],[-96.61,75.997],[-103.56,46.854],[-120.861,22.395],[-113.472,-6.639],[-117.425,-36.337],[-97.389,-58.612],[-87.087,-86.745],[-58.996,-97.158],[-36.8,-117.281],[-7.086,-113.445],[21.918,-120.948],[46.446,-103.744]],"o":[[-75.615,96.909],[-89.338,70.276],[-111.99,50.668],[-111.764,20.709],[-122.709,-7.18],[-108.586,-33.602],[-105.316,-63.383],[-80.533,-80.216],[-63.797,-105.066],[-34.03,-108.453],[-7.663,-122.679],[20.269,-111.845],[50.226,-112.188],[69.924,-89.614],[96.61,-75.997],[103.56,-46.854],[120.861,-22.395],[113.472,6.64],[117.425,36.337],[97.389,58.612],[87.088,86.745],[58.995,97.158],[36.8,117.281],[7.087,113.445],[-21.918,120.948],[-46.446,103.744]],"v":[[733.209,572.105],[531.711,675.932],[383.354,847.313],[156.685,845.606],[-54.323,928.412],[-254.235,821.562],[-479.555,796.823],[-606.913,609.309],[-794.927,482.691],[-820.554,257.47],[-928.191,57.981],[-846.217,-153.353],[-848.817,-380.013],[-678.021,-529.044],[-574.99,-730.949],[-354.499,-783.537],[-169.439,-914.435],[50.234,-858.532],[274.928,-888.434],[443.46,-736.847],[656.313,-658.903],[735.094,-446.359],[887.344,-278.426],[858.327,-53.616],[915.095,165.835],[784.928,351.409]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.956862745098,0.729411764706,0.619607843137,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":10,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[-3509.952,-363.731],"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":"Polystar 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":720,"st":0,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":"C0C9C0","parent":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.07],"y":[1.248]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[57]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.719],"y":[0.172]},"t":95,"s":[75]},{"t":180,"s":[57]}],"ix":10},"p":{"s":true,"x":{"a":1,"k":[{"i":{"x":[0.07],"y":[1.032]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[2618]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.719],"y":[0.022]},"t":95,"s":[2442]},{"t":180,"s":[2618]}],"ix":3},"y":{"a":1,"k":[{"i":{"x":[0.07],"y":[1.034]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[891]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.719],"y":[0.024]},"t":95,"s":[694]},{"t":180,"s":[891]}],"ix":4}},"a":{"a":0,"k":[164.438,1433.781,0],"ix":1,"l":2},"s":{"a":0,"k":[120,120,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[3079.125,4685.989],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"Ellipse Path 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"st","c":{"a":0,"k":[0.752941176471,0.788235294118,0.752941176471,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":10,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[164.438,1481.781],"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":"Ellipse 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":600,"st":0,"bm":0}],"markers":[]}
|
||||
{"v":"5.8.1","fr":60,"ip":0,"op":181,"w":841,"h":701,"nm":"SUW_WelcomeScreen_FoldableOpen_Dynamic","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":4,"nm":".primary","cl":"primary","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[0]},{"t":180,"s":[55]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.07,"y":0.939},"o":{"x":0.167,"y":0.167},"t":0,"s":[140.975,228.318,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.773,"y":0.045},"t":95,"s":[140.975,47.65,0],"to":[0,0,0],"ti":[0,0,0]},{"t":180,"s":[140.975,228.318,0]}],"ix":2,"l":2},"a":{"a":0,"k":[-3514.717,-358.642,0],"ix":1,"l":2},"s":{"a":0,"k":[18,18,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[100.594,-128.921],[118.85,-93.491],[148.984,-67.406],[148.684,-27.55],[163.244,9.552],[144.457,44.702],[140.106,84.321],[107.136,106.715],[84.872,139.773],[45.271,144.279],[10.194,163.205],[-26.964,148.792],[-66.818,149.249],[-93.023,119.218],[-128.524,101.101],[-137.771,62.332],[-160.786,29.793],[-150.957,-8.833],[-156.215,-48.341],[-129.561,-77.974],[-115.856,-115.401],[-78.484,-129.253],[-48.956,-156.023],[-9.427,-150.921],[29.159,-160.903],[61.789,-138.015]],"o":[[-100.594,128.921],[-118.85,93.491],[-148.984,67.406],[-148.684,27.55],[-163.244,-9.552],[-144.456,-44.702],[-140.106,-84.321],[-107.136,-106.715],[-84.872,-139.773],[-45.271,-144.279],[-10.194,-163.205],[26.964,-148.792],[66.818,-149.249],[93.023,-119.218],[128.524,-101.101],[137.771,-62.332],[160.786,-29.793],[150.957,8.833],[156.215,48.341],[129.561,77.974],[115.856,115.4],[78.484,129.253],[48.956,156.023],[9.427,150.921],[-29.159,160.903],[-61.789,138.015]],"v":[[975.226,761.299],[707.165,899.424],[509.8,1127.42],[208.253,1125.148],[-72.46,1235.308],[-338.41,1093.162],[-638.164,1060.25],[-807.592,810.792],[-1057.715,642.348],[-1091.808,342.727],[-1235.002,77.338],[-1125.948,-203.807],[-1129.407,-505.342],[-902.191,-703.604],[-765.123,-972.207],[-471.796,-1042.166],[-225.603,-1216.305],[66.637,-1141.935],[365.557,-1181.715],[589.761,-980.053],[872.928,-876.361],[977.734,-593.606],[1180.277,-370.197],[1141.675,-71.124],[1217.196,220.821],[1044.029,467.699]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[-3509.952,-363.731],"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":"Polystar 1","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"st","c":{"a":0,"k":[1,0.713725490196,0.556862745098,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"k":[{"s":[11.111],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[11.111],"t":180,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false}],"ip":0,"op":181,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":".tertiary","cl":"tertiary","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.07],"y":[0.619]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[67]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.719],"y":[-0.263]},"t":95,"s":[82]},{"t":180,"s":[67]}],"ix":10},"p":{"s":true,"x":{"a":1,"k":[{"i":{"x":[0.07],"y":[0.913]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[639]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.719],"y":[-0.06]},"t":95,"s":[704]},{"t":180,"s":[639]}],"ix":3},"y":{"a":1,"k":[{"i":{"x":[0.07],"y":[1.12]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[527.25]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.719],"y":[0.083]},"t":95,"s":[471]},{"t":180,"s":[527.25]}],"ix":4}},"a":{"k":[{"s":[164.438,1433.781,0],"t":0,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[164.438,1433.781,0],"t":180,"i":{"x":1,"y":1},"o":{"x":0,"y":0}}],"l":2},"s":{"a":0,"k":[-25,25,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[2361.125,4541.989],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"Ellipse Path 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"tr","p":{"a":0,"k":[164.438,1481.781],"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":"Ellipse 1","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.901960784314,0.764705882353,0.423529411765,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"k":[{"s":[6],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[6],"t":180,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false}],"ip":0,"op":181,"st":0,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":".black","cl":"black","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[420.5,350.5,0],"ix":2,"l":2},"a":{"a":0,"k":[Line truncated
|
||||
@@ -1 +1 @@
|
||||
{"v":"5.8.1","fr":60,"ip":0,"op":180,"w":800,"h":1280,"nm":"3Second_MainWelcomeScreen_Tablet_Portrait_V02","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":3,"nm":"Null 5","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[288,528,0],"ix":2,"l":2},"a":{"a":0,"k":[50,50,0],"ix":1,"l":2},"s":{"a":0,"k":[25,25,100],"ix":6,"l":2}},"ao":0,"ip":0,"op":600,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":"F4BA9E","parent":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[0]},{"t":180,"s":[56]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.07,"y":0.986},"o":{"x":0.167,"y":0.167},"t":0,"s":[999.832,-2238.545,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.773,"y":0.01},"t":95,"s":[999.832,-3043,0],"to":[0,0,0],"ti":[0,0,0]},{"t":180,"s":[999.832,-2238.545,0]}],"ix":2,"l":2},"a":{"a":0,"k":[-3514.717,-358.642,0],"ix":1,"l":2},"s":{"a":0,"k":[200,200,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[75.615,-96.908],[89.338,-70.276],[111.99,-50.668],[111.764,-20.709],[122.709,7.18],[108.586,33.602],[105.316,63.383],[80.533,80.216],[63.797,105.066],[34.03,108.453],[7.663,122.679],[-20.269,111.845],[-50.226,112.189],[-69.924,89.614],[-96.61,75.997],[-103.56,46.854],[-120.861,22.395],[-113.472,-6.639],[-117.425,-36.337],[-97.389,-58.612],[-87.087,-86.745],[-58.996,-97.158],[-36.8,-117.281],[-7.086,-113.445],[21.918,-120.948],[46.446,-103.744]],"o":[[-75.615,96.909],[-89.338,70.276],[-111.99,50.668],[-111.764,20.709],[-122.709,-7.18],[-108.586,-33.602],[-105.316,-63.383],[-80.533,-80.216],[-63.797,-105.066],[-34.03,-108.453],[-7.663,-122.679],[20.269,-111.845],[50.226,-112.188],[69.924,-89.614],[96.61,-75.997],[103.56,-46.854],[120.861,-22.395],[113.472,6.64],[117.425,36.337],[97.389,58.612],[87.088,86.745],[58.995,97.158],[36.8,117.281],[7.087,113.445],[-21.918,120.948],[-46.446,103.744]],"v":[[733.209,572.105],[531.711,675.932],[383.354,847.313],[156.685,845.606],[-54.323,928.412],[-254.235,821.562],[-479.555,796.823],[-606.913,609.309],[-794.927,482.691],[-820.554,257.47],[-928.191,57.981],[-846.217,-153.353],[-848.817,-380.013],[-678.021,-529.044],[-574.99,-730.949],[-354.499,-783.537],[-169.439,-914.435],[50.234,-858.532],[274.928,-888.434],[443.46,-736.847],[656.313,-658.903],[735.094,-446.359],[887.344,-278.426],[858.327,-53.616],[915.095,165.835],[784.928,351.409]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.956862745098,0.729411764706,0.619607843137,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":10,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[-3509.952,-363.731],"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":"Polystar 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":720,"st":0,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":"C0C9C0","parent":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.07],"y":[1.248]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[-39]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.719],"y":[0.172]},"t":95,"s":[-21]},{"t":180,"s":[-39]}],"ix":10},"p":{"s":true,"x":{"a":1,"k":[{"i":{"x":[0.07],"y":[1.032]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[1490]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.719],"y":[0.022]},"t":95,"s":[1314]},{"t":180,"s":[1490]}],"ix":3},"y":{"a":1,"k":[{"i":{"x":[0.07],"y":[1.034]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[2967]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.719],"y":[0.024]},"t":95,"s":[2770]},{"t":180,"s":[2967]}],"ix":4}},"a":{"a":0,"k":[164.438,1433.781,0],"ix":1,"l":2},"s":{"a":0,"k":[168,168,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[3079.125,4685.989],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"Ellipse Path 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"st","c":{"a":0,"k":[0.752941176471,0.788235294118,0.752941176471,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":10,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[164.438,1481.781],"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":"Ellipse 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":600,"st":0,"bm":0}],"markers":[]}
|
||||
{"v":"5.8.1","fr":60,"ip":0,"op":181,"w":701,"h":841,"nm":"SUW_WelcomeScreen_FoldableOpen_Portrait_Dynamic","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":4,"nm":".primary","cl":"primary","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[0]},{"t":180,"s":[55]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.07,"y":0.949},"o":{"x":0.167,"y":0.167},"t":0,"s":[181.172,148.425,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.773,"y":0.038},"t":95,"s":[181.172,-68.377,0],"to":[0,0,0],"ti":[0,0,0]},{"t":180,"s":[181.172,148.425,0]}],"ix":2,"l":2},"a":{"a":0,"k":[-3514.717,-358.642,0],"ix":1,"l":2},"s":{"a":0,"k":[21.6,21.6,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[100.594,-128.921],[118.85,-93.491],[148.984,-67.406],[148.684,-27.55],[163.244,9.552],[144.457,44.702],[140.106,84.321],[107.136,106.715],[84.872,139.773],[45.271,144.279],[10.194,163.205],[-26.964,148.792],[-66.818,149.249],[-93.023,119.218],[-128.524,101.101],[-137.771,62.332],[-160.786,29.793],[-150.957,-8.833],[-156.215,-48.341],[-129.561,-77.974],[-115.856,-115.401],[-78.484,-129.253],[-48.956,-156.023],[-9.427,-150.921],[29.159,-160.903],[61.789,-138.015]],"o":[[-100.594,128.921],[-118.85,93.491],[-148.984,67.406],[-148.684,27.55],[-163.244,-9.552],[-144.456,-44.702],[-140.106,-84.321],[-107.136,-106.715],[-84.872,-139.773],[-45.271,-144.279],[-10.194,-163.205],[26.964,-148.792],[66.818,-149.249],[93.023,-119.218],[128.524,-101.101],[137.771,-62.332],[160.786,-29.793],[150.957,8.833],[156.215,48.341],[129.561,77.974],[115.856,115.4],[78.484,129.253],[48.956,156.023],[9.427,150.921],[-29.159,160.903],[-61.789,138.015]],"v":[[975.226,761.299],[707.165,899.424],[509.8,1127.42],[208.253,1125.148],[-72.46,1235.308],[-338.41,1093.162],[-638.164,1060.25],[-807.592,810.792],[-1057.715,642.348],[-1091.808,342.727],[-1235.002,77.338],[-1125.948,-203.807],[-1129.407,-505.342],[-902.191,-703.604],[-765.123,-972.207],[-471.796,-1042.166],[-225.603,-1216.305],[66.637,-1141.935],[365.557,-1181.715],[589.761,-980.053],[872.928,-876.361],[977.734,-593.606],[1180.277,-370.197],[1141.675,-71.124],[1217.196,220.821],[1044.029,467.699]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[-3509.952,-363.731],"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":"Polystar 1","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"st","c":{"a":0,"k":[1,0.713725490196,0.556862745098,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":9.3,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false}],"ip":0,"op":181,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":".tertiary","cl":"tertiary","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.07],"y":[0.619]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[67]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.719],"y":[-0.263]},"t":95,"s":[82]},{"t":180,"s":[67]}],"ix":10},"p":{"s":true,"x":{"a":1,"k":[{"i":{"x":[0.07],"y":[0.927]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[458.803]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.719],"y":[-0.05]},"t":95,"s":[536.803]},{"t":180,"s":[458.803]}],"ix":3},"y":{"a":1,"k":[{"i":{"x":[0.07],"y":[1.1]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[707.143]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.719],"y":[0.069]},"t":95,"s":[639.643]},{"t":180,"s":[707.143]}],"ix":4}},"a":{"k":[{"s":[164.438,1433.781,0],"t":0,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[164.438,1433.781,0],"t":180,"i":{"x":1,"y":1},"o":{"x":0,"y":0}}],"l":2},"s":{"a":0,"k":[-30,30,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[2361.125,4541.989],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"Ellipse Path 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"tr","p":{"a":0,"k":[164.438,1481.781],"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":"Ellipse 1","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.901960784314,0.764705882353,0.423529411765,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":5,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false}],"ip":0,"op":181,"st":0,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":".black","cl":"black","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":90,"ix":10},"p":{"a":0,"k":[350.5,420.5,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0Line truncated
|
||||
@@ -0,0 +1 @@
|
||||
{"v":"5.8.1","fr":60,"ip":0,"op":180,"w":1280,"h":800,"nm":"SUW_WelcomeScreen_Tablet_Landscape_Dynamic","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":3,"nm":"Null 5","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[288,540,0],"ix":2,"l":2},"a":{"a":0,"k":[50,50,0],"ix":1,"l":2},"s":{"a":0,"k":[25,25,100],"ix":6,"l":2}},"ao":0,"ip":0,"op":600,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":".primary","cl":"primary","parent":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[0]},{"t":180,"s":[56]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.07,"y":0.986},"o":{"x":0.167,"y":0.167},"t":0,"s":[375.832,-1006.545,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.773,"y":0.01},"t":95,"s":[375.832,-1811,0],"to":[0,0,0],"ti":[0,0,0]},{"t":180,"s":[375.832,-1006.545,0]}],"ix":2,"l":2},"a":{"a":0,"k":[-3514.717,-358.642,0],"ix":1,"l":2},"s":{"a":0,"k":[110,110,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[75.615,-96.908],[89.338,-70.276],[111.99,-50.668],[111.764,-20.709],[122.709,7.18],[108.586,33.602],[105.316,63.383],[80.533,80.216],[63.797,105.066],[34.03,108.453],[7.663,122.679],[-20.269,111.845],[-50.226,112.189],[-69.924,89.614],[-96.61,75.997],[-103.56,46.854],[-120.861,22.395],[-113.472,-6.639],[-117.425,-36.337],[-97.389,-58.612],[-87.087,-86.745],[-58.996,-97.158],[-36.8,-117.281],[-7.086,-113.445],[21.918,-120.948],[46.446,-103.744]],"o":[[-75.615,96.909],[-89.338,70.276],[-111.99,50.668],[-111.764,20.709],[-122.709,-7.18],[-108.586,-33.602],[-105.316,-63.383],[-80.533,-80.216],[-63.797,-105.066],[-34.03,-108.453],[-7.663,-122.679],[20.269,-111.845],[50.226,-112.188],[69.924,-89.614],[96.61,-75.997],[103.56,-46.854],[120.861,-22.395],[113.472,6.64],[117.425,36.337],[97.389,58.612],[87.088,86.745],[58.995,97.158],[36.8,117.281],[7.087,113.445],[-21.918,120.948],[-46.446,103.744]],"v":[[733.209,572.105],[531.711,675.932],[383.354,847.313],[156.685,845.606],[-54.323,928.412],[-254.235,821.562],[-479.555,796.823],[-606.913,609.309],[-794.927,482.691],[-820.554,257.47],[-928.191,57.981],[-846.217,-153.353],[-848.817,-380.013],[-678.021,-529.044],[-574.99,-730.949],[-354.499,-783.537],[-169.439,-914.435],[50.234,-858.532],[274.928,-888.434],[443.46,-736.847],[656.313,-658.903],[735.094,-446.359],[887.344,-278.426],[858.327,-53.616],[915.095,165.835],[784.928,351.409]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.956862745098,0.729411764706,0.619607843137,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":10,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[-3509.952,-363.731],"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":"Polystar 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":720,"st":0,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":".tertiary","cl":"tertiary","parent":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.07],"y":[1.248]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[57]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.719],"y":[0.172]},"t":95,"s":[75]},{"t":180,"s":[57]}],"ix":10},"p":{"s":true,"x":{"a":1,"k":[{"i":{"x":[0.07],"y":[1.032]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[2618]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.719],"y":[0.022]},"t":95,"s":[2442]},{"t":180,"s":[2618]}],"ix":3},"y":{"a":1,"k":[{"i":{"x":[0.07],"y":[1.034]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[891]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.719],"y":[0.024]},"t":95,"s":[694]},{"t":180,"s":[891]}],"ix":4}},"a":{"a":0,"k":[164.438,1433.781,0],"ix":1,"l":2},"s":{"a":0,"k":[120,120,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[3079.125,4685.989],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"Ellipse Path 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"st","c":{"a":0,"k":[0.752941176471,0.788235294118,0.752941176471,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":10,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[164.438,1481.781],"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":"Ellipse 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":600,"st":0,"bm":0}],"markers":[]}
|
||||
@@ -0,0 +1 @@
|
||||
{"v":"5.8.1","fr":60,"ip":0,"op":180,"w":800,"h":1280,"nm":"SUW_WelcomeScreen_Tablet_Portrait_Dynamic","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":3,"nm":"Null 5","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[288,528,0],"ix":2,"l":2},"a":{"a":0,"k":[50,50,0],"ix":1,"l":2},"s":{"a":0,"k":[25,25,100],"ix":6,"l":2}},"ao":0,"ip":0,"op":600,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":".primary","cl":"primary","parent":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[0]},{"t":180,"s":[56]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.07,"y":0.986},"o":{"x":0.167,"y":0.167},"t":0,"s":[999.832,-2238.545,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.773,"y":0.01},"t":95,"s":[999.832,-3043,0],"to":[0,0,0],"ti":[0,0,0]},{"t":180,"s":[999.832,-2238.545,0]}],"ix":2,"l":2},"a":{"a":0,"k":[-3514.717,-358.642,0],"ix":1,"l":2},"s":{"a":0,"k":[200,200,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[75.615,-96.908],[89.338,-70.276],[111.99,-50.668],[111.764,-20.709],[122.709,7.18],[108.586,33.602],[105.316,63.383],[80.533,80.216],[63.797,105.066],[34.03,108.453],[7.663,122.679],[-20.269,111.845],[-50.226,112.189],[-69.924,89.614],[-96.61,75.997],[-103.56,46.854],[-120.861,22.395],[-113.472,-6.639],[-117.425,-36.337],[-97.389,-58.612],[-87.087,-86.745],[-58.996,-97.158],[-36.8,-117.281],[-7.086,-113.445],[21.918,-120.948],[46.446,-103.744]],"o":[[-75.615,96.909],[-89.338,70.276],[-111.99,50.668],[-111.764,20.709],[-122.709,-7.18],[-108.586,-33.602],[-105.316,-63.383],[-80.533,-80.216],[-63.797,-105.066],[-34.03,-108.453],[-7.663,-122.679],[20.269,-111.845],[50.226,-112.188],[69.924,-89.614],[96.61,-75.997],[103.56,-46.854],[120.861,-22.395],[113.472,6.64],[117.425,36.337],[97.389,58.612],[87.088,86.745],[58.995,97.158],[36.8,117.281],[7.087,113.445],[-21.918,120.948],[-46.446,103.744]],"v":[[733.209,572.105],[531.711,675.932],[383.354,847.313],[156.685,845.606],[-54.323,928.412],[-254.235,821.562],[-479.555,796.823],[-606.913,609.309],[-794.927,482.691],[-820.554,257.47],[-928.191,57.981],[-846.217,-153.353],[-848.817,-380.013],[-678.021,-529.044],[-574.99,-730.949],[-354.499,-783.537],[-169.439,-914.435],[50.234,-858.532],[274.928,-888.434],[443.46,-736.847],[656.313,-658.903],[735.094,-446.359],[887.344,-278.426],[858.327,-53.616],[915.095,165.835],[784.928,351.409]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.956862745098,0.729411764706,0.619607843137,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":10,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[-3509.952,-363.731],"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":"Polystar 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":720,"st":0,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":".tertiary","cl":"tertiary","parent":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.07],"y":[1.248]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[-39]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.719],"y":[0.172]},"t":95,"s":[-21]},{"t":180,"s":[-39]}],"ix":10},"p":{"s":true,"x":{"a":1,"k":[{"i":{"x":[0.07],"y":[1.032]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[1490]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.719],"y":[0.022]},"t":95,"s":[1314]},{"t":180,"s":[1490]}],"ix":3},"y":{"a":1,"k":[{"i":{"x":[0.07],"y":[1.034]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[2967]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.719],"y":[0.024]},"t":95,"s":[2770]},{"t":180,"s":[2967]}],"ix":4}},"a":{"a":0,"k":[164.438,1433.781,0],"ix":1,"l":2},"s":{"a":0,"k":[168,168,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[3079.125,4685.989],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"Ellipse Path 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"st","c":{"a":0,"k":[0.752941176471,0.788235294118,0.752941176471,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":10,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[164.438,1481.781],"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":"Ellipse 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":600,"st":0,"bm":0}],"markers":[]}
|
||||
@@ -1 +1 @@
|
||||
{"v":"5.7.8","fr":24,"ip":0,"op":72,"w":2472,"h":5352,"nm":"3Second_MAIN_Welcome","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":3,"nm":"Null 60","sr":1,"ks":{"o":{"a":0,"k":0,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[1508,1364,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ip":0,"op":240,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":"PinkFlower","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[0]},{"t":72,"s":[56]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.07,"y":0.986},"o":{"x":0.167,"y":0.167},"t":0,"s":[1505.832,1379.455,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.773,"y":0.01},"t":38,"s":[1505.832,575,0],"to":[0,0,0],"ti":[0,0,0]},{"t":72,"s":[1505.832,1379.455,0]}],"ix":2,"l":2},"a":{"a":0,"k":[-3514.717,-358.642,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[75.615,-96.908],[89.338,-70.276],[111.99,-50.668],[111.764,-20.709],[122.709,7.18],[108.586,33.602],[105.316,63.383],[80.533,80.216],[63.797,105.066],[34.03,108.453],[7.663,122.679],[-20.269,111.845],[-50.226,112.189],[-69.924,89.614],[-96.61,75.997],[-103.56,46.854],[-120.861,22.395],[-113.472,-6.639],[-117.425,-36.337],[-97.389,-58.612],[-87.087,-86.745],[-58.996,-97.158],[-36.8,-117.281],[-7.086,-113.445],[21.918,-120.948],[46.446,-103.744]],"o":[[-75.615,96.909],[-89.338,70.276],[-111.99,50.668],[-111.764,20.709],[-122.709,-7.18],[-108.586,-33.602],[-105.316,-63.383],[-80.533,-80.216],[-63.797,-105.066],[-34.03,-108.453],[-7.663,-122.679],[20.269,-111.845],[50.226,-112.188],[69.924,-89.614],[96.61,-75.997],[103.56,-46.854],[120.861,-22.395],[113.472,6.64],[117.425,36.337],[97.389,58.612],[87.088,86.745],[58.995,97.158],[36.8,117.281],[7.087,113.445],[-21.918,120.948],[-46.446,103.744]],"v":[[733.209,572.105],[531.711,675.932],[383.354,847.313],[156.685,845.606],[-54.323,928.412],[-254.235,821.562],[-479.555,796.823],[-606.913,609.309],[-794.927,482.691],[-820.554,257.47],[-928.191,57.981],[-846.217,-153.353],[-848.817,-380.013],[-678.021,-529.044],[-574.99,-730.949],[-354.499,-783.537],[-169.439,-914.435],[50.234,-858.532],[274.928,-888.434],[443.46,-736.847],[656.313,-658.903],[735.094,-446.359],[887.344,-278.426],[858.327,-53.616],[915.095,165.835],[784.928,351.409]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.839215686275,0.439215686275,0.388235294118,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":4,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[0.839215746113,0.439215716194,0.388235324037,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":true},{"ty":"tr","p":{"a":0,"k":[-3509.952,-363.731],"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":"Polystar 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":288,"st":0,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":"Ellipse_Bottom","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.07],"y":[1.248]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[-56]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.719],"y":[0.172]},"t":38,"s":[-38]},{"t":72,"s":[-56]}],"ix":10},"p":{"s":true,"x":{"a":1,"k":[{"i":{"x":[0.07],"y":[1.032]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[1720]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.719],"y":[0.022]},"t":38,"s":[1544]},{"t":72,"s":[1720]}],"ix":3},"y":{"a":1,"k":[{"i":{"x":[0.07],"y":[1.034]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[4069]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.719],"y":[0.024]},"t":38,"s":[3872]},{"t":72,"s":[4069]}],"ix":4}},"a":{"a":0,"k":[164.438,1433.781,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[3079.125,4685.989],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"Ellipse Path 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"st","c":{"a":0,"k":[0.305882352941,0.309803921569,0.321568627451,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":4,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[0.882353001015,0.894118006089,0.886274988511,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":true},{"ty":"tr","p":{"a":0,"k":[164.438,1481.781],"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":"Ellipse 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd"Line truncated
|
||||
{"v":"5.8.1","fr":24,"ip":0,"op":72,"w":2472,"h":5352,"nm":"SUW_Welcome_Handheld_Dynamic","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":3,"nm":"Null 60","sr":1,"ks":{"o":{"a":0,"k":0,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[1508,1364,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ip":0,"op":240,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":".primary","cl":"primary","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[0]},{"t":72,"s":[56]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.07,"y":0.986},"o":{"x":0.167,"y":0.167},"t":0,"s":[1505.832,1379.455,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.773,"y":0.01},"t":38,"s":[1505.832,575,0],"to":[0,0,0],"ti":[0,0,0]},{"t":72,"s":[1505.832,1379.455,0]}],"ix":2,"l":2},"a":{"a":0,"k":[-3514.717,-358.642,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[75.615,-96.908],[89.338,-70.276],[111.99,-50.668],[111.764,-20.709],[122.709,7.18],[108.586,33.602],[105.316,63.383],[80.533,80.216],[63.797,105.066],[34.03,108.453],[7.663,122.679],[-20.269,111.845],[-50.226,112.189],[-69.924,89.614],[-96.61,75.997],[-103.56,46.854],[-120.861,22.395],[-113.472,-6.639],[-117.425,-36.337],[-97.389,-58.612],[-87.087,-86.745],[-58.996,-97.158],[-36.8,-117.281],[-7.086,-113.445],[21.918,-120.948],[46.446,-103.744]],"o":[[-75.615,96.909],[-89.338,70.276],[-111.99,50.668],[-111.764,20.709],[-122.709,-7.18],[-108.586,-33.602],[-105.316,-63.383],[-80.533,-80.216],[-63.797,-105.066],[-34.03,-108.453],[-7.663,-122.679],[20.269,-111.845],[50.226,-112.188],[69.924,-89.614],[96.61,-75.997],[103.56,-46.854],[120.861,-22.395],[113.472,6.64],[117.425,36.337],[97.389,58.612],[87.088,86.745],[58.995,97.158],[36.8,117.281],[7.087,113.445],[-21.918,120.948],[-46.446,103.744]],"v":[[733.209,572.105],[531.711,675.932],[383.354,847.313],[156.685,845.606],[-54.323,928.412],[-254.235,821.562],[-479.555,796.823],[-606.913,609.309],[-794.927,482.691],[-820.554,257.47],[-928.191,57.981],[-846.217,-153.353],[-848.817,-380.013],[-678.021,-529.044],[-574.99,-730.949],[-354.499,-783.537],[-169.439,-914.435],[50.234,-858.532],[274.928,-888.434],[443.46,-736.847],[656.313,-658.903],[735.094,-446.359],[887.344,-278.426],[858.327,-53.616],[915.095,165.835],[784.928,351.409]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.839215686275,0.439215686275,0.388235294118,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":4,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[-3509.952,-363.731],"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":"Polystar 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":288,"st":0,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":".tertiary","cl":"tertiary","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.07],"y":[1.248]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[-56]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.719],"y":[0.172]},"t":38,"s":[-38]},{"t":72,"s":[-56]}],"ix":10},"p":{"s":true,"x":{"a":1,"k":[{"i":{"x":[0.07],"y":[1.032]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[1720]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.719],"y":[0.022]},"t":38,"s":[1544]},{"t":72,"s":[1720]}],"ix":3},"y":{"a":1,"k":[{"i":{"x":[0.07],"y":[1.034]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[4069]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.719],"y":[0.024]},"t":38,"s":[3872]},{"t":72,"s":[4069]}],"ix":4}},"a":{"a":0,"k":[164.438,1433.781,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[3079.125,4685.989],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"Ellipse Path 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"st","c":{"a":0,"k":[0.305882352941,0.309803921569,0.321568627451,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":4,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[164.438,1481.781],"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":"Ellipse 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":240,"st":0,"bm":0}],"markers":[]}
|
||||
@@ -1 +1 @@
|
||||
{"v":"5.10.0","fr":60,"ip":0,"op":1980,"w":412,"h":892,"nm":"SUW_BackThumb_Combined_Preview","ddd":0,"assets":[{"id":"comp_0","nm":"Part01_ThumbDemo_Back_V01","fr":60,"layers":[{"ddd":0,"ind":1,"ty":3,"nm":"HAND NULL","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.22],"y":[1]},"o":{"x":[0.18],"y":[-0.364]},"t":89,"s":[62]},{"i":{"x":[0.56],"y":[1]},"o":{"x":[0.44],"y":[0]},"t":140,"s":[60]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":195,"s":[67]},{"i":{"x":[0.31],"y":[1]},"o":{"x":[0.77],"y":[0]},"t":224,"s":[67]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":257,"s":[47]},{"i":{"x":[0.48],"y":[1]},"o":{"x":[0.48],"y":[0]},"t":272,"s":[47]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":305,"s":[67]},{"i":{"x":[0.31],"y":[1]},"o":{"x":[0.77],"y":[0]},"t":322,"s":[67]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":355,"s":[47]},{"i":{"x":[0.53],"y":[1]},"o":{"x":[0.69],"y":[0]},"t":363,"s":[47]},{"t":410,"s":[62]}],"ix":10},"p":{"s":true,"x":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.001],"y":[0]},"t":89,"s":[489]},{"i":{"x":[0.12],"y":[1]},"o":{"x":[0.44],"y":[0]},"t":159,"s":[385]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":195,"s":[404]},{"i":{"x":[0.31],"y":[1]},"o":{"x":[0.77],"y":[0]},"t":224,"s":[404]},{"i":{"x":[0.31],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":257,"s":[358]},{"i":{"x":[0.48],"y":[1]},"o":{"x":[0.48],"y":[0]},"t":272,"s":[358]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":305,"s":[404]},{"i":{"x":[0.31],"y":[1]},"o":{"x":[0.77],"y":[0]},"t":322,"s":[404]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":355,"s":[358]},{"i":{"x":[0.6],"y":[1]},"o":{"x":[0.48],"y":[0]},"t":363,"s":[358]},{"t":410,"s":[489]}],"ix":3},"y":{"a":1,"k":[{"i":{"x":[0],"y":[1]},"o":{"x":[0.194],"y":[0]},"t":89,"s":[932.366]},{"i":{"x":[0.12],"y":[1]},"o":{"x":[0.167],"y":[0.167]},"t":149,"s":[812.366]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":195,"s":[798.366]},{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":257,"s":[798.366]},{"i":{"x":[0.44],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":265,"s":[814.366]},{"i":{"x":[0.48],"y":[1]},"o":{"x":[0.48],"y":[0]},"t":272,"s":[814.366]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":305,"s":[798.366]},{"i":{"x":[0.55],"y":[1]},"o":{"x":[0.86],"y":[0]},"t":355,"s":[798.366]},{"t":410,"s":[932.366]}],"ix":4}},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ef":[{"ty":5,"nm":"Void","np":20,"mn":"Pseudo/289611","ix":1,"en":1,"ef":[{"ty":0,"nm":"Width","mn":"Pseudo/289611-0001","ix":1,"v":{"a":0,"k":100,"ix":1}},{"ty":0,"nm":"Height","mn":"Pseudo/289611-0002","ix":2,"v":{"a":0,"k":100,"ix":2}},{"ty":0,"nm":"Offset X","mn":"Pseudo/289611-0003","ix":3,"v":{"a":0,"k":0,"ix":3}},{"ty":0,"nm":"Offset Y","mn":"Pseudo/289611-0004","ix":4,"v":{"a":0,"k":0,"ix":4}},{"ty":6,"nm":"About","mn":"Pseudo/289611-0005","ix":5,"v":0},{"ty":6,"nm":"Plague of null layers.","mn":"Pseudo/289611-0006","ix":6,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0007","ix":7,"v":0},{"ty":6,"nm":"Following projects","mn":"Pseudo/289611-0008","ix":8,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0009","ix":9,"v":0},{"ty":6,"nm":"through time.","mn":"Pseudo/289611-0010","ix":10,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0011","ix":11,"v":0},{"ty":6,"nm":"Be free of the past.","mn":"Pseudo/289611-0012","ix":12,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0013","ix":13,"v":0},{"ty":6,"nm":"Void - 1.0.0","mn":"Pseudo/289611-0014","ix":14,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0015","ix":15,"v":0},{"ty":6,"nm":"© 2022 Battle Axe Inc","mn":"Pseudo/289611-0016","ix":16,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0017","ix":17,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0018","ix":18,"v":0}]}],"ip":89,"op":410,"st":89,"ct":1,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":"⨳ Thumb KO","parent":1,"td":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"k":[{"s":[27.686],"t":161,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[27.665],"t":162,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[27.634],"t":163,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[27.59],"t":164,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[27.53],"t":165,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[27.45],"t":166,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[27.35],"t":167,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[27.227],"t":168,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[27.086],"t":169,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[26.935],"t":170,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[26.785],"t":171,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[26.646],"t":172,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[26.519],"t":173,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[26.408],"t":174,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[26.31],"t":175,"i":Line truncated
|
||||
{"v":"5.10.0","fr":60,"ip":0,"op":1517,"w":412,"h":892,"nm":"SUW_BackThumb_Combined_Preview V03","ddd":0,"assets":[{"id":"comp_0","nm":"Part02_Charade_Back_V02","fr":60,"layers":[{"ddd":0,"ind":1,"ty":4,"nm":".onSurfaceBack","cl":"onSurfaceBack","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":60,"s":[0]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":72,"s":[100]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":84,"s":[0]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":96,"s":[100]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":108,"s":[0]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":162,"s":[0]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":174,"s":[100]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":186,"s":[0]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":198,"s":[100]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":210,"s":[0]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":264,"s":[0]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":276,"s":[100]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":288,"s":[0]},{"i":{"x":[0.999],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":300,"s":[100]},{"t":312,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[206,446,0],"ix":2,"l":2},"a":{"a":0,"k":[206,561,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":0,"k":[250,892],"ix":2},"p":{"a":0,"k":[-65.5,0],"ix":3},"r":{"a":0,"k":73,"ix":4},"nm":"Rectangle Path 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"fl","c":{"k":[{"s":[0.698,0.812,0.655,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.698,0.812,0.655,1],"t":379,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"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":[-37.5,561],"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":"Left Zone","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":0,"k":[250,892],"ix":2},"p":{"a":0,"k":[-65.5,0],"ix":3},"r":{"a":0,"k":73,"ix":4},"nm":"Rectangle Path 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"fl","c":{"k":[{"s":[0.698,0.812,0.655,1],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[0.698,0.812,0.655,1],"t":379,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"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":[449.5,561],"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":"Right Zone","np":2,"cix":2,"bm":0,"ix":2,"mn":"ADBE Vector Group","hd":false}],"ip":60,"op":312,"st":60,"ct":1,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":".secondaryBack","cl":"secondaryBack","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":549,"s":[100]},{"t":555,"s":[0]}],"ix":11},"r":{"a":0,"k":-90,"ix":10},"p":{"s":true,"x":{"a":1,"k":[{"i":{"x":[0.8],"y":[0.15]},"o":{"x":[0.3],"y":[0]},"t":38,"s":[215]},{"i":{"x":[0.1],"y":[1]},"o":{"x":[0.05],"y":[0.7]},"t":44.666,"s":[273]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":78,"s":[360]},{"i":{"x":[0.76],"y":[1]},"o":{"x":[0.91],"y":[0]},"t":109,"s":[350]},{"i":{"x":[0],"y":[1]},"o":{"x":[0.2],"y":[0]},"t":128,"s":[396]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.78],"y":[0]},"t":143,"s":[359]},{"i":{"x":[0.8],"y":[0.443]},"o":{"x":[0.3],"y":[0]},"t":145,"s":[359]},{"i":{"x":[0.6],"y":[1]},"o":{"x":[0.32],"y":[0.901]},"t":155,"s":[396]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":184,"s":[300]},{"i":{"x":[0.39],"y":[1]},"o":{"x":[0.69],"y":[0]},"t":195,"s":[300]},{"i":{"x":[0.12],"y":[0.872]},"o":{"x":[0.88],"y":[0.128]},"t":231,"s":[17]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":246,"s":[52]},{"i":{"x":[0.8],"y":[0.433]},"o":{"x":[0.3],"y":[0]},"t":248,"s":[52]},{"i":{"x":[0.48],"y":[1]},"o":{"x":[0.26],"y":[0.933]},"t":258,"s":[17]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":288,"s":[62]},{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":318,"s":[62]},{"t":379,"s":[20]}],"ix":3},"y":{"a":0,"k":561,"ix":4}},"a":{"a":0,"k":[0,-21.75,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0,"y":0.96},"o":{"x":0.61,"y":0},"t":38,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-47.75,-37]],"c":false}]},{"i":{"x":0.56,"y":1},"o":{"x":0.88,"y":0},"t":52,"s":[{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[-12.75,-21.75],[-73.75,-37]],"c":false}]},{"i":{"x":0.22,"y":1},"o":{"x":0.167,"y":0Line truncated
|
||||
@@ -0,0 +1 @@
|
||||
{"v":"5.10.0","fr":60,"ip":0,"op":1513,"w":841,"h":701,"nm":"SUW_FO_Back_Combined_Preview V03","ddd":0,"assets":[{"id":"comp_0","nm":"Part01_Thumb_Back_FO_V03","fr":60,"layers":[{"ddd":0,"ind":1,"ty":3,"nm":"THUMB REPO","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"s":true,"x":{"a":0,"k":818,"ix":3},"y":{"a":0,"k":608,"ix":4}},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ef":[{"ty":5,"nm":"Void","np":20,"mn":"Pseudo/289611","ix":1,"en":1,"ef":[{"ty":0,"nm":"Width","mn":"Pseudo/289611-0001","ix":1,"v":{"a":0,"k":100,"ix":1}},{"ty":0,"nm":"Height","mn":"Pseudo/289611-0002","ix":2,"v":{"a":0,"k":100,"ix":2}},{"ty":0,"nm":"Offset X","mn":"Pseudo/289611-0003","ix":3,"v":{"a":0,"k":0,"ix":3}},{"ty":0,"nm":"Offset Y","mn":"Pseudo/289611-0004","ix":4,"v":{"a":0,"k":0,"ix":4}},{"ty":6,"nm":"About","mn":"Pseudo/289611-0005","ix":5,"v":0},{"ty":6,"nm":"Plague of null layers.","mn":"Pseudo/289611-0006","ix":6,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0007","ix":7,"v":0},{"ty":6,"nm":"Following projects","mn":"Pseudo/289611-0008","ix":8,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0009","ix":9,"v":0},{"ty":6,"nm":"through time.","mn":"Pseudo/289611-0010","ix":10,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0011","ix":11,"v":0},{"ty":6,"nm":"Be free of the past.","mn":"Pseudo/289611-0012","ix":12,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0013","ix":13,"v":0},{"ty":6,"nm":"Void - 1.0.0","mn":"Pseudo/289611-0014","ix":14,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0015","ix":15,"v":0},{"ty":6,"nm":"© 2022 Battle Axe Inc","mn":"Pseudo/289611-0016","ix":16,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0017","ix":17,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0018","ix":18,"v":0}]}],"ip":0,"op":320,"st":-89,"ct":1,"bm":0},{"ddd":0,"ind":2,"ty":3,"nm":"HAND NULL","parent":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.22],"y":[1]},"o":{"x":[0.18],"y":[-0.364]},"t":0,"s":[62]},{"i":{"x":[0.56],"y":[1]},"o":{"x":[0.44],"y":[0]},"t":51,"s":[60]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":106,"s":[67]},{"i":{"x":[0.31],"y":[1]},"o":{"x":[0.77],"y":[0]},"t":135,"s":[67]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":168,"s":[47]},{"i":{"x":[0.48],"y":[1]},"o":{"x":[0.48],"y":[0]},"t":183,"s":[47]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":216,"s":[67]},{"i":{"x":[0.31],"y":[1]},"o":{"x":[0.77],"y":[0]},"t":233,"s":[67]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":266,"s":[47]},{"i":{"x":[0.53],"y":[1]},"o":{"x":[0.69],"y":[0]},"t":274,"s":[47]},{"t":321,"s":[62]}],"ix":10},"p":{"s":true,"x":{"a":1,"k":[{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.001],"y":[0]},"t":0,"s":[103.885]},{"i":{"x":[0.12],"y":[1]},"o":{"x":[0.44],"y":[0]},"t":70,"s":[-0.115]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":106,"s":[18.885]},{"i":{"x":[0.31],"y":[1]},"o":{"x":[0.77],"y":[0]},"t":135,"s":[18.885]},{"i":{"x":[0.31],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":168,"s":[-27.115]},{"i":{"x":[0.48],"y":[1]},"o":{"x":[0.48],"y":[0]},"t":183,"s":[-27.115]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":216,"s":[18.885]},{"i":{"x":[0.31],"y":[1]},"o":{"x":[0.77],"y":[0]},"t":233,"s":[18.885]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":266,"s":[-27.115]},{"i":{"x":[0.6],"y":[1]},"o":{"x":[0.48],"y":[0]},"t":274,"s":[-27.115]},{"t":321,"s":[103.885]}],"ix":3},"y":{"a":1,"k":[{"i":{"x":[0],"y":[1]},"o":{"x":[0.194],"y":[0]},"t":0,"s":[128.591]},{"i":{"x":[0.12],"y":[1]},"o":{"x":[0.167],"y":[0.167]},"t":60,"s":[8.591]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":106,"s":[-5.409]},{"i":{"x":[0.2],"y":[1]},"o":{"x":[0.4],"y":[0]},"t":168,"s":[-5.409]},{"i":{"x":[0.44],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":176,"s":[10.591]},{"i":{"x":[0.48],"y":[1]},"o":{"x":[0.48],"y":[0]},"t":183,"s":[10.591]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":216,"s":[-5.409]},{"i":{"x":[0.55],"y":[1]},"o":{"x":[0.86],"y":[0]},"t":266,"s":[-5.409]},{"t":321,"s":[128.591]}],"ix":4}},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ef":[{"ty":5,"nm":"Void","np":20,"mn":"Pseudo/289611","ix":1,"en":1,"ef":[{"ty":0,"nm":"Width","mn":"Pseudo/289611-0001","ix":1,"v":{"a":0,"k":100,"ix":1}},{"ty":0,"nm":"Height","mn":"Pseudo/289611-0002","ix":2,"v":{"a":0,"k":100,"ix":2}},{"ty":0,"nm":"Offset X","mn":"Pseudo/289611-0003","ix":3,"v":{"a":0,"k":0,"ix":3}},{"ty":0,"nm":"Offset Y","mn":"Pseudo/289611-0004","ix":4,"v":{"a":0,"k":0,"ix":4}},{"ty":6,"nm":"About","mn":"Pseudo/289611-0005","ix":5,"v":0},{"ty":6,"nm":"Plague of null layers.","mn":"Pseudo/289611-0006","ix":6,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0007","ix":7,"v":0},{"ty":6,"nm":"Following projects","mn":"Pseudo/289611-0008","ix":8,"v":0},{"ty":6,"nm":"Void","mn":"Pseudo/289611-0009","ix":9,"v":0},{"ty":6,"nm":"through time.","Line truncated
|
||||
Loaded 100 of 994 files, more files were not shown because too many files have changed in this diff.
Show more
Reference in new issue
Block a user