diff --git a/.github/preview/sharp/AirplaneModeOnOff.gif b/.github/preview/sharp/AirplaneModeOnOff.gif
new file mode 100644
index 0000000..9b2749f
Binary files /dev/null and b/.github/preview/sharp/AirplaneModeOnOff.gif differ
diff --git a/.github/sample.gif b/.github/sample.gif
index a94a221..b4a9260 100644
Binary files a/.github/sample.gif and b/.github/sample.gif differ
diff --git a/README.md b/README.md
index 1a5bcba..c500bb0 100644
--- a/README.md
+++ b/README.md
@@ -39,7 +39,7 @@ dependencyResolutionManagement {
```gradle
// App level build.gradle
dependencies {
- implementation "com.github.ozgurg:ToggleIconView:2.2.0"
+ implementation "com.github.ozgurg:ToggleIconView:2.3.0"
}
```
@@ -73,21 +73,22 @@ anything you can with `AppCompatImageView`.
### Events
-| Event | Description |
-|------------------------------------------------------------------------|----------------------------------------------------|
+| Event | Description |
+|------------------------------------------------------------------------|-----------------------------------------------------|
| `onCheckedChanged(toggleIconView: ToggleIconView, isChecked: Boolean)` | Triggers when the checked state of the icon changed |
## Built-in icons
_All icons have the same duration and interpolator, but I manually capture their previews; so timings may look different._
-| Preview | Package |
-|------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------|
-| ![](https://raw.githubusercontent.com/ozgurg/ToggleIconView/master/.github/preview/rounded/PlayPause.gif) | [Rounded] PlayPause
`og.android.lib.toggleiconview.rounded.PlayPause` |
-| ![](https://raw.githubusercontent.com/ozgurg/ToggleIconView/master/.github/preview/sharp/PlayPause.gif) | [Sharp] PlayPause
`og.android.lib.toggleiconview.sharp.PlayPause` |
-| ![](https://raw.githubusercontent.com/ozgurg/ToggleIconView/master/.github/preview/rounded/SoundOnOff.gif) | [Rounded] SoundOnOff
`og.android.lib.toggleiconview.rounded.SoundOnOff` |
-| ![](https://raw.githubusercontent.com/ozgurg/ToggleIconView/master/.github/preview/sharp/SoundOnOff.gif) | [Sharp] SoundOnOff
`og.android.lib.toggleiconview.sharp.SoundOnOff` |
-| ![](https://raw.githubusercontent.com/ozgurg/ToggleIconView/master/.github/preview/sharp/FlashOnOff.gif) | [Sharp] FlashOnOff
`og.android.lib.toggleiconview.sharp.FlashOnOff` |
+| Preview | Package |
+|-----------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------|
+| ![](https://raw.githubusercontent.com/ozgurg/ToggleIconView/master/.github/preview/rounded/PlayPause.gif) | [Rounded] PlayPause
`og.android.lib.toggleiconview.rounded.PlayPause` |
+| ![](https://raw.githubusercontent.com/ozgurg/ToggleIconView/master/.github/preview/sharp/PlayPause.gif) | [Sharp] PlayPause
`og.android.lib.toggleiconview.sharp.PlayPause` |
+| ![](https://raw.githubusercontent.com/ozgurg/ToggleIconView/master/.github/preview/rounded/SoundOnOff.gif) | [Rounded] SoundOnOff
`og.android.lib.toggleiconview.rounded.SoundOnOff` |
+| ![](https://raw.githubusercontent.com/ozgurg/ToggleIconView/master/.github/preview/sharp/SoundOnOff.gif) | [Sharp] SoundOnOff
`og.android.lib.toggleiconview.sharp.SoundOnOff` |
+| ![](https://raw.githubusercontent.com/ozgurg/ToggleIconView/master/.github/preview/sharp/FlashOnOff.gif) | [Sharp] FlashOnOff
`og.android.lib.toggleiconview.sharp.FlashOnOff` |
+| ![](https://raw.githubusercontent.com/ozgurg/ToggleIconView/master/.github/preview/sharp/AirplaneModeOnOff.gif) | [Sharp] AirplaneModeOnOff
`og.android.lib.toggleiconview.sharp.AirplaneModeOnOff` |
## How I create my own icon?
diff --git a/lib/build.gradle b/lib/build.gradle
index 8878b13..a11d7c2 100644
--- a/lib/build.gradle
+++ b/lib/build.gradle
@@ -39,7 +39,7 @@ afterEvaluate {
groupId = "com.github.ozgurg"
artifactId = "toggle-icon-view"
- version = "2.2.0"
+ version = "2.3.0"
}
}
}
diff --git a/lib/src/main/java/og/android/lib/toggleiconview/sharp/AirplaneModeOnOff.kt b/lib/src/main/java/og/android/lib/toggleiconview/sharp/AirplaneModeOnOff.kt
new file mode 100644
index 0000000..a5f900f
--- /dev/null
+++ b/lib/src/main/java/og/android/lib/toggleiconview/sharp/AirplaneModeOnOff.kt
@@ -0,0 +1,17 @@
+package og.android.lib.toggleiconview.sharp
+
+import android.content.Context
+import android.util.AttributeSet
+import og.android.lib.toggleiconview.R
+import og.android.lib.toggleiconview.ToggleIconView
+
+class AirplaneModeOnOff @JvmOverloads constructor(
+ context: Context,
+ attrs: AttributeSet? = null,
+ defStyleAttr: Int = 0
+) :
+ ToggleIconView(
+ context, attrs, defStyleAttr,
+ R.drawable.sharp_airplanemode_on_to_off,
+ R.drawable.sharp_airplanemode_off_to_on
+ )
\ No newline at end of file
diff --git a/lib/src/main/res/drawable/rounded_sound_off_to_on.xml b/lib/src/main/res/drawable/rounded_sound_off_to_on.xml
index 48cfa47..22a171e 100755
--- a/lib/src/main/res/drawable/rounded_sound_off_to_on.xml
+++ b/lib/src/main/res/drawable/rounded_sound_off_to_on.xml
@@ -7,7 +7,7 @@
android:viewportWidth="24"
android:viewportHeight="24">
-
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/lib/src/main/res/drawable/sharp_airplanemode_on_to_off.xml b/lib/src/main/res/drawable/sharp_airplanemode_on_to_off.xml
new file mode 100644
index 0000000..3f86320
--- /dev/null
+++ b/lib/src/main/res/drawable/sharp_airplanemode_on_to_off.xml
@@ -0,0 +1,45 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/lib/src/main/res/drawable/sharp_flash_off_to_on.xml b/lib/src/main/res/drawable/sharp_flash_off_to_on.xml
index 761f9c9..33b4115 100644
--- a/lib/src/main/res/drawable/sharp_flash_off_to_on.xml
+++ b/lib/src/main/res/drawable/sharp_flash_off_to_on.xml
@@ -9,15 +9,13 @@
+ android:pathData="M 2 4.27 L 3.27 3 L 3.27 3 L 2 4.27 Z" />
+ android:pathData="M 7 2 L 7 13 L 10 13 L 10 22 L 17 10 L 13 10 L 17 2 Z" />
@@ -44,4 +42,4 @@
android:valueType="pathType" />
-
+
\ No newline at end of file
diff --git a/lib/src/main/res/drawable/sharp_flash_on_to_off.xml b/lib/src/main/res/drawable/sharp_flash_on_to_off.xml
index c3a415e..4cb2a4f 100644
--- a/lib/src/main/res/drawable/sharp_flash_on_to_off.xml
+++ b/lib/src/main/res/drawable/sharp_flash_on_to_off.xml
@@ -9,15 +9,13 @@
+ android:pathData="M 2 4.27 L 3.27 3 L 3.27 3 L 2 4.27 Z" />
+ android:pathData="M 7 2 L 7 13 L 10 13 L 10 22 L 17 10 L 13 10 L 17 2 Z" />
@@ -44,4 +42,4 @@
android:valueType="pathType" />
-
+
\ No newline at end of file
diff --git a/lib/src/main/res/drawable/sharp_sound_off_to_on.xml b/lib/src/main/res/drawable/sharp_sound_off_to_on.xml
index 38a06cd..f1bf5bd 100644
--- a/lib/src/main/res/drawable/sharp_sound_off_to_on.xml
+++ b/lib/src/main/res/drawable/sharp_sound_off_to_on.xml
@@ -7,7 +7,7 @@
android:viewportWidth="24"
android:viewportHeight="24">
-
+
-
+
-
+ tools:ignore="HardcodedText">
-
+ android:layout_height="wrap_content"
+ android:orientation="vertical">
-
+
-
+
-
+
-
+
-
+
-
+
+
-
+
-
-
\ No newline at end of file
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/sample/src/main/res/layout/demo_sharp_airplanemode_on_off.xml b/sample/src/main/res/layout/demo_sharp_airplanemode_on_off.xml
new file mode 100644
index 0000000..6f9679a
--- /dev/null
+++ b/sample/src/main/res/layout/demo_sharp_airplanemode_on_off.xml
@@ -0,0 +1,57 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/sample/src/main/res/values/styles.xml b/sample/src/main/res/values/styles.xml
new file mode 100644
index 0000000..38c48ce
--- /dev/null
+++ b/sample/src/main/res/values/styles.xml
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/shapeshifter/sharp_airplanemode_off_to_on.shapeshifter b/shapeshifter/sharp_airplanemode_off_to_on.shapeshifter
new file mode 100644
index 0000000..973b377
--- /dev/null
+++ b/shapeshifter/sharp_airplanemode_off_to_on.shapeshifter
@@ -0,0 +1,66 @@
+{
+ "version": 1,
+ "layers": {
+ "vectorLayer": {
+ "id": "96",
+ "name": "sharp_airplanemode_off_to_on",
+ "type": "vector",
+ "width": 24,
+ "height": 24,
+ "children": [
+ {
+ "id": "97",
+ "name": "strike",
+ "type": "path",
+ "pathData": "M 2 4.27 L 3.27 3 L 3.27 3 L 2 4.27 Z",
+ "fillColor": "#ff000000"
+ },
+ {
+ "id": "98",
+ "name": "mask",
+ "type": "mask",
+ "pathData": "M 0 0 L 24 0 L 24 24 L 0 24 L 0 0 Z M 4.54 1.73 L 3.27 3 L 3.27 3 L 4.54 1.73 Z"
+ },
+ {
+ "id": "99",
+ "name": "icon",
+ "type": "path",
+ "pathData": "M 22 16 L 22 14 L 13.5 9 L 13.5 3.5 C 13.5 2.67 12.83 2 12 2 C 11.17 2 10.5 2.67 10.5 3.5 L 10.5 9 L 2 14 L 2 16 L 10.5 13.5 L 10.5 19 L 8 20.5 L 8 22 L 12 21 L 16 22 L 16 20.5 L 13.5 19 L 13.5 13.5 L 22 16 Z",
+ "fillColor": "#ff000000"
+ }
+ ]
+ },
+ "hiddenLayerIds": []
+ },
+ "timeline": {
+ "animation": {
+ "id": "100",
+ "name": "anim",
+ "duration": 200,
+ "blocks": [
+ {
+ "id": "101",
+ "layerId": "97",
+ "propertyName": "pathData",
+ "startTime": 0,
+ "endTime": 200,
+ "interpolator": "FAST_OUT_SLOW_IN",
+ "type": "path",
+ "fromValue": "M 19.73 22 L 21 20.73 L 3.27 3 L 2 4.27 Z",
+ "toValue": "M 2 4.27 L 3.27 3 L 3.27 3 L 2 4.27 Z"
+ },
+ {
+ "id": "102",
+ "layerId": "98",
+ "propertyName": "pathData",
+ "startTime": 0,
+ "endTime": 200,
+ "interpolator": "FAST_OUT_SLOW_IN",
+ "type": "path",
+ "fromValue": "M 0 0 L 24 0 L 24 24 L 0 24 L 0 0 Z M 4.54 1.73 L 3.27 3 L 21 20.73 L 22.27 19.46 Z",
+ "toValue": "M 0 0 L 24 0 L 24 24 L 0 24 L 0 0 Z M 4.54 1.73 L 3.27 3 L 3.27 3 L 4.54 1.73 Z"
+ }
+ ]
+ }
+ }
+}
\ No newline at end of file
diff --git a/shapeshifter/sharp_airplanemode_on_to_off.shapeshifter b/shapeshifter/sharp_airplanemode_on_to_off.shapeshifter
new file mode 100644
index 0000000..2d172bf
--- /dev/null
+++ b/shapeshifter/sharp_airplanemode_on_to_off.shapeshifter
@@ -0,0 +1,66 @@
+{
+ "version": 1,
+ "layers": {
+ "vectorLayer": {
+ "id": "96",
+ "name": "sharp_airplanemode_on_to_off",
+ "type": "vector",
+ "width": 24,
+ "height": 24,
+ "children": [
+ {
+ "id": "97",
+ "name": "strike",
+ "type": "path",
+ "pathData": "M 2 4.27 L 3.27 3 L 3.27 3 L 2 4.27 Z",
+ "fillColor": "#ff000000"
+ },
+ {
+ "id": "98",
+ "name": "mask",
+ "type": "mask",
+ "pathData": "M 0 0 L 24 0 L 24 24 L 0 24 L 0 0 Z M 4.54 1.73 L 3.27 3 L 3.27 3 L 4.54 1.73 Z"
+ },
+ {
+ "id": "99",
+ "name": "icon",
+ "type": "path",
+ "pathData": "M 22 16 L 22 14 L 13.5 9 L 13.5 3.5 C 13.5 2.67 12.83 2 12 2 C 11.17 2 10.5 2.67 10.5 3.5 L 10.5 9 L 2 14 L 2 16 L 10.5 13.5 L 10.5 19 L 8 20.5 L 8 22 L 12 21 L 16 22 L 16 20.5 L 13.5 19 L 13.5 13.5 L 22 16 Z",
+ "fillColor": "#ff000000"
+ }
+ ]
+ },
+ "hiddenLayerIds": []
+ },
+ "timeline": {
+ "animation": {
+ "id": "100",
+ "name": "anim",
+ "duration": 200,
+ "blocks": [
+ {
+ "id": "101",
+ "layerId": "97",
+ "propertyName": "pathData",
+ "startTime": 0,
+ "endTime": 200,
+ "interpolator": "FAST_OUT_SLOW_IN",
+ "type": "path",
+ "fromValue": "M 2 4.27 L 3.27 3 L 3.27 3 L 2 4.27 Z",
+ "toValue": "M 19.73 22 L 21 20.73 L 3.27 3 L 2 4.27 Z"
+ },
+ {
+ "id": "102",
+ "layerId": "98",
+ "propertyName": "pathData",
+ "startTime": 0,
+ "endTime": 200,
+ "interpolator": "FAST_OUT_SLOW_IN",
+ "type": "path",
+ "fromValue": "M 0 0 L 24 0 L 24 24 L 0 24 L 0 0 Z M 4.54 1.73 L 3.27 3 L 3.27 3 L 4.54 1.73 Z",
+ "toValue": "M 0 0 L 24 0 L 24 24 L 0 24 L 0 0 Z M 4.54 1.73 L 3.27 3 L 21 20.73 L 22.27 19.46 Z"
+ }
+ ]
+ }
+ }
+}
\ No newline at end of file
diff --git a/shapeshifter/sharp_flash_off_to_on.shapeshifter b/shapeshifter/sharp_flash_off_to_on.shapeshifter
new file mode 100644
index 0000000..a3179b8
--- /dev/null
+++ b/shapeshifter/sharp_flash_off_to_on.shapeshifter
@@ -0,0 +1,66 @@
+{
+ "version": 1,
+ "layers": {
+ "vectorLayer": {
+ "id": "17167",
+ "name": "sharp_flash_off_to_on",
+ "type": "vector",
+ "width": 24,
+ "height": 24,
+ "children": [
+ {
+ "id": "17168",
+ "name": "strike",
+ "type": "path",
+ "pathData": "M 2 4.27 L 3.27 3 L 3.27 3 L 2 4.27 Z",
+ "fillColor": "#ff000000"
+ },
+ {
+ "id": "17169",
+ "name": "mask",
+ "type": "mask",
+ "pathData": "M 0 0 L 24 0 L 24 24 L 0 24 L 0 0 Z M 4.54 1.73 L 3.27 3 L 3.27 3 L 4.54 1.73 Z"
+ },
+ {
+ "id": "17170",
+ "name": "icon",
+ "type": "path",
+ "pathData": "M 7 2 L 7 13 L 10 13 L 10 22 L 17 10 L 13 10 L 17 2 Z",
+ "fillColor": "#ff000000"
+ }
+ ]
+ },
+ "hiddenLayerIds": []
+ },
+ "timeline": {
+ "animation": {
+ "id": "17171",
+ "name": "anim",
+ "duration": 200,
+ "blocks": [
+ {
+ "id": "17172",
+ "layerId": "17168",
+ "propertyName": "pathData",
+ "startTime": 0,
+ "endTime": 200,
+ "interpolator": "FAST_OUT_SLOW_IN",
+ "type": "path",
+ "fromValue": "M 19.73 22 L 21 20.73 L 3.27 3 L 2 4.27 Z",
+ "toValue": "M 2 4.27 L 3.27 3 L 3.27 3 L 2 4.27 Z"
+ },
+ {
+ "id": "17173",
+ "layerId": "17169",
+ "propertyName": "pathData",
+ "startTime": 0,
+ "endTime": 200,
+ "interpolator": "FAST_OUT_SLOW_IN",
+ "type": "path",
+ "fromValue": "M 0 0 L 24 0 L 24 24 L 0 24 L 0 0 Z M 4.54 1.73 L 3.27 3 L 21 20.73 L 22.27 19.46 Z",
+ "toValue": "M 0 0 L 24 0 L 24 24 L 0 24 L 0 0 Z M 4.54 1.73 L 3.27 3 L 3.27 3 L 4.54 1.73 Z"
+ }
+ ]
+ }
+ }
+}
\ No newline at end of file
diff --git a/shapeshifter/sharp_flash_on_to_off.shapeshifter b/shapeshifter/sharp_flash_on_to_off.shapeshifter
new file mode 100644
index 0000000..359d5ea
--- /dev/null
+++ b/shapeshifter/sharp_flash_on_to_off.shapeshifter
@@ -0,0 +1,66 @@
+{
+ "version": 1,
+ "layers": {
+ "vectorLayer": {
+ "id": "91",
+ "name": "sharp_flash_on_to_off",
+ "type": "vector",
+ "width": 24,
+ "height": 24,
+ "children": [
+ {
+ "id": "92",
+ "name": "strike",
+ "type": "path",
+ "pathData": "M 2 4.27 L 3.27 3 L 3.27 3 L 2 4.27 Z",
+ "fillColor": "#ff000000"
+ },
+ {
+ "id": "93",
+ "name": "mask",
+ "type": "mask",
+ "pathData": "M 0 0 L 24 0 L 24 24 L 0 24 L 0 0 Z M 4.54 1.73 L 3.27 3 L 3.27 3 L 4.54 1.73 Z"
+ },
+ {
+ "id": "94",
+ "name": "icon",
+ "type": "path",
+ "pathData": "M 7 2 L 7 13 L 10 13 L 10 22 L 17 10 L 13 10 L 17 2 Z",
+ "fillColor": "#ff000000"
+ }
+ ]
+ },
+ "hiddenLayerIds": []
+ },
+ "timeline": {
+ "animation": {
+ "id": "95",
+ "name": "anim",
+ "duration": 200,
+ "blocks": [
+ {
+ "id": "96",
+ "layerId": "92",
+ "propertyName": "pathData",
+ "startTime": 0,
+ "endTime": 200,
+ "interpolator": "FAST_OUT_SLOW_IN",
+ "type": "path",
+ "fromValue": "M 2 4.27 L 3.27 3 L 3.27 3 L 2 4.27 Z",
+ "toValue": "M 19.73 22 L 21 20.73 L 3.27 3 L 2 4.27 Z"
+ },
+ {
+ "id": "97",
+ "layerId": "93",
+ "propertyName": "pathData",
+ "startTime": 0,
+ "endTime": 200,
+ "interpolator": "FAST_OUT_SLOW_IN",
+ "type": "path",
+ "fromValue": "M 0 0 L 24 0 L 24 24 L 0 24 L 0 0 Z M 4.54 1.73 L 3.27 3 L 3.27 3 L 4.54 1.73 Z",
+ "toValue": "M 0 0 L 24 0 L 24 24 L 0 24 L 0 0 Z M 4.54 1.73 L 3.27 3 L 21 20.73 L 22.27 19.46 Z"
+ }
+ ]
+ }
+ }
+}
\ No newline at end of file
diff --git a/shapeshifter/sharp_pause_to_play.shapeshifter b/shapeshifter/sharp_pause_to_play.shapeshifter
new file mode 100644
index 0000000..d8ee9eb
--- /dev/null
+++ b/shapeshifter/sharp_pause_to_play.shapeshifter
@@ -0,0 +1,62 @@
+{
+ "version": 1,
+ "layers": {
+ "vectorLayer": {
+ "id": "20375",
+ "name": "sharp_pause_to_play",
+ "type": "vector",
+ "width": 24,
+ "height": 24,
+ "children": [
+ {
+ "id": "20376",
+ "name": "icon",
+ "type": "group",
+ "pivotX": 12,
+ "pivotY": 12,
+ "children": [
+ {
+ "id": "20377",
+ "name": "path",
+ "type": "path",
+ "pathData": "M 8 5 L 8 19 L 19 12 Z",
+ "fillColor": "#000000"
+ }
+ ]
+ }
+ ]
+ },
+ "hiddenLayerIds": []
+ },
+ "timeline": {
+ "animation": {
+ "id": "20378",
+ "name": "anim",
+ "duration": 200,
+ "blocks": [
+ {
+ "id": "20379",
+ "layerId": "20377",
+ "propertyName": "pathData",
+ "startTime": 0,
+ "endTime": 200,
+ "interpolator": "FAST_OUT_SLOW_IN",
+ "type": "path",
+ "fromValue": "M 5 6 L 5 10 L 19 10 L 19 6 L 5 6 M 5 14 L 5 18 L 19 18 L 19 14 L 5 14",
+ "toValue": "M 8 5 L 8 12 L 19 12 L 19 12 L 8 5 M 8 12 L 8 19 L 19 12 L 19 12 L 8 12"
+ },
+ {
+ "id": "20380",
+ "layerId": "20376",
+ "propertyName": "rotation",
+ "startTime": 0,
+ "endTime": 200,
+ "interpolator": "FAST_OUT_SLOW_IN",
+ "type": "number",
+ "fromValue": 90,
+ "toValue": 0
+ }
+ ]
+ }
+ }
+}
\ No newline at end of file
diff --git a/shapeshifter/sharp_play_to_pause.shapeshifter b/shapeshifter/sharp_play_to_pause.shapeshifter
new file mode 100644
index 0000000..5e0c40f
--- /dev/null
+++ b/shapeshifter/sharp_play_to_pause.shapeshifter
@@ -0,0 +1,62 @@
+{
+ "version": 1,
+ "layers": {
+ "vectorLayer": {
+ "id": "26418",
+ "name": "sharp_play_to_pause",
+ "type": "vector",
+ "width": 24,
+ "height": 24,
+ "children": [
+ {
+ "id": "26419",
+ "name": "icon",
+ "type": "group",
+ "pivotX": 12,
+ "pivotY": 12,
+ "children": [
+ {
+ "id": "26420",
+ "name": "path",
+ "type": "path",
+ "pathData": "M 8 5 L 8 19 L 19 12 Z",
+ "fillColor": "#000000"
+ }
+ ]
+ }
+ ]
+ },
+ "hiddenLayerIds": []
+ },
+ "timeline": {
+ "animation": {
+ "id": "26421",
+ "name": "anim",
+ "duration": 200,
+ "blocks": [
+ {
+ "id": "26422",
+ "layerId": "26420",
+ "propertyName": "pathData",
+ "startTime": 0,
+ "endTime": 200,
+ "interpolator": "FAST_OUT_SLOW_IN",
+ "type": "path",
+ "fromValue": "M 8 5 L 8 12 L 19 12 L 19 12 L 8 5 M 8 12 L 8 19 L 19 12 L 19 12 L 8 12",
+ "toValue": "M 5 6 L 5 10 L 19 10 L 19 6 L 5 6 M 5 14 L 5 18 L 19 18 L 19 14 L 5 14"
+ },
+ {
+ "id": "26423",
+ "layerId": "26419",
+ "propertyName": "rotation",
+ "startTime": 0,
+ "endTime": 200,
+ "interpolator": "FAST_OUT_SLOW_IN",
+ "type": "number",
+ "fromValue": 0,
+ "toValue": 90
+ }
+ ]
+ }
+ }
+}
\ No newline at end of file
diff --git a/shapeshifter/sharp_sound_off_to_on.shapeshifter b/shapeshifter/sharp_sound_off_to_on.shapeshifter
new file mode 100644
index 0000000..161c05b
--- /dev/null
+++ b/shapeshifter/sharp_sound_off_to_on.shapeshifter
@@ -0,0 +1,66 @@
+{
+ "version": 1,
+ "layers": {
+ "vectorLayer": {
+ "id": "96",
+ "name": "sharp_sound_off_to_on",
+ "type": "vector",
+ "width": 24,
+ "height": 24,
+ "children": [
+ {
+ "id": "97",
+ "name": "strike",
+ "type": "path",
+ "pathData": "M 2 4.27 L 3.27 3 L 3.27 3 L 2 4.27 Z",
+ "fillColor": "#ff000000"
+ },
+ {
+ "id": "98",
+ "name": "mask",
+ "type": "mask",
+ "pathData": "M 0 0 L 24 0 L 24 24 L 0 24 L 0 0 Z M 4.54 1.73 L 3.27 3 L 3.27 3 L 4.54 1.73 Z"
+ },
+ {
+ "id": "99",
+ "name": "icon",
+ "type": "path",
+ "pathData": "M 3 9 L 3 15 L 7 15 L 12 20 L 12 4 L 7 9 L 3 9 Z M 16.5 12 C 16.5 10.23 15.48 8.71 14 7.97 L 14 16.02 C 15.48 15.29 16.5 13.77 16.5 12 Z M 14 3.23 L 14 5.29 C 16.89 6.15 19 8.83 19 12 C 19 15.17 16.89 17.85 14 18.71 L 14 20.77 C 18.01 19.86 21 16.28 21 12 C 21 7.72 18.01 4.14 14 3.23 Z",
+ "fillColor": "#ff000000"
+ }
+ ]
+ },
+ "hiddenLayerIds": []
+ },
+ "timeline": {
+ "animation": {
+ "id": "100",
+ "name": "anim",
+ "duration": 200,
+ "blocks": [
+ {
+ "id": "101",
+ "layerId": "97",
+ "propertyName": "pathData",
+ "startTime": 0,
+ "endTime": 200,
+ "interpolator": "FAST_OUT_SLOW_IN",
+ "type": "path",
+ "fromValue": "M 19.73 22 L 21 20.73 L 3.27 3 L 2 4.27 Z",
+ "toValue": "M 2 4.27 L 3.27 3 L 3.27 3 L 2 4.27 Z"
+ },
+ {
+ "id": "102",
+ "layerId": "98",
+ "propertyName": "pathData",
+ "startTime": 0,
+ "endTime": 200,
+ "interpolator": "FAST_OUT_SLOW_IN",
+ "type": "path",
+ "fromValue": "M 0 0 L 24 0 L 24 24 L 0 24 L 0 0 Z M 4.54 1.73 L 3.27 3 L 21 20.73 L 22.27 19.46 Z",
+ "toValue": "M 0 0 L 24 0 L 24 24 L 0 24 L 0 0 Z M 4.54 1.73 L 3.27 3 L 3.27 3 L 4.54 1.73 Z"
+ }
+ ]
+ }
+ }
+}
\ No newline at end of file
diff --git a/shapeshifter/sharp_sound_on_to_off.shapeshifter b/shapeshifter/sharp_sound_on_to_off.shapeshifter
new file mode 100644
index 0000000..f1d5bc0
--- /dev/null
+++ b/shapeshifter/sharp_sound_on_to_off.shapeshifter
@@ -0,0 +1,66 @@
+{
+ "version": 1,
+ "layers": {
+ "vectorLayer": {
+ "id": "96",
+ "name": "sharp_sound_on_to_off",
+ "type": "vector",
+ "width": 24,
+ "height": 24,
+ "children": [
+ {
+ "id": "97",
+ "name": "strike",
+ "type": "path",
+ "pathData": "M 2 4.27 L 3.27 3 L 3.27 3 L 2 4.27 Z",
+ "fillColor": "#ff000000"
+ },
+ {
+ "id": "98",
+ "name": "mask",
+ "type": "mask",
+ "pathData": "M 0 0 L 24 0 L 24 24 L 0 24 L 0 0 Z M 4.54 1.73 L 3.27 3 L 3.27 3 L 4.54 1.73 Z"
+ },
+ {
+ "id": "99",
+ "name": "icon",
+ "type": "path",
+ "pathData": "M 3 9 L 3 15 L 7 15 L 12 20 L 12 4 L 7 9 L 3 9 Z M 16.5 12 C 16.5 10.23 15.48 8.71 14 7.97 L 14 16.02 C 15.48 15.29 16.5 13.77 16.5 12 Z M 14 3.23 L 14 5.29 C 16.89 6.15 19 8.83 19 12 C 19 15.17 16.89 17.85 14 18.71 L 14 20.77 C 18.01 19.86 21 16.28 21 12 C 21 7.72 18.01 4.14 14 3.23 Z",
+ "fillColor": "#ff000000"
+ }
+ ]
+ },
+ "hiddenLayerIds": []
+ },
+ "timeline": {
+ "animation": {
+ "id": "100",
+ "name": "anim",
+ "duration": 200,
+ "blocks": [
+ {
+ "id": "101",
+ "layerId": "97",
+ "propertyName": "pathData",
+ "startTime": 0,
+ "endTime": 200,
+ "interpolator": "FAST_OUT_SLOW_IN",
+ "type": "path",
+ "fromValue": "M 2 4.27 L 3.27 3 L 3.27 3 L 2 4.27 Z",
+ "toValue": "M 19.73 22 L 21 20.73 L 3.27 3 L 2 4.27 Z"
+ },
+ {
+ "id": "102",
+ "layerId": "98",
+ "propertyName": "pathData",
+ "startTime": 0,
+ "endTime": 200,
+ "interpolator": "FAST_OUT_SLOW_IN",
+ "type": "path",
+ "fromValue": "M 0 0 L 24 0 L 24 24 L 0 24 L 0 0 Z M 4.54 1.73 L 3.27 3 L 3.27 3 L 4.54 1.73 Z",
+ "toValue": "M 0 0 L 24 0 L 24 24 L 0 24 L 0 0 Z M 4.54 1.73 L 3.27 3 L 21 20.73 L 22.27 19.46 Z"
+ }
+ ]
+ }
+ }
+}
\ No newline at end of file