Improve animation from keyguard shortcut
This CL improves the activity launch animations from keyguard shortcuts by changing their background to be a rounded rectangle instead of an oval, so that it can be properly animated during the launch, and by adding support for StateListDrawable in GhostedViewLaunchAnimatorController. See b/265280100#comment6 for a video. Bug: 265280100 Test: Launch an activity from a keyguard shortcut Change-Id: Id22045a64a062ebea5be5adebda667f4616f0597
This commit is contained in:
@@ -26,6 +26,7 @@ import android.graphics.drawable.Drawable
|
||||
import android.graphics.drawable.GradientDrawable
|
||||
import android.graphics.drawable.InsetDrawable
|
||||
import android.graphics.drawable.LayerDrawable
|
||||
import android.graphics.drawable.StateListDrawable
|
||||
import android.util.Log
|
||||
import android.view.GhostView
|
||||
import android.view.View
|
||||
@@ -341,6 +342,10 @@ open class GhostedViewLaunchAnimatorController @JvmOverloads constructor(
|
||||
}
|
||||
}
|
||||
|
||||
if (drawable is StateListDrawable) {
|
||||
return findGradientDrawable(drawable.current)
|
||||
}
|
||||
|
||||
return null
|
||||
}
|
||||
}
|
||||
|
||||
@@ -27,22 +27,26 @@
|
||||
android:top="3dp"
|
||||
android:right="3dp"
|
||||
android:bottom="3dp">
|
||||
<shape android:shape="oval">
|
||||
<!-- We make the shapes a rounded rectangle instead of an oval so that it can animate -->
|
||||
<!-- properly into an app/dialog. -->
|
||||
<shape android:shape="rectangle">
|
||||
<solid android:color="?androidprv:attr/colorSurface"/>
|
||||
<size
|
||||
android:width="@dimen/keyguard_affordance_width"
|
||||
android:height="@dimen/keyguard_affordance_height"/>
|
||||
android:width="@dimen/keyguard_affordance_fixed_width"
|
||||
android:height="@dimen/keyguard_affordance_fixed_height"/>
|
||||
<corners android:radius="@dimen/keyguard_affordance_fixed_radius"/>
|
||||
</shape>
|
||||
</item>
|
||||
|
||||
<item>
|
||||
<shape android:shape="oval">
|
||||
<shape android:shape="rectangle">
|
||||
<stroke
|
||||
android:color="@color/control_primary_text"
|
||||
android:width="2dp"/>
|
||||
<size
|
||||
android:width="@dimen/keyguard_affordance_width"
|
||||
android:height="@dimen/keyguard_affordance_height"/>
|
||||
android:width="@dimen/keyguard_affordance_fixed_width"
|
||||
android:height="@dimen/keyguard_affordance_fixed_height"/>
|
||||
<corners android:radius="@dimen/keyguard_affordance_fixed_radius"/>
|
||||
</shape>
|
||||
</item>
|
||||
</layer-list>
|
||||
@@ -55,11 +59,12 @@
|
||||
android:top="3dp"
|
||||
android:right="3dp"
|
||||
android:bottom="3dp">
|
||||
<shape android:shape="oval">
|
||||
<shape android:shape="rectangle">
|
||||
<solid android:color="?androidprv:attr/colorSurface"/>
|
||||
<size
|
||||
android:width="@dimen/keyguard_affordance_width"
|
||||
android:height="@dimen/keyguard_affordance_height"/>
|
||||
android:width="@dimen/keyguard_affordance_fixed_width"
|
||||
android:height="@dimen/keyguard_affordance_fixed_height"/>
|
||||
<corners android:radius="@dimen/keyguard_affordance_fixed_radius"/>
|
||||
</shape>
|
||||
</item>
|
||||
</layer-list>
|
||||
|
||||
@@ -30,10 +30,6 @@
|
||||
<!-- Margin on the left side of the carrier text on Keyguard -->
|
||||
<dimen name="keyguard_carrier_text_margin">24dp</dimen>
|
||||
|
||||
<!-- The width/height of the phone/camera/unlock icon on keyguard. -->
|
||||
<dimen name="keyguard_affordance_height">80dp</dimen>
|
||||
<dimen name="keyguard_affordance_width">120dp</dimen>
|
||||
|
||||
<!-- Screen pinning request width -->
|
||||
<dimen name="screen_pinning_request_width">400dp</dimen>
|
||||
<!-- Screen pinning request bottom button circle widths -->
|
||||
|
||||
@@ -762,12 +762,10 @@
|
||||
<dimen name="go_to_full_shade_appearing_translation">200dp</dimen>
|
||||
|
||||
<!-- The width/height of the keyguard bottom area icon view on keyguard. -->
|
||||
<dimen name="keyguard_affordance_height">48dp</dimen>
|
||||
<dimen name="keyguard_affordance_width">48dp</dimen>
|
||||
|
||||
<dimen name="keyguard_affordance_fixed_height">48dp</dimen>
|
||||
<dimen name="keyguard_affordance_fixed_width">48dp</dimen>
|
||||
<dimen name="keyguard_affordance_fixed_radius">24dp</dimen>
|
||||
|
||||
<!-- Amount the button should shake when it's not long-pressed for long enough. -->
|
||||
<dimen name="keyguard_affordance_shake_amplitude">8dp</dimen>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user