diff options
Diffstat (limited to 'src/android/app/src/main/res')
19 files changed, 860 insertions, 2 deletions
diff --git a/src/android/app/src/main/res/drawable/button_anim.xml b/src/android/app/src/main/res/drawable/button_anim.xml new file mode 100644 index 000000000..ccdc5ca6a --- /dev/null +++ b/src/android/app/src/main/res/drawable/button_anim.xml @@ -0,0 +1,142 @@ +<animated-vector xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:aapt="http://schemas.android.com/aapt"> + <aapt:attr name="android:drawable"> + <vector + android:width="1000dp" + android:height="1000dp" + android:viewportWidth="1000" + android:viewportHeight="1000"> + <group android:name="_R_G"> + <group + android:name="_R_G_L_0_G" + android:pivotX="100" + android:pivotY="100" + android:scaleX="4.5" + android:scaleY="4.5" + android:translateX="400" + android:translateY="400"> + <path + android:name="_R_G_L_0_G_D_0_P_0" + android:fillAlpha="1" + android:fillColor="?attr/colorSecondaryContainer" + android:fillType="nonZero" + android:pathData=" M198.56 100 C198.56,154.43 154.43,198.56 100,198.56 C45.57,198.56 1.44,154.43 1.44,100 C1.44,45.57 45.57,1.44 100,1.44 C154.43,1.44 198.56,45.57 198.56,100c " /> + <path + android:name="_R_G_L_0_G_D_2_P_0" + android:fillAlpha="0.8" + android:fillColor="?attr/colorOnSecondaryContainer" + android:fillType="nonZero" + android:pathData=" M50.14 151.21 C50.53,150.18 89.6,49.87 90.1,48.63 C90.1,48.63 90.67,47.2 90.67,47.2 C90.67,47.2 101.67,47.2 101.67,47.2 C101.67,47.2 112.67,47.2 112.67,47.2 C112.67,47.2 133.47,99.12 133.47,99.12 C144.91,127.68 154.32,151.17 154.38,151.33 C154.47,151.56 152.2,151.6 143.14,151.55 C143.14,151.55 131.79,151.48 131.79,151.48 C131.79,151.48 127.22,139.57 127.22,139.57 C127.22,139.57 122.65,127.66 122.65,127.66 C122.65,127.66 101.68,127.73 101.68,127.73 C101.68,127.73 80.71,127.8 80.71,127.8 C80.71,127.8 76.38,139.71 76.38,139.71 C76.38,139.71 72.06,151.62 72.06,151.62 C72.06,151.62 61.02,151.62 61.02,151.62 C50.61,151.62 50,151.55 50.14,151.22 C50.14,151.22 50.14,151.21 50.14,151.21c M115.86 110.06 C115.8,109.91 112.55,101.13 108.62,90.56 C104.7,80 101.42,71.43 101.34,71.53 C101.22,71.66 92.84,94.61 87.25,110.06 C87.17,110.29 90.13,110.34 101.56,110.34 C113,110.34 115.95,110.28 115.86,110.06c " /> + </group> + </group> + <group android:name="time_group" /> + </vector> + </aapt:attr> + <target android:name="_R_G_L_0_G"> + <aapt:attr name="android:animation"> + <set android:ordering="together"> + <objectAnimator + android:duration="100" + android:propertyName="scaleX" + android:startOffset="0" + android:valueFrom="4.5" + android:valueTo="3.75" + android:valueType="floatType"> + <aapt:attr name="android:interpolator"> + <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0" /> + </aapt:attr> + </objectAnimator> + <objectAnimator + android:duration="100" + android:propertyName="scaleY" + android:startOffset="0" + android:valueFrom="4.5" + android:valueTo="3.75" + android:valueType="floatType"> + <aapt:attr name="android:interpolator"> + <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0" /> + </aapt:attr> + </objectAnimator> + <objectAnimator + android:duration="234" + android:propertyName="scaleX" + android:startOffset="100" + android:valueFrom="3.75" + android:valueTo="3.75" + android:valueType="floatType"> + <aapt:attr name="android:interpolator"> + <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0" /> + </aapt:attr> + </objectAnimator> + <objectAnimator + android:duration="234" + android:propertyName="scaleY" + android:startOffset="100" + android:valueFrom="3.75" + android:valueTo="3.75" + android:valueType="floatType"> + <aapt:attr name="android:interpolator"> + <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0" /> + </aapt:attr> + </objectAnimator> + <objectAnimator + android:duration="167" + android:propertyName="scaleX" + android:startOffset="334" + android:valueFrom="3.75" + android:valueTo="4.75" + android:valueType="floatType"> + <aapt:attr name="android:interpolator"> + <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0" /> + </aapt:attr> + </objectAnimator> + <objectAnimator + android:duration="167" + android:propertyName="scaleY" + android:startOffset="334" + android:valueFrom="3.75" + android:valueTo="4.75" + android:valueType="floatType"> + <aapt:attr name="android:interpolator"> + <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0" /> + </aapt:attr> + </objectAnimator> + <objectAnimator + android:duration="67" + android:propertyName="scaleX" + android:startOffset="501" + android:valueFrom="4.75" + android:valueTo="4.5" + android:valueType="floatType"> + <aapt:attr name="android:interpolator"> + <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0" /> + </aapt:attr> + </objectAnimator> + <objectAnimator + android:duration="67" + android:propertyName="scaleY" + android:startOffset="501" + android:valueFrom="4.75" + android:valueTo="4.5" + android:valueType="floatType"> + <aapt:attr name="android:interpolator"> + <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0" /> + </aapt:attr> + </objectAnimator> + </set> + </aapt:attr> + </target> + <target android:name="time_group"> + <aapt:attr name="android:animation"> + <set android:ordering="together"> + <objectAnimator + android:duration="1034" + android:propertyName="translateX" + android:startOffset="0" + android:valueFrom="0" + android:valueTo="1" + android:valueType="floatType" /> + </set> + </aapt:attr> + </target> +</animated-vector> diff --git a/src/android/app/src/main/res/drawable/ic_controller_disconnected.xml b/src/android/app/src/main/res/drawable/ic_controller_disconnected.xml new file mode 100644 index 000000000..8e3c66f74 --- /dev/null +++ b/src/android/app/src/main/res/drawable/ic_controller_disconnected.xml @@ -0,0 +1,9 @@ +<vector xmlns:android="http://schemas.android.com/apk/res/android" + android:width="24dp" + android:height="24dp" + android:viewportWidth="960" + android:viewportHeight="960"> + <path + android:fillColor="?attr/colorControlNormal" + android:pathData="M700,480q-25,0 -42.5,-17.5T640,420q0,-25 17.5,-42.5T700,360q25,0 42.5,17.5T760,420q0,25 -17.5,42.5T700,480ZM366,480ZM280,600v-80h-80v-80h80v-80h80v80h80v80h-80v80h-80ZM160,720q-33,0 -56.5,-23.5T80,640v-320q0,-34 24,-57.5t58,-23.5h77l81,81L160,320v320h366L55,169l57,-57 736,736 -57,57 -185,-185L160,720ZM880,640q0,26 -14,46t-37,29l-29,-29v-366L434,320l-80,-80h446q33,0 56.5,23.5T880,320v320ZM617,503Z" /> +</vector> diff --git a/src/android/app/src/main/res/drawable/ic_more_vert.xml b/src/android/app/src/main/res/drawable/ic_more_vert.xml new file mode 100644 index 000000000..9f62ac595 --- /dev/null +++ b/src/android/app/src/main/res/drawable/ic_more_vert.xml @@ -0,0 +1,9 @@ +<vector xmlns:android="http://schemas.android.com/apk/res/android" + android:height="24dp" + android:viewportHeight="24" + android:viewportWidth="24" + android:width="24dp"> + <path + android:fillColor="?attr/colorControlNormal" + android:pathData="M12,8c1.1,0 2,-0.9 2,-2s-0.9,-2 -2,-2 -2,0.9 -2,2 0.9,2 2,2zM12,10c-1.1,0 -2,0.9 -2,2s0.9,2 2,2 2,-0.9 2,-2 -0.9,-2 -2,-2zM12,16c-1.1,0 -2,0.9 -2,2s0.9,2 2,2 2,-0.9 2,-2 -0.9,-2 -2,-2z" /> +</vector> diff --git a/src/android/app/src/main/res/drawable/ic_new_label.xml b/src/android/app/src/main/res/drawable/ic_new_label.xml new file mode 100644 index 000000000..fac562c26 --- /dev/null +++ b/src/android/app/src/main/res/drawable/ic_new_label.xml @@ -0,0 +1,9 @@ +<vector xmlns:android="http://schemas.android.com/apk/res/android" + android:width="24dp" + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + <path + android:fillColor="?attr/colorControlNormal" + android:pathData="M21,12l-4.37,6.16C16.26,18.68 15.65,19 15,19h-3l0,-6H9v-3H3V7c0,-1.1 0.9,-2 2,-2h10c0.65,0 1.26,0.31 1.63,0.84L21,12zM10,15H7v-3H5v3H2v2h3v3h2v-3h3V15z" /> +</vector> diff --git a/src/android/app/src/main/res/drawable/ic_overlay.xml b/src/android/app/src/main/res/drawable/ic_overlay.xml new file mode 100644 index 000000000..c7986c5a2 --- /dev/null +++ b/src/android/app/src/main/res/drawable/ic_overlay.xml @@ -0,0 +1,21 @@ +<vector xmlns:android="http://schemas.android.com/apk/res/android" + android:width="24dp" + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + <path + android:fillColor="?attr/colorControlNormal" + android:pathData="M21,5H3C1.9,5 1,5.9 1,7v10c0,1.1 0.9,2 2,2h18c1.1,0 2,-0.9 2,-2V7C23,5.9 22.1,5 21,5zM18,17H6V7h12V17z" /> + <path + android:fillColor="?attr/colorControlNormal" + android:pathData="M15,11.25h1.5v1.5h-1.5z" /> + <path + android:fillColor="?attr/colorControlNormal" + android:pathData="M12.5,11.25h1.5v1.5h-1.5z" /> + <path + android:fillColor="?attr/colorControlNormal" + android:pathData="M10,11.25h1.5v1.5h-1.5z" /> + <path + android:fillColor="?attr/colorControlNormal" + android:pathData="M7.5,11.25h1.5v1.5h-1.5z" /> +</vector> diff --git a/src/android/app/src/main/res/drawable/ic_share.xml b/src/android/app/src/main/res/drawable/ic_share.xml new file mode 100644 index 000000000..3fc2f3c99 --- /dev/null +++ b/src/android/app/src/main/res/drawable/ic_share.xml @@ -0,0 +1,9 @@ +<vector xmlns:android="http://schemas.android.com/apk/res/android" + android:width="24dp" + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + <path + android:fillColor="?attr/colorControlNormal" + android:pathData="M18,16.08c-0.76,0 -1.44,0.3 -1.96,0.77L8.91,12.7c0.05,-0.23 0.09,-0.46 0.09,-0.7s-0.04,-0.47 -0.09,-0.7l7.05,-4.11c0.54,0.5 1.25,0.81 2.04,0.81 1.66,0 3,-1.34 3,-3s-1.34,-3 -3,-3 -3,1.34 -3,3c0,0.24 0.04,0.47 0.09,0.7L8.04,9.81C7.5,9.31 6.79,9 6,9c-1.66,0 -3,1.34 -3,3s1.34,3 3,3c0.79,0 1.5,-0.31 2.04,-0.81l7.12,4.16c-0.05,0.21 -0.08,0.43 -0.08,0.65 0,1.61 1.31,2.92 2.92,2.92 1.61,0 2.92,-1.31 2.92,-2.92s-1.31,-2.92 -2.92,-2.92z" /> +</vector> diff --git a/src/android/app/src/main/res/drawable/stick_one_direction_anim.xml b/src/android/app/src/main/res/drawable/stick_one_direction_anim.xml new file mode 100644 index 000000000..a1da1316f --- /dev/null +++ b/src/android/app/src/main/res/drawable/stick_one_direction_anim.xml @@ -0,0 +1,118 @@ +<animated-vector xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:aapt="http://schemas.android.com/aapt"> + <aapt:attr name="android:drawable"> + <vector + android:width="1000dp" + android:height="1000dp" + android:viewportWidth="1000" + android:viewportHeight="1000"> + <group android:name="_R_G"> + <group + android:name="_R_G_L_1_G" + android:pivotX="100" + android:pivotY="100" + android:scaleX="5" + android:scaleY="5" + android:translateX="400" + android:translateY="400"> + <path + android:name="_R_G_L_1_G_D_0_P_0" + android:pathData=" M100 199.39 C59.8,199.39 23.56,175.17 8.18,138.04 C-7.2,100.9 1.3,58.15 29.73,29.72 C58.15,1.3 100.9,-7.21 138.04,8.18 C175.18,23.56 199.39,59.8 199.39,100 C199.33,154.87 154.87,199.33 100,199.39c " + android:strokeWidth="1" + android:strokeAlpha="0.6" + android:strokeColor="?attr/colorOutline" + android:strokeLineCap="round" + android:strokeLineJoin="round" /> + </group> + <group + android:name="_R_G_L_0_G_T_1" + android:scaleX="5" + android:scaleY="5" + android:translateX="500" + android:translateY="500"> + <group + android:name="_R_G_L_0_G" + android:translateX="-100" + android:translateY="-100"> + <path + android:name="_R_G_L_0_G_D_0_P_0" + android:fillAlpha="1" + android:fillColor="?attr/colorSecondaryContainer" + android:fillType="nonZero" + android:pathData=" M100.45 28.02 C140.63,28.02 173.2,60.59 173.2,100.77 C173.2,140.95 140.63,173.52 100.45,173.52 C60.27,173.52 27.7,140.95 27.7,100.77 C27.7,60.59 60.27,28.02 100.45,28.02c " /> + <path + android:name="_R_G_L_0_G_D_2_P_0" + android:fillAlpha="0.8" + android:fillColor="?attr/colorOnSecondaryContainer" + android:fillType="nonZero" + android:pathData=" M100.45 50.26 C128.62,50.26 151.46,73.1 151.46,101.28 C151.46,129.45 128.62,152.29 100.45,152.29 C72.27,152.29 49.43,129.45 49.43,101.28 C49.43,73.1 72.27,50.26 100.45,50.26c " /> + </group> + </group> + </group> + <group android:name="time_group" /> + </vector> + </aapt:attr> + <target android:name="_R_G_L_0_G_T_1"> + <aapt:attr name="android:animation"> + <set android:ordering="together"> + <objectAnimator + android:duration="267" + android:pathData="M 500,500C 500,500 364,500 364,500" + android:propertyName="translateXY" + android:propertyXName="translateX" + android:propertyYName="translateY" + android:startOffset="0"> + <aapt:attr name="android:interpolator"> + <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0" /> + </aapt:attr> + </objectAnimator> + <objectAnimator + android:duration="234" + android:pathData="M 364,500C 364,500 364,500 364,500" + android:propertyName="translateXY" + android:propertyXName="translateX" + android:propertyYName="translateY" + android:startOffset="267"> + <aapt:attr name="android:interpolator"> + <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0.333 0.667,0.667 1.0,1.0" /> + </aapt:attr> + </objectAnimator> + <objectAnimator + android:duration="133" + android:pathData="M 364,500C 364,500 525,500 525,500" + android:propertyName="translateXY" + android:propertyXName="translateX" + android:propertyYName="translateY" + android:startOffset="501"> + <aapt:attr name="android:interpolator"> + <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0" /> + </aapt:attr> + </objectAnimator> + <objectAnimator + android:duration="100" + android:pathData="M 525,500C 525,500 500,500 500,500" + android:propertyName="translateXY" + android:propertyXName="translateX" + android:propertyYName="translateY" + android:startOffset="634"> + <aapt:attr name="android:interpolator"> + <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0" /> + </aapt:attr> + </objectAnimator> + </set> + </aapt:attr> + </target> + <target android:name="time_group"> + <aapt:attr name="android:animation"> + <set android:ordering="together"> + <objectAnimator + android:duration="968" + android:propertyName="translateX" + android:startOffset="0" + android:valueFrom="0" + android:valueTo="1" + android:valueType="floatType" /> + </set> + </aapt:attr> + </target> +</animated-vector> diff --git a/src/android/app/src/main/res/drawable/stick_two_direction_anim.xml b/src/android/app/src/main/res/drawable/stick_two_direction_anim.xml new file mode 100644 index 000000000..bc71adcbd --- /dev/null +++ b/src/android/app/src/main/res/drawable/stick_two_direction_anim.xml @@ -0,0 +1,173 @@ +<animated-vector xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:aapt="http://schemas.android.com/aapt"> + <aapt:attr name="android:drawable"> + <vector + android:width="1000dp" + android:height="1000dp" + android:viewportWidth="1000" + android:viewportHeight="1000"> + <group android:name="_R_G"> + <group + android:name="_R_G_L_1_G" + android:pivotX="100" + android:pivotY="100" + android:scaleX="5" + android:scaleY="5" + android:translateX="400" + android:translateY="400"> + <path + android:name="_R_G_L_1_G_D_0_P_0" + android:pathData=" M100 199.39 C59.8,199.39 23.56,175.17 8.18,138.04 C-7.2,100.9 1.3,58.15 29.73,29.72 C58.15,1.3 100.9,-7.21 138.04,8.18 C175.18,23.56 199.39,59.8 199.39,100 C199.33,154.87 154.87,199.33 100,199.39c " + android:strokeWidth="1" + android:strokeAlpha="0.6" + android:strokeColor="?attr/colorOutline" + android:strokeLineCap="round" + android:strokeLineJoin="round" /> + </group> + <group + android:name="_R_G_L_0_G_T_1" + android:scaleX="5" + android:scaleY="5" + android:translateX="500" + android:translateY="500"> + <group + android:name="_R_G_L_0_G" + android:translateX="-100" + android:translateY="-100"> + <path + android:name="_R_G_L_0_G_D_0_P_0" + android:fillAlpha="1" + android:fillColor="?attr/colorSecondaryContainer" + android:fillType="nonZero" + android:pathData=" M100.45 28.02 C140.63,28.02 173.2,60.59 173.2,100.77 C173.2,140.95 140.63,173.52 100.45,173.52 C60.27,173.52 27.7,140.95 27.7,100.77 C27.7,60.59 60.27,28.02 100.45,28.02c " /> + <path + android:name="_R_G_L_0_G_D_2_P_0" + android:fillAlpha="0.8" + android:fillColor="?attr/colorOnSecondaryContainer" + android:fillType="nonZero" + android:pathData=" M100.45 50.26 C128.62,50.26 151.46,73.1 151.46,101.28 C151.46,129.45 128.62,152.29 100.45,152.29 C72.27,152.29 49.43,129.45 49.43,101.28 C49.43,73.1 72.27,50.26 100.45,50.26c " /> + </group> + </group> + </group> + <group android:name="time_group" /> + </vector> + </aapt:attr> + <target android:name="_R_G_L_0_G_T_1"> + <aapt:attr name="android:animation"> + <set android:ordering="together"> + <objectAnimator + android:duration="267" + android:pathData="M 500,500C 500,500 364,500 364,500" + android:propertyName="translateXY" + android:propertyXName="translateX" + android:propertyYName="translateY" + android:startOffset="0"> + <aapt:attr name="android:interpolator"> + <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0" /> + </aapt:attr> + </objectAnimator> + <objectAnimator + android:duration="234" + android:pathData="M 364,500C 364,500 364,500 364,500" + android:propertyName="translateXY" + android:propertyXName="translateX" + android:propertyYName="translateY" + android:startOffset="267"> + <aapt:attr name="android:interpolator"> + <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0.333 0.667,0.667 1.0,1.0" /> + </aapt:attr> + </objectAnimator> + <objectAnimator + android:duration="133" + android:pathData="M 364,500C 364,500 525,500 525,500" + android:propertyName="translateXY" + android:propertyXName="translateX" + android:propertyYName="translateY" + android:startOffset="501"> + <aapt:attr name="android:interpolator"> + <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0" /> + </aapt:attr> + </objectAnimator> + <objectAnimator + android:duration="100" + android:pathData="M 525,500C 525,500 500,500 500,500" + android:propertyName="translateXY" + android:propertyXName="translateX" + android:propertyYName="translateY" + android:startOffset="634"> + <aapt:attr name="android:interpolator"> + <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0" /> + </aapt:attr> + </objectAnimator> + <objectAnimator + android:duration="400" + android:pathData="M 500,500C 500,500 500,500 500,500" + android:propertyName="translateXY" + android:propertyXName="translateX" + android:propertyYName="translateY" + android:startOffset="734"> + <aapt:attr name="android:interpolator"> + <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0.333 0.667,0.667 1.0,1.0" /> + </aapt:attr> + </objectAnimator> + <objectAnimator + android:duration="267" + android:pathData="M 500,500C 500,500 500,364 500,364" + android:propertyName="translateXY" + android:propertyXName="translateX" + android:propertyYName="translateY" + android:startOffset="1134"> + <aapt:attr name="android:interpolator"> + <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0" /> + </aapt:attr> + </objectAnimator> + <objectAnimator + android:duration="234" + android:pathData="M 500,364C 500,364 500,364 500,364" + android:propertyName="translateXY" + android:propertyXName="translateX" + android:propertyYName="translateY" + android:startOffset="1401"> + <aapt:attr name="android:interpolator"> + <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0.333 0.667,0.667 1.0,1.0" /> + </aapt:attr> + </objectAnimator> + <objectAnimator + android:duration="133" + android:pathData="M 500,364C 500,364 500,535 500,535" + android:propertyName="translateXY" + android:propertyXName="translateX" + android:propertyYName="translateY" + android:startOffset="1635"> + <aapt:attr name="android:interpolator"> + <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0" /> + </aapt:attr> + </objectAnimator> + <objectAnimator + android:duration="100" + android:pathData="M 500,535C 500,535 500,500 500,500" + android:propertyName="translateXY" + android:propertyXName="translateX" + android:propertyYName="translateY" + android:startOffset="1768"> + <aapt:attr name="android:interpolator"> + <pathInterpolator android:pathData="M 0.0,0.0 c0.333,0 0.667,1 1.0,1.0" /> + </aapt:attr> + </objectAnimator> + </set> + </aapt:attr> + </target> + <target android:name="time_group"> + <aapt:attr name="android:animation"> + <set android:ordering="together"> + <objectAnimator + android:duration="2269" + android:propertyName="translateX" + android:startOffset="0" + android:valueFrom="0" + android:valueTo="1" + android:valueType="floatType" /> + </set> + </aapt:attr> + </target> +</animated-vector> diff --git a/src/android/app/src/main/res/layout-ldrtl/list_item_setting_input.xml b/src/android/app/src/main/res/layout-ldrtl/list_item_setting_input.xml new file mode 100644 index 000000000..583620dc6 --- /dev/null +++ b/src/android/app/src/main/res/layout-ldrtl/list_item_setting_input.xml @@ -0,0 +1,63 @@ +<?xml version="1.0" encoding="utf-8"?> +<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:app="http://schemas.android.com/apk/res-auto" + xmlns:tools="http://schemas.android.com/tools" + android:id="@+id/setting_body" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:background="?android:attr/selectableItemBackground" + android:clickable="true" + android:focusable="true" + android:gravity="center_vertical" + android:minHeight="72dp" + android:padding="16dp" + android:nextFocusLeft="@id/button_options"> + + <LinearLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:gravity="center_vertical" + android:orientation="horizontal"> + + <LinearLayout + android:layout_width="0dp" + android:layout_height="wrap_content" + android:orientation="vertical" + android:layout_weight="1"> + + <com.google.android.material.textview.MaterialTextView + android:id="@+id/text_setting_name" + style="@style/TextAppearance.Material3.HeadlineMedium" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:textAlignment="viewStart" + android:textSize="17sp" + app:lineHeight="22dp" + tools:text="Setting Name" /> + + <com.google.android.material.textview.MaterialTextView + android:id="@+id/text_setting_value" + style="@style/TextAppearance.Material3.LabelMedium" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginTop="@dimen/spacing_small" + android:textAlignment="viewStart" + android:textStyle="bold" + android:textSize="13sp" + tools:text="1x" /> + + </LinearLayout> + + <Button + android:id="@+id/button_options" + style="?attr/materialIconButtonStyle" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:nextFocusRight="@id/setting_body" + app:icon="@drawable/ic_more_vert" + app:iconSize="24dp" + app:iconTint="?attr/colorOnSurface" /> + + </LinearLayout> + +</RelativeLayout> diff --git a/src/android/app/src/main/res/layout/dialog_input_profiles.xml b/src/android/app/src/main/res/layout/dialog_input_profiles.xml new file mode 100644 index 000000000..6ad76fe41 --- /dev/null +++ b/src/android/app/src/main/res/layout/dialog_input_profiles.xml @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="utf-8"?> +<androidx.recyclerview.widget.RecyclerView xmlns:android="http://schemas.android.com/apk/res/android" + android:id="@+id/list_profiles" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:fadeScrollbars="false" /> diff --git a/src/android/app/src/main/res/layout/dialog_mapping.xml b/src/android/app/src/main/res/layout/dialog_mapping.xml new file mode 100644 index 000000000..06190b8d2 --- /dev/null +++ b/src/android/app/src/main/res/layout/dialog_mapping.xml @@ -0,0 +1,26 @@ +<?xml version="1.0" encoding="utf-8"?> +<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" + android:layout_width="match_parent" + android:layout_height="wrap_content" + xmlns:tools="http://schemas.android.com/tools" + android:defaultFocusHighlightEnabled="false" + android:focusable="true" + android:focusableInTouchMode="true" + android:focusedByDefault="true" + android:orientation="horizontal" + android:gravity="center"> + + <ImageView + android:id="@+id/image_stick_animation" + android:layout_width="@dimen/mapping_anim_size" + android:layout_height="@dimen/mapping_anim_size" + tools:src="@drawable/stick_two_direction_anim" /> + + <ImageView + android:id="@+id/image_button_animation" + android:layout_width="@dimen/mapping_anim_size" + android:layout_height="@dimen/mapping_anim_size" + android:layout_marginStart="48dp" + tools:src="@drawable/button_anim" /> + +</LinearLayout> diff --git a/src/android/app/src/main/res/layout/list_item_input_profile.xml b/src/android/app/src/main/res/layout/list_item_input_profile.xml new file mode 100644 index 000000000..a08dccf0c --- /dev/null +++ b/src/android/app/src/main/res/layout/list_item_input_profile.xml @@ -0,0 +1,74 @@ +<?xml version="1.0" encoding="utf-8"?> +<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:app="http://schemas.android.com/apk/res-auto" + xmlns:tools="http://schemas.android.com/tools" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:focusable="false" + android:paddingHorizontal="20dp" + android:paddingVertical="16dp"> + + <com.google.android.material.textview.MaterialTextView + android:id="@+id/title" + style="@style/TextAppearance.Material3.HeadlineMedium" + android:layout_width="0dp" + android:layout_height="0dp" + android:textAlignment="viewStart" + android:gravity="start|center_vertical" + android:textSize="17sp" + android:layout_marginEnd="16dp" + app:layout_constraintBottom_toBottomOf="@+id/button_layout" + app:layout_constraintEnd_toStartOf="@+id/button_layout" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent" + app:lineHeight="28dp" + tools:text="My profile" /> + + <LinearLayout + android:id="@+id/button_layout" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:gravity="center_vertical" + android:orientation="horizontal" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintTop_toTopOf="parent"> + + <Button + android:id="@+id/button_new" + style="@style/Widget.Material3.Button.IconButton.Filled.Tonal" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:contentDescription="@string/create_new_profile" + android:tooltipText="@string/create_new_profile" + app:icon="@drawable/ic_new_label" /> + + <Button + android:id="@+id/button_delete" + style="@style/Widget.Material3.Button.IconButton.Filled.Tonal" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:contentDescription="@string/delete" + android:tooltipText="@string/delete" + app:icon="@drawable/ic_delete" /> + + <Button + android:id="@+id/button_save" + style="@style/Widget.Material3.Button.IconButton.Filled.Tonal" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:contentDescription="@string/save" + android:tooltipText="@string/save" + app:icon="@drawable/ic_save" /> + + <Button + android:id="@+id/button_load" + style="@style/Widget.Material3.Button.IconButton.Filled.Tonal" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:contentDescription="@string/load" + android:tooltipText="@string/load" + app:icon="@drawable/ic_import" /> + + </LinearLayout> + +</androidx.constraintlayout.widget.ConstraintLayout> diff --git a/src/android/app/src/main/res/layout/list_item_setting_input.xml b/src/android/app/src/main/res/layout/list_item_setting_input.xml new file mode 100644 index 000000000..d67cbe245 --- /dev/null +++ b/src/android/app/src/main/res/layout/list_item_setting_input.xml @@ -0,0 +1,63 @@ +<?xml version="1.0" encoding="utf-8"?> +<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:app="http://schemas.android.com/apk/res-auto" + xmlns:tools="http://schemas.android.com/tools" + android:id="@+id/setting_body" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:background="?android:attr/selectableItemBackground" + android:clickable="true" + android:focusable="true" + android:gravity="center_vertical" + android:minHeight="72dp" + android:padding="16dp" + android:nextFocusRight="@id/button_options"> + + <LinearLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:gravity="center_vertical" + android:orientation="horizontal"> + + <LinearLayout + android:layout_width="0dp" + android:layout_height="wrap_content" + android:orientation="vertical" + android:layout_weight="1"> + + <com.google.android.material.textview.MaterialTextView + android:id="@+id/text_setting_name" + style="@style/TextAppearance.Material3.HeadlineMedium" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:textAlignment="viewStart" + android:textSize="17sp" + app:lineHeight="22dp" + tools:text="Setting Name" /> + + <com.google.android.material.textview.MaterialTextView + android:id="@+id/text_setting_value" + style="@style/TextAppearance.Material3.LabelMedium" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginTop="@dimen/spacing_small" + android:textAlignment="viewStart" + android:textStyle="bold" + android:textSize="13sp" + tools:text="1x" /> + + </LinearLayout> + + <Button + android:id="@+id/button_options" + style="?attr/materialIconButtonStyle" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:nextFocusLeft="@id/setting_body" + app:icon="@drawable/ic_more_vert" + app:iconSize="24dp" + app:iconTint="?attr/colorOnSurface" /> + + </LinearLayout> + +</RelativeLayout> diff --git a/src/android/app/src/main/res/menu/menu_in_game.xml b/src/android/app/src/main/res/menu/menu_in_game.xml index eecb0563b..867197ebc 100644 --- a/src/android/app/src/main/res/menu/menu_in_game.xml +++ b/src/android/app/src/main/res/menu/menu_in_game.xml @@ -17,8 +17,13 @@ android:title="@string/per_game_settings" /> <item - android:id="@+id/menu_overlay_controls" + android:id="@+id/menu_controls" android:icon="@drawable/ic_controller" + android:title="@string/preferences_controls" /> + + <item + android:id="@+id/menu_overlay_controls" + android:icon="@drawable/ic_overlay" android:title="@string/emulation_input_overlay" /> <item diff --git a/src/android/app/src/main/res/menu/menu_input_options.xml b/src/android/app/src/main/res/menu/menu_input_options.xml new file mode 100644 index 000000000..81ea5043f --- /dev/null +++ b/src/android/app/src/main/res/menu/menu_input_options.xml @@ -0,0 +1,34 @@ +<?xml version="1.0" encoding="utf-8"?> +<menu xmlns:android="http://schemas.android.com/apk/res/android"> + + <item + android:id="@+id/invert_axis" + android:title="@string/invert_axis" + android:visible="false" /> + + <item + android:id="@+id/invert_button" + android:title="@string/invert_button" + android:visible="false" /> + + <item + android:id="@+id/toggle_button" + android:title="@string/toggle_button" + android:visible="false" /> + + <item + android:id="@+id/turbo_button" + android:title="@string/turbo_button" + android:visible="false" /> + + <item + android:id="@+id/set_threshold" + android:title="@string/set_threshold" + android:visible="false" /> + + <item + android:id="@+id/toggle_axis" + android:title="@string/toggle_axis" + android:visible="false" /> + +</menu> diff --git a/src/android/app/src/main/res/navigation/settings_navigation.xml b/src/android/app/src/main/res/navigation/settings_navigation.xml index 1d87d36b3..e4c66e7d5 100644 --- a/src/android/app/src/main/res/navigation/settings_navigation.xml +++ b/src/android/app/src/main/res/navigation/settings_navigation.xml @@ -26,7 +26,7 @@ <fragment android:id="@+id/settingsSearchFragment" - android:name="org.yuzu.yuzu_emu.fragments.SettingsSearchFragment" + android:name="org.yuzu.yuzu_emu.features.settings.ui.SettingsSearchFragment" android:label="SettingsSearchFragment" /> </navigation> diff --git a/src/android/app/src/main/res/values-w600dp/dimens.xml b/src/android/app/src/main/res/values-w600dp/dimens.xml index 128319e27..0e2d40876 100644 --- a/src/android/app/src/main/res/values-w600dp/dimens.xml +++ b/src/android/app/src/main/res/values-w600dp/dimens.xml @@ -2,4 +2,6 @@ <resources> <dimen name="spacing_navigation">0dp</dimen> <dimen name="spacing_navigation_rail">80dp</dimen> + + <dimen name="mapping_anim_size">100dp</dimen> </resources> diff --git a/src/android/app/src/main/res/values/dimens.xml b/src/android/app/src/main/res/values/dimens.xml index 992b5ae44..bf733637f 100644 --- a/src/android/app/src/main/res/values/dimens.xml +++ b/src/android/app/src/main/res/values/dimens.xml @@ -18,4 +18,6 @@ <dimen name="dialog_margin">20dp</dimen> <dimen name="elevated_app_bar">3dp</dimen> + + <dimen name="mapping_anim_size">75dp</dimen> </resources> diff --git a/src/android/app/src/main/res/values/strings.xml b/src/android/app/src/main/res/values/strings.xml index 78a4c958a..6a631f664 100644 --- a/src/android/app/src/main/res/values/strings.xml +++ b/src/android/app/src/main/res/values/strings.xml @@ -255,6 +255,92 @@ <string name="audio_volume">Volume</string> <string name="audio_volume_description">Specifies the volume of audio output.</string> + <!-- Input strings --> + <string name="buttons">Buttons</string> + <string name="button_a">A</string> + <string name="button_b">B</string> + <string name="button_x">X</string> + <string name="button_y">Y</string> + <string name="button_plus">Plus</string> + <string name="button_minus">Minus</string> + <string name="button_home">Home</string> + <string name="button_capture">Capture</string> + <string name="start_pause">Start/Pause</string> + <string name="dpad">D-Pad</string> + <string name="up">Up</string> + <string name="down">Down</string> + <string name="left">Left</string> + <string name="right">Right</string> + <string name="left_stick">Left stick</string> + <string name="control_stick">Control stick</string> + <string name="right_stick">Right stick</string> + <string name="c_stick">C-Stick</string> + <string name="pressed">Pressed</string> + <string name="range">Range</string> + <string name="deadzone">Deadzone</string> + <string name="modifier">Modifier</string> + <string name="modifier_range">Modifier range</string> + <string name="triggers">Triggers</string> + <string name="button_l">L</string> + <string name="button_r">R</string> + <string name="button_zl">ZL</string> + <string name="button_zr">ZR</string> + <string name="button_sl_left">Left SL</string> + <string name="button_sr_left">Left SR</string> + <string name="button_sl_right">Right SL</string> + <string name="button_sr_right">Right SR</string> + <string name="button_z">Z</string> + <string name="invalid">Invalid</string> + <string name="not_set">Not set</string> + <string name="unknown">Unknown</string> + <string name="qualified_hat">%1$s%2$s%3$sHat %4$s</string> + <string name="qualified_button_stick_axis">%1$s%2$s%3$sAxis %4$s</string> + <string name="qualified_button">%1$s%2$s%3$sButton %4$s</string> + <string name="qualified_axis">Axis %1$s%2$s</string> + <string name="unused">Unused</string> + <string name="input_prompt">Move or press an input</string> + <string name="unsupported_input">Unsupported input type</string> + <string name="input_mapping_filter">Input mapping filter</string> + <string name="input_mapping_filter_description">Select a device to filter mapping inputs</string> + <string name="auto_map">Auto-map a controller</string> + <string name="auto_map_description">Select a device to attempt auto-mapping</string> + <string name="attempted_auto_map">Attempted auto-map with %1$s</string> + <string name="controller_type">Controller type</string> + <string name="pro_controller">Pro Controller</string> + <string name="handheld">Handheld</string> + <string name="dual_joycons">Dual Joycons</string> + <string name="left_joycon">Left Joycon</string> + <string name="right_joycon">Right Joycon</string> + <string name="gamecube_controller">GameCube Controller</string> + <string name="invert_axis">Invert axis</string> + <string name="invert_button">Invert button</string> + <string name="toggle_button">Toggle button</string> + <string name="turbo_button">Turbo button</string> + <string name="set_threshold">Set threshold</string> + <string name="toggle_axis">Toggle axis</string> + <string name="connected">Connected</string> + <string name="use_system_vibrator">Use system vibrator</string> + <string name="input_overlay">Input overlay</string> + <string name="vibration">Vibration</string> + <string name="vibration_strength">Vibration strength</string> + <string name="profile">Profile</string> + <string name="create_new_profile">Create new profile</string> + <string name="enter_profile_name">Enter profile name</string> + <string name="profile_name_already_exists">Profile name already exists</string> + <string name="invalid_profile_name">Invalid profile name</string> + <string name="use_global_input_configuration">Use global input configuration</string> + <string name="player_num_profile">Player %d profile</string> + <string name="delete_input_profile">Delete input profile</string> + <string name="delete_input_profile_description">Are you sure that you want to delete this profile? This is not recoverable.</string> + <string name="stick_map_description">Move a stick left and then up or press a button</string> + <string name="button_map_description">Press a button or move a trigger/stick</string> + <string name="map_dpad_direction">Map to D-Pad %1$s</string> + <string name="map_control">Map to %1$s</string> + <string name="failed_to_load_profile">Failed to load profile</string> + <string name="failed_to_save_profile">Failed to save profile</string> + <string name="reset_mapping">Reset mappings</string> + <string name="reset_mapping_description">Are you sure that you want to reset all mappings for this controller to default? This cannot be undone.</string> + <!-- Miscellaneous --> <string name="slider_default">Default</string> <string name="ini_saved">Saved settings</string> @@ -292,6 +378,10 @@ <string name="more_options">More options</string> <string name="use_global_setting">Use global setting</string> <string name="operation_completed_successfully">The operation completed successfully</string> + <string name="retry">Retry</string> + <string name="confirm">Confirm</string> + <string name="load">Load</string> + <string name="save">Save</string> <!-- GPU driver installation --> <string name="select_gpu_driver">Select GPU driver</string> @@ -313,6 +403,9 @@ <string name="preferences_graphics_description">Accuracy level, resolution, shader cache</string> <string name="preferences_audio">Audio</string> <string name="preferences_audio_description">Output engine, volume</string> + <string name="preferences_controls">Controls</string> + <string name="preferences_controls_description">Map controller input</string> + <string name="preferences_player">Player %d</string> <string name="preferences_theme">Theme and color</string> <string name="preferences_debug">Debug</string> <string name="preferences_debug_description">CPU/GPU debugging, graphics API, fastmem</string> |