Mike Digman | 7d09277 | 2018-01-11 12:10:32 -0800 | [diff] [blame] | 1 | <?xml version="1.0" encoding="utf-8"?> |
| 2 | <!-- |
| 3 | Copyright (C) 2017 The Android Open Source Project |
| 4 | |
| 5 | Licensed under the Apache License, Version 2.0 (the "License"); |
| 6 | you may not use this file except in compliance with the License. |
| 7 | You may obtain a copy of the License at |
| 8 | |
| 9 | http://www.apache.org/licenses/LICENSE-2.0 |
| 10 | |
| 11 | Unless required by applicable law or agreed to in writing, software |
| 12 | distributed under the License is distributed on an "AS IS" BASIS, |
| 13 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| 14 | See the License for the specific language governing permissions and |
| 15 | limitations under the License. |
| 16 | --> |
Mike Digman | 1e28a5a | 2018-02-14 10:49:19 -0800 | [diff] [blame] | 17 | <animated-vector xmlns:android="http://schemas.android.com/apk/res/android" xmlns:aapt="http://schemas.android.com/aapt"> |
Mike Digman | 7d09277 | 2018-01-11 12:10:32 -0800 | [diff] [blame] | 18 | <aapt:attr name="android:drawable"> |
Mike Digman | 1e28a5a | 2018-02-14 10:49:19 -0800 | [diff] [blame] | 19 | <vector android:name="root" |
Mike Digman | f77fb91 | 2018-05-21 11:21:30 -0700 | [diff] [blame] | 20 | android:width="21dp" |
| 21 | android:height="21dp" |
Mike Digman | 1e28a5a | 2018-02-14 10:49:19 -0800 | [diff] [blame] | 22 | android:viewportWidth="24.0" |
| 23 | android:viewportHeight="24.0"> |
Mike Digman | c038c32 | 2018-05-24 11:06:05 -0700 | [diff] [blame] | 24 | <!-- Use scaleX to flip icon so arrows always point in the direction of motion --> |
| 25 | <group android:name="icon" android:pivotX="12" android:pivotY="12" |
| 26 | android:scaleX="?attr/rotateButtonScaleX"> |
Mike Digman | 1e28a5a | 2018-02-14 10:49:19 -0800 | [diff] [blame] | 27 | <!-- Tint color to be set directly --> |
| 28 | <path android:fillColor="#FFFFFFFF" |
Mike Digman | c038c32 | 2018-05-24 11:06:05 -0700 | [diff] [blame] | 29 | android:pathData="M19,12c0,1.72 -0.63,3.3 -1.66,4.52l-1.44,-1.44C16.58,14.23 17,13.17 17,12c0,-2.76 -2.24,-5 -5,-5c-0.06,0 -0.11,0.01 -0.17,0.01l1.08,1.08L11.5,9.5L8,6l3.5,-3.5l1.41,1.42l-1.09,1.09C11.88,5.01 11.94,5 12,5C15.87,5 19,8.13 19,12zM12.5,14.51l-1.41,1.41l1.06,1.06C12.1,16.99 12.05,17 12,17c-2.76,0 -5,-2.24 -5,-5c0,-1.17 0.42,-2.23 1.09,-3.08L6.66,7.48C5.62,8.7 5,10.28 5,12c0,3.87 3.13,7 7,7c0.06,0 0.13,-0.01 0.19,-0.01v0l-1.1,1.1l1.41,1.41L16,18L12.5,14.51z"/> |
Mike Digman | 7d09277 | 2018-01-11 12:10:32 -0800 | [diff] [blame] | 30 | </group> |
Mike Digman | 7d09277 | 2018-01-11 12:10:32 -0800 | [diff] [blame] | 31 | </vector> |
| 32 | </aapt:attr> |
| 33 | |
Mike Digman | d13e43b | 2018-05-21 11:23:56 -0700 | [diff] [blame] | 34 | <!-- Repeat all animations 5 times but don't fade out at the end --> |
Mike Digman | 1e28a5a | 2018-02-14 10:49:19 -0800 | [diff] [blame] | 35 | <target android:name="root"> |
Mike Digman | 7d09277 | 2018-01-11 12:10:32 -0800 | [diff] [blame] | 36 | <aapt:attr name="android:animation"> |
Mike Digman | 1e28a5a | 2018-02-14 10:49:19 -0800 | [diff] [blame] | 37 | <set android:ordering="sequentially"> |
| 38 | <!-- Linear fade in--> |
| 39 | <objectAnimator android:propertyName="alpha" |
| 40 | android:duration="100" |
| 41 | android:valueFrom="0" |
| 42 | android:valueTo="1" |
| 43 | android:interpolator="@android:anim/linear_interpolator" /> |
| 44 | <!-- Linear fade out --> |
| 45 | <objectAnimator android:propertyName="alpha" |
| 46 | android:duration="100" |
| 47 | android:startOffset="1700" |
| 48 | android:valueFrom="1" |
| 49 | android:valueTo="0" |
| 50 | android:interpolator="@android:anim/linear_interpolator"/> |
| 51 | <!-- Linear fade in--> |
| 52 | <objectAnimator android:propertyName="alpha" |
| 53 | android:duration="100" |
| 54 | android:startOffset="100" |
| 55 | android:valueFrom="0" |
| 56 | android:valueTo="1" |
| 57 | android:interpolator="@android:anim/linear_interpolator" /> |
| 58 | <!-- Linear fade out --> |
| 59 | <objectAnimator android:propertyName="alpha" |
| 60 | android:duration="100" |
| 61 | android:startOffset="1700" |
| 62 | android:valueFrom="1" |
| 63 | android:valueTo="0" |
| 64 | android:interpolator="@android:anim/linear_interpolator"/> |
| 65 | <!-- Linear fade in--> |
| 66 | <objectAnimator android:propertyName="alpha" |
| 67 | android:duration="100" |
| 68 | android:startOffset="100" |
| 69 | android:valueFrom="0" |
| 70 | android:valueTo="1" |
| 71 | android:interpolator="@android:anim/linear_interpolator" /> |
Mike Digman | d13e43b | 2018-05-21 11:23:56 -0700 | [diff] [blame] | 72 | <!-- Linear fade out --> |
| 73 | <objectAnimator android:propertyName="alpha" |
| 74 | android:duration="100" |
| 75 | android:startOffset="1700" |
| 76 | android:valueFrom="1" |
| 77 | android:valueTo="0" |
| 78 | android:interpolator="@android:anim/linear_interpolator"/> |
| 79 | <!-- Linear fade in--> |
| 80 | <objectAnimator android:propertyName="alpha" |
| 81 | android:duration="100" |
| 82 | android:startOffset="100" |
| 83 | android:valueFrom="0" |
| 84 | android:valueTo="1" |
| 85 | android:interpolator="@android:anim/linear_interpolator" /> |
| 86 | <!-- Linear fade out --> |
| 87 | <objectAnimator android:propertyName="alpha" |
| 88 | android:duration="100" |
| 89 | android:startOffset="1700" |
| 90 | android:valueFrom="1" |
| 91 | android:valueTo="0" |
| 92 | android:interpolator="@android:anim/linear_interpolator"/> |
| 93 | <!-- Linear fade in--> |
| 94 | <objectAnimator android:propertyName="alpha" |
| 95 | android:duration="100" |
| 96 | android:startOffset="100" |
| 97 | android:valueFrom="0" |
| 98 | android:valueTo="1" |
| 99 | android:interpolator="@android:anim/linear_interpolator" /> |
Mike Digman | 7d09277 | 2018-01-11 12:10:32 -0800 | [diff] [blame] | 100 | </set> |
| 101 | </aapt:attr> |
| 102 | </target> |
Mike Digman | 1e28a5a | 2018-02-14 10:49:19 -0800 | [diff] [blame] | 103 | <target android:name="icon"> |
Mike Digman | 7d09277 | 2018-01-11 12:10:32 -0800 | [diff] [blame] | 104 | <aapt:attr name="android:animation"> |
Mike Digman | 1e28a5a | 2018-02-14 10:49:19 -0800 | [diff] [blame] | 105 | <set android:ordering="sequentially"> |
| 106 | <!-- Icon rotation with start timing offset after fade in --> |
| 107 | <objectAnimator android:propertyName="rotation" |
| 108 | android:startOffset="100" |
| 109 | android:duration="600" |
| 110 | android:valueFrom="?attr/rotateButtonStartAngle" |
| 111 | android:valueTo="?attr/rotateButtonEndAngle"> |
Mike Digman | 7d09277 | 2018-01-11 12:10:32 -0800 | [diff] [blame] | 112 | <aapt:attr name="android:interpolator"> |
Mike Digman | 1e28a5a | 2018-02-14 10:49:19 -0800 | [diff] [blame] | 113 | <pathInterpolator android:pathData="M 0.0,0.0 c0.408,1.181 0.674,1.08 1.0,1.0"/> |
Mike Digman | 7d09277 | 2018-01-11 12:10:32 -0800 | [diff] [blame] | 114 | </aapt:attr> |
| 115 | </objectAnimator> |
Mike Digman | 7d09277 | 2018-01-11 12:10:32 -0800 | [diff] [blame] | 116 | |
Mike Digman | 1e28a5a | 2018-02-14 10:49:19 -0800 | [diff] [blame] | 117 | <!-- Reset rotation position for fade in --> |
| 118 | <objectAnimator android:propertyName="rotation" |
| 119 | android:startOffset="1300" |
| 120 | android:duration="100" |
| 121 | android:valueFrom="?attr/rotateButtonStartAngle" |
| 122 | android:valueTo="?attr/rotateButtonStartAngle"/> |
Mike Digman | 7d09277 | 2018-01-11 12:10:32 -0800 | [diff] [blame] | 123 | |
Mike Digman | 1e28a5a | 2018-02-14 10:49:19 -0800 | [diff] [blame] | 124 | <!-- Icon rotation with start timing offset after fade in --> |
| 125 | <objectAnimator android:propertyName="rotation" |
| 126 | android:duration="600" |
| 127 | android:valueFrom="?attr/rotateButtonStartAngle" |
| 128 | android:valueTo="?attr/rotateButtonEndAngle"> |
Mike Digman | 7d09277 | 2018-01-11 12:10:32 -0800 | [diff] [blame] | 129 | <aapt:attr name="android:interpolator"> |
Mike Digman | 1e28a5a | 2018-02-14 10:49:19 -0800 | [diff] [blame] | 130 | <pathInterpolator android:pathData="M 0.0,0.0 c0.408,1.181 0.674,1.08 1.0,1.0"/> |
Mike Digman | 7d09277 | 2018-01-11 12:10:32 -0800 | [diff] [blame] | 131 | </aapt:attr> |
| 132 | </objectAnimator> |
Mike Digman | 7d09277 | 2018-01-11 12:10:32 -0800 | [diff] [blame] | 133 | |
Mike Digman | 1e28a5a | 2018-02-14 10:49:19 -0800 | [diff] [blame] | 134 | <!-- Reset rotation position for fade in --> |
| 135 | <objectAnimator android:propertyName="rotation" |
| 136 | android:startOffset="1300" |
| 137 | android:duration="100" |
| 138 | android:valueFrom="?attr/rotateButtonStartAngle" |
| 139 | android:valueTo="?attr/rotateButtonStartAngle"/> |
| 140 | |
| 141 | <!-- Icon rotation with start timing offset after fade in --> |
| 142 | <objectAnimator android:propertyName="rotation" |
| 143 | android:duration="600" |
| 144 | android:valueFrom="?attr/rotateButtonStartAngle" |
| 145 | android:valueTo="?attr/rotateButtonEndAngle"> |
Mike Digman | 7d09277 | 2018-01-11 12:10:32 -0800 | [diff] [blame] | 146 | <aapt:attr name="android:interpolator"> |
Mike Digman | 1e28a5a | 2018-02-14 10:49:19 -0800 | [diff] [blame] | 147 | <pathInterpolator android:pathData="M 0.0,0.0 c0.408,1.181 0.674,1.08 1.0,1.0"/> |
Mike Digman | 7d09277 | 2018-01-11 12:10:32 -0800 | [diff] [blame] | 148 | </aapt:attr> |
| 149 | </objectAnimator> |
Mike Digman | d13e43b | 2018-05-21 11:23:56 -0700 | [diff] [blame] | 150 | |
| 151 | <!-- Reset rotation position for fade in --> |
| 152 | <objectAnimator android:propertyName="rotation" |
| 153 | android:startOffset="1300" |
| 154 | android:duration="100" |
| 155 | android:valueFrom="?attr/rotateButtonStartAngle" |
| 156 | android:valueTo="?attr/rotateButtonStartAngle"/> |
| 157 | |
| 158 | <!-- Icon rotation with start timing offset after fade in --> |
| 159 | <objectAnimator android:propertyName="rotation" |
| 160 | android:duration="600" |
| 161 | android:valueFrom="?attr/rotateButtonStartAngle" |
| 162 | android:valueTo="?attr/rotateButtonEndAngle"> |
| 163 | <aapt:attr name="android:interpolator"> |
| 164 | <pathInterpolator android:pathData="M 0.0,0.0 c0.408,1.181 0.674,1.08 1.0,1.0"/> |
| 165 | </aapt:attr> |
| 166 | </objectAnimator> |
| 167 | |
| 168 | <!-- Reset rotation position for fade in --> |
| 169 | <objectAnimator android:propertyName="rotation" |
| 170 | android:startOffset="1300" |
| 171 | android:duration="100" |
| 172 | android:valueFrom="?attr/rotateButtonStartAngle" |
| 173 | android:valueTo="?attr/rotateButtonStartAngle"/> |
| 174 | |
| 175 | <!-- Icon rotation with start timing offset after fade in --> |
| 176 | <objectAnimator android:propertyName="rotation" |
| 177 | android:duration="600" |
| 178 | android:valueFrom="?attr/rotateButtonStartAngle" |
| 179 | android:valueTo="?attr/rotateButtonEndAngle"> |
| 180 | <aapt:attr name="android:interpolator"> |
| 181 | <pathInterpolator android:pathData="M 0.0,0.0 c0.408,1.181 0.674,1.08 1.0,1.0"/> |
| 182 | </aapt:attr> |
| 183 | </objectAnimator> |
Mike Digman | 7d09277 | 2018-01-11 12:10:32 -0800 | [diff] [blame] | 184 | </set> |
| 185 | </aapt:attr> |
| 186 | </target> |
Mike Digman | 7d09277 | 2018-01-11 12:10:32 -0800 | [diff] [blame] | 187 | </animated-vector> |