diff options
author | Dan Sandler <dsandler@android.com> | 2015-08-13 13:30:55 -0400 |
---|---|---|
committer | Dan Sandler <dsandler@android.com> | 2015-08-14 15:51:13 -0400 |
commit | 8df3cfe6b8e6a871bcc69efdd19a632229b50384 (patch) | |
tree | 7af6ccd6a43d0b3ddf56869f5fb3f3de51e189d8 /packages | |
parent | cfcf6af915bee878bdaea04f48592bbbe506ad26 (diff) | |
download | frameworks_base-8df3cfe6b8e6a871bcc69efdd19a632229b50384.zip frameworks_base-8df3cfe6b8e6a871bcc69efdd19a632229b50384.tar.gz frameworks_base-8df3cfe6b8e6a871bcc69efdd19a632229b50384.tar.bz2 |
Introducing M Land.
The "M" is for Multiplayer.
Bug: 21984798
Change-Id: Id752b8efe54ff0ac38854a129188027137d64dd5
Diffstat (limited to 'packages')
40 files changed, 1699 insertions, 414 deletions
diff --git a/packages/SystemUI/AndroidManifest.xml b/packages/SystemUI/AndroidManifest.xml index bbef259..677ab91 100644 --- a/packages/SystemUI/AndroidManifest.xml +++ b/packages/SystemUI/AndroidManifest.xml @@ -322,10 +322,11 @@ </intent-filter> </activity> - <activity android:name=".egg.LLandActivity" - android:theme="@android:style/Theme.Material.Light.NoActionBar" + <activity android:name=".egg.MLandActivity" + android:theme="@android:style/Theme.Material.NoActionBar" android:exported="true" - android:label="@string/lland" + android:icon="@drawable/icon" + android:label="@string/mland" android:hardwareAccelerated="true" android:launchMode="singleInstance" android:screenOrientation="locked" @@ -334,19 +335,6 @@ <intent-filter> <action android:name="android.intent.action.MAIN"/> <category android:name="android.intent.category.DEFAULT" /> - </intent-filter> - </activity> - - <activity android:name=".egg.ShruggyActivity" - android:theme="@android:style/Theme.NoDisplay" - android:exported="true" - android:launchMode="singleInstance" - android:screenOrientation="locked" - android:process=":sweetsweetdesserts" - android:excludeFromRecents="true"> - <intent-filter> - <action android:name="android.intent.action.MAIN"/> - <category android:name="android.intent.category.DEFAULT" /> <category android:name="com.android.internal.category.PLATLOGO" /> </intent-filter> </activity> diff --git a/packages/SystemUI/res/drawable-nodpi/android.xml b/packages/SystemUI/res/drawable-nodpi/android.xml new file mode 100644 index 0000000..750de05 --- /dev/null +++ b/packages/SystemUI/res/drawable-nodpi/android.xml @@ -0,0 +1,37 @@ +<!-- +Copyright (C) 2014 The Android Open Source Project + + Licensed under the Apache License, Version 2 (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="48dp" + android:height="48dp" + android:viewportWidth="48" + android:viewportHeight="48"> + <path + android:name="torso" + android:pathData="M12,36c0,1.1 0.9,2 2,2l2,0l0,7c0,1.7 1.3,3 3,3c1.7,0 3,-1.3 3,-3l0,-7l4,0l0,7c0,1.7 1.3,3 3,3c1.7,0 3,-1.3 3,-3l0,-7l2,0c1.1,0 2,-0.9 2,-2L36,16L12,16L12,36z" + android:fillColor="#FFFFFF"/> + <path + android:name="leftArm" + android:pathData="M7,16c-1.7,0 -3,1.3 -3,3l0,14c0,1.7 1.3,3 3,3c1.7,0 3,-1.3 3,-3L10,19C10,17.3 8.7,16 7,16z" + android:fillColor="#FFFFFF"/> + <path + android:name="rightArm" + android:pathData="M41,16c-1.7,0 -3,1.3 -3,3l0,14c0,1.7 1.3,3 3,3c1.7,0 3,-1.3 3,-3L44,19C44,17.3 42.7,16 41,16z" + android:fillColor="#FFFFFF"/> + <path + android:name="illFormTheHead" + android:pathData="M31.1,4.3l2.6,-2.6c0.4,-0.4 0.4,-1 0,-1.4c-0.4,-0.4 -1,-0.4 -1.4,0l-3,3C27.7,2.5 25.9,2 24,2c-1.9,0 -3.7,0.5 -5.3,1.3l-3,-3c-0.4,-0.4 -1,-0.4 -1.4,0c-0.4,0.4 -0.4,1 0,1.4l2.6,2.6C13.9,6.5 12,10 12,14l24,0C36,10 34.1,6.5 31.1,4.3zM20.31,9c0,0.72 -0.59,1.31 -1.31,1.31c-0.72,0 -1.31,-0.59 -1.31,-1.31c0,-0.72 0.59,-1.31 1.31,-1.31C19.72,7.69 20.31,8.28 20.31,9zM30.31,9c0,0.72 -0.59,1.31 -1.31,1.31c-0.73,0 -1.31,-0.59 -1.31,-1.31c0,-0.72 0.59,-1.31 1.31,-1.31C29.72,7.69 30.31,8.28 30.31,9z" + android:fillColor="#FFFFFF"/> +</vector> diff --git a/packages/SystemUI/res/drawable-nodpi/cactus1.xml b/packages/SystemUI/res/drawable-nodpi/cactus1.xml new file mode 100644 index 0000000..d0c4453 --- /dev/null +++ b/packages/SystemUI/res/drawable-nodpi/cactus1.xml @@ -0,0 +1,57 @@ +<!-- +Copyright (C) 2015 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="48dp" + android:height="48dp" + android:viewportWidth="48.0" + android:viewportHeight="48.0"> + <path + android:pathData="M36.3,25.5c-0.4,-0.3,-1,-0.5,-1.5,-0.5c-0.1,0,-0.3,0,-0.4,0c-0.3,0,-0.5,0,-0.7,0.1c-0.6,0.1,-1.1,0.4,-1.5,0.8 c-0.8,0.6,-1.2,1.6,-1.2,2.7v3.5h-1.2V14c0,-1.4,-0.6,-2.7,-1.6,-3.6c-0.4,-0.4,-0.9,-0.8,-1.5,-1c-0.4,-0.1,-0.7,-0.2,-1.1,-0.3 C25.2,9,24.9,9,24.7,9s-0.5,0,-0.8,0.1c-0.4,0.1,-0.8,0.2,-1.1,0.3c-0.6,0.2,-1.1,0.6,-1.5,1c-1,0.9,-1.6,2.2,-1.6,3.6v10.3h-2.4v-4.5 c0,-1.2,-0.6,-2.2,-1.5,-2.8c-0.4,-0.3,-1,-0.5,-1.5,-0.6c-0.2,0,-0.3,-0.1,-0.5,-0.1c-0.2,0,-0.4,0,-0.6,0.1c-0.6,0.1,-1.1,0.3,-1.5,0.7 c-0.8,0.6,-1.4,1.6,-1.4,2.7v8c0,1.1,0.5,2.1,1.4,2.7c0.4,0.3,0.9,0.6,1.5,0.7c0.2,0,0.4,0.1,0.6,0.1h0.5h1.5h3.8V48 c0,1.4,0.6,2.7,1.6,3.6c0.4,0.4,0.9,0.8,1.5,1c0.4,0.1,0.7,0.2,1.1,0.3c0.2,0,0.5,0.1,0.8,0.1s0.5,0,0.8,-0.1 c0.4,-0.1,0.8,-0.2,1.1,-0.3c0.6,-0.2,1.1,-0.6,1.5,-1c1,-0.9,1.6,-2.2,1.6,-3.6v-9.1h1.2h1.2h1.5h0.7c0.1,0,0.3,0,0.4,0 c0.6,-0.1,1.1,-0.2,1.5,-0.5c0.9,-0.6,1.6,-1.7,1.6,-2.9v-7C37.9,27.2,37.3,26.1,36.3,25.5z" + android:fillColor="#0D904F"/> + <path + android:pathData="M22.8,9.4v43.3c0.4,0.1,0.7,0.2,1.1,0.3V9.1C23.5,9.1,23.1,9.2,22.8,9.4z" + android:fillColor="#097138"/> + <path + android:pathData="M29.7,31.9V14c0,-1.4,-0.6,-2.7,-1.6,-3.6v41.3c1,-0.9,1.6,-2.2,1.6,-3.6v-9.1h1.2v-7H29.7z" + android:fillColor="#055524"/> + <path + android:pathData="M30.9,28.4v3.5v7h1.2V25.8C31.4,26.4,30.9,27.4,30.9,28.4z" + android:fillColor="#097138"/> + <path + android:pathData="M36.3,25.5v12.8c0.9,-0.6,1.6,-1.7,1.6,-2.9v-7C37.9,27.2,37.3,26.1,36.3,25.5z" + android:fillColor="#055524"/> + <path + android:pathData="M34.4,24.9c-0.3,0,-0.5,0,-0.7,0.1v13.9h0.7c0.1,0,0.3,0,0.4,0V25C34.7,24.9,34.6,24.9,34.4,24.9z" + android:fillColor="#097138"/> + <path + android:pathData="M26.6,9.4c-0.4,-0.1,-0.7,-0.2,-1.1,-0.3v43.9c0.4,-0.1,0.8,-0.2,1.1,-0.3c0.6,-0.2,1.1,-0.6,1.5,-1V10.4 C27.7,9.9,27.1,9.6,26.6,9.4z" + android:fillColor="#097138"/> + <path + android:pathData="M32.2,25.8v13.2h1.5V25C33.1,25.1,32.6,25.4,32.2,25.8z" + android:fillColor="#055524"/> + <path + android:pathData="M34.8,25v13.9c0.6,-0.1,1.1,-0.2,1.5,-0.5V25.5C35.9,25.2,35.4,25,34.8,25z" + android:fillColor="#055524"/> + <path + android:pathData="M11.7,17v13.5c0.4,0.3,0.9,0.6,1.5,0.7V16.3C12.6,16.4,12.1,16.7,11.7,17z" + android:fillColor="#097138"/> + <path + android:pathData="M19.7,14v10.3h-2.4v-4.5c0,-1.2,-0.6,-2.2,-1.5,-2.8c-0.4,-0.3,-1,-0.5,-1.5,-0.6v15h1.5h3.8V48 c0,1.4,0.6,2.7,1.6,3.6V10.4C20.3,11.3,19.7,12.5,19.7,14z" + android:fillColor="#097138"/> + <path + android:pathData="M17.3,24.2h2.4v7.0h-2.4z" + android:fillColor="#055524"/> +</vector> diff --git a/packages/SystemUI/res/drawable-nodpi/cactus2.xml b/packages/SystemUI/res/drawable-nodpi/cactus2.xml new file mode 100644 index 0000000..613ee83 --- /dev/null +++ b/packages/SystemUI/res/drawable-nodpi/cactus2.xml @@ -0,0 +1,57 @@ +<!-- +Copyright (C) 2015 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="48dp" + android:height="48dp" + android:viewportWidth="48.0" + android:viewportHeight="48.0"> + <path + android:pathData="M30.8,12.9l0.0,0.0l0.0,0.0z" + android:fillColor="#0D904F"/> + <path + android:pathData="M41.1,22.1L41.1,22.1c0,-1.7,-1.3,-3,-3,-3h-4.2v-3.2c0,-1.7,-1.3,-3,-3,-3c0,0,0,0,0,0c0,0,0,0,0,0 c-1.6,0,-3,1.4,-3,3v5l-2,2V6.7c0,-2.2,-1.8,-4,-4,-4s-4,1.8,-4,4v7.3v0L15.8,12v-1.4v-2c0,-1.7,-1.3,-3,-3,-3s-3,1.3,-3,3v4.6 c0,0.8,0.3,1.6,0.9,2.1l7.2,7.2v25.7c0,2.2,1.8,4,4,4s4,-1.8,4,-4V31.3l6.2,-6.2h6C39.7,25.1,41.1,23.7,41.1,22.1 C41.1,22.1,41.1,22.1,41.1,22.1L41.1,22.1z" + android:fillColor="#0D904F"/> + <path + android:pathData="M30.8,12.9" + android:fillColor="#0D904F"/> + <path + android:pathData="M38.1,19.1h-4.2l-3,3v-9.3c-1.6,0,-3,1.4,-3,3v5l-2,2V6.7c0,-2.2,-1.8,-4,-4,-4v24.1v25.4c2.2,0,4,-1.8,4,-4V31.3 l6.2,-6.2l3,-3h6C41.1,20.4,39.7,19.1,38.1,19.1z" + android:fillColor="#097138"/> + <path + android:pathData="M30.8,12.9l0.0,0.0l0.0,0.0z" + android:fillColor="#0D904F"/> + <path + android:pathData="M30.8,12.9C30.8,12.9,30.8,12.9,30.8,12.9C30.8,12.9,30.8,12.9,30.8,12.9l0,9.3l3,-3v-3.2 C33.8,14.2,32.5,12.9,30.8,12.9z" + android:fillColor="#055524"/> + <path + android:pathData="M41.1,22.1l0.0,0.0l0.0,0.0z" + android:fillColor="#0D904F"/> + <path + android:pathData="M41.1,22.1L41.1,22.1l-6,0l-3,3h6C39.7,25.1,41.1,23.7,41.1,22.1C41.1,22.1,41.1,22.1,41.1,22.1z" + android:fillColor="#055524"/> + <path + android:pathData="M17.8,14.1L17.8,14.1l-2.1,-2v-1.4v-2c0,-1.7,-1.3,-3,-3,-3v7.2l5.1,5.1L17.8,14.1L17.8,14.1z" + android:fillColor="#097138"/> + <path + android:pathData="M38.3,16.8l0.29999924,1.5l1.2000008,-1.0l-0.70000076,1.4000015l1.5,0.0l-1.3999977,0.5999985l1.0999985,1.0l-1.3999977,-0.5l0.19999695,1.5l-0.79999924,-1.2999992l-0.79999924,1.2999992l0.20000076,-1.5l-1.4000015,0.5l1.1000023,-1.0l-1.4000015,-0.5999985l1.5,0.0l-0.70000076,-1.4000015l1.2000008,1.0z" + android:fillColor="#AB47BC"/> + <path + android:pathData="M38.9,16.9l-0.10000229,1.5l1.4000015,-0.6000004l-1.1000023,1.1000004l1.5,0.39999962l-1.5,0.20000076l0.80000305,1.2999992l-1.300003,-0.8999996l-0.099998474,1.5l-0.5,-1.3999996l-1.0999985,1.0l0.5999985,-1.3999996l-1.5,0.10000038l1.4000015,-0.70000076l-1.2000008,-0.8999996l1.3999977,0.39999962l-0.29999924,-1.5l0.9000015,1.2000008z" + android:fillColor="#BA68C8"/> + <path + android:pathData="M38.3,19.0m-0.4,0.0a0.4,0.4,0,1,1,0.8,0.0a0.4,0.4,0,1,1,-0.8,0.0" + android:fillColor="#FFA726"/> +</vector> diff --git a/packages/SystemUI/res/drawable-nodpi/cactus3.xml b/packages/SystemUI/res/drawable-nodpi/cactus3.xml new file mode 100644 index 0000000..d070e07 --- /dev/null +++ b/packages/SystemUI/res/drawable-nodpi/cactus3.xml @@ -0,0 +1,51 @@ +<!-- +Copyright (C) 2015 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="48dp" + android:height="48dp" + android:viewportWidth="48.0" + android:viewportHeight="48.0"> + <path + android:pathData="M35.9,15.9c-1.7,0,-3,1.3,-3,3v13.6h-1.1h-0.6v-3.9c0,-1.7,-1.3,-3,-3,-3h-0.3h-0.4v-0.8V22c0,-1.4,-1.1,-2.5,-2.5,-2.5 s-2.5,1.1,-2.5,2.5v3.6h-1.8v-6.4c0,-1.7,-1.3,-3,-3,-3s-3,1.3,-3,3v9.4c0,1.7,1.3,3,3,3h7.6V48c0,1.7,1.3,3,3,3c0.5,0,1,-0.1,1.4,-0.4 c0,0,0,0,0,0c0.4,0.3,0.9,0.4,1.5,0.4c1.7,0,3,-1.3,3,-3v-9.5h1.7c1.7,0,3,-1.3,3,-3V18.9C38.9,17.2,37.6,15.9,35.9,15.9z" + android:fillColor="#0D904F"/> + <path + android:pathData="M31.2,51c1.7,0,3,-1.3,3,-3v-9.5h1.7c1.7,0,3,-1.3,3,-3V18.9c0,-1.7,-1.3,-3,-3,-3v19.6h-7.3v15.1c1.1,0,1.1,0,1.1,0 C30.1,50.8,30.6,51,31.2,51z" + android:fillColor="#097138"/> + <path + android:pathData="M20.7,25.6v-6.4c0,-1.7,-1.3,-3,-3,-3v9.4H20.7z" + android:fillColor="#097138"/> + <path + android:pathData="M26.2,35.5h1.2v15.6h-1.2z" + android:fillColor="#097138"/> + <path + android:pathData="M34.1,22.2h0.8v14.2h-0.8z" + android:fillColor="#097138"/> + <path + android:pathData="M16.8,26.5l0.0,-7.0l-0.79999924,0.0l0.0,7.799999l0.79999924,0.0l5.700001,0.0l0.0,-0.79999924z" + android:fillColor="#097138"/> + <path + android:pathData="M29.9,38.5h1.3v11.7h-1.3z" + android:fillColor="#055524"/> + <path + android:pathData="M32.4,38.5h1.8v11.7h-1.8z" + android:fillColor="#055524"/> + <path + android:pathData="M27.5,25.7L27.5,25.7v-0.9v-0.8V22c0,-1.4,-1.1,-2.5,-2.5,-2.5v9.1h0h0C25.1,27.2,26.1,26,27.5,25.7z" + android:fillColor="#097138"/> + <path + android:pathData="M28.6,25.7v6.1v0.7h2.7v-3.8C31.2,27.2,30.1,25.9,28.6,25.7z" + android:fillColor="#097138"/> +</vector> diff --git a/packages/SystemUI/res/drawable-nodpi/cloud.xml b/packages/SystemUI/res/drawable-nodpi/cloud.xml new file mode 100644 index 0000000..17e4ad2 --- /dev/null +++ b/packages/SystemUI/res/drawable-nodpi/cloud.xml @@ -0,0 +1,24 @@ +<!-- +Copyright (C) 2014 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="48.0dp" + android:height="48.0dp" + android:viewportWidth="48.0" + android:viewportHeight="48.0"> + <path + android:pathData="M38.700001,20.100000C37.299999,13.200000 31.299999,8.000000 24.000000,8.000000c-5.800000,0.000000 -10.800000,3.300000 -13.300000,8.100000C4.700000,16.700001 0.000000,21.799999 0.000000,28.000000c0.000000,6.600000 5.400000,12.000000 12.000000,12.000000l26.000000,0.000000c5.500000,0.000000 10.000000,-4.500000 10.000000,-10.000000C48.000000,24.700001 43.900002,20.400000 38.700001,20.100000z" + android:fillColor="#FFFFFF"/> +</vector> diff --git a/packages/SystemUI/res/drawable-nodpi/cloud_off.xml b/packages/SystemUI/res/drawable-nodpi/cloud_off.xml new file mode 100644 index 0000000..b15ea5f --- /dev/null +++ b/packages/SystemUI/res/drawable-nodpi/cloud_off.xml @@ -0,0 +1,24 @@ +<!-- +Copyright (C) 2014 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="24.0dp" + android:height="24.0dp" + android:viewportWidth="24.0" + android:viewportHeight="24.0"> + <path + android:pathData="M19.400000,10.000000c-0.700000,-3.400000 -3.700000,-6.000000 -7.400000,-6.000000c-1.500000,0.000000 -2.900000,0.400000 -4.000000,1.200000l1.500000,1.500000C10.200000,6.200000 11.100000,6.000000 12.000000,6.000000c3.000000,0.000000 5.500000,2.500000 5.500000,5.500000L17.500000,12.000000L19.000000,12.000000c1.700000,0.000000 3.000000,1.300000 3.000000,3.000000c0.000000,1.100000 -0.600000,2.100000 -1.600000,2.600000l1.500000,1.500000c1.300000,-0.900000 2.100000,-2.400000 2.100000,-4.100000C24.000000,12.400000 21.900000,10.200000 19.400000,10.000000zM3.000000,5.300000L5.800000,8.000000C2.600000,8.200000 0.000000,10.800000 0.000000,14.000000c0.000000,3.300000 2.700000,6.000000 6.000000,6.000000l11.700000,0.000000l2.000000,2.000000l1.300000,-1.300000L4.300000,4.000000L3.000000,5.300000zM7.700000,10.000000l8.000000,8.000000L6.000000,18.000000c-2.200000,0.000000 -4.000000,-1.800000 -4.000000,-4.000000c0.000000,-2.200000 1.800000,-4.000000 4.000000,-4.000000L7.700000,10.000000z" + android:fillColor="#FFFFFF"/> +</vector> diff --git a/packages/SystemUI/res/drawable-nodpi/icon.xml b/packages/SystemUI/res/drawable-nodpi/icon.xml index 7b8975a..9c36b5a 100644 --- a/packages/SystemUI/res/drawable-nodpi/icon.xml +++ b/packages/SystemUI/res/drawable-nodpi/icon.xml @@ -1,5 +1,5 @@ <!-- -Copyright (C) 2014 The Android Open Source Project +Copyright (C) 2015 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. @@ -20,14 +20,14 @@ Copyright (C) 2014 The Android Open Source Project android:viewportHeight="48.0"> <path android:pathData="M24.0,2.0C11.8,2.0 2.0,11.8 2.0,24.0c0.0,6.1 2.5,11.6 6.4,15.6L39.6,8.4C35.6,4.5 30.1,2.0 24.0,2.0z" - android:fillColor="#F57C00"/> + android:fillColor="#E91E63"/> <path android:pathData="M39.6,8.4L8.4,39.6c4.0,4.0 9.5,6.4 15.6,6.4c12.2,0.0 22.0,-9.8 22.0,-22.0C46.0,17.9 43.5,12.4 39.6,8.4z" - android:fillColor="#FF9800"/> + android:fillColor="#F06292"/> <path android:pathData="M45.9,25.9L34.0,14.0L14.0,34.0l11.9,11.9C36.5,45.0 45.0,36.5 45.9,25.9z" android:fillAlpha="0.33" - android:fillColor="#F57C00"/> + android:fillColor="#E91E63"/> <path android:pathData="M24.0,24.0c0.0,0.0 0.0,2.2 0.0,5.0s0.0,5.0 0.0,5.0l10.0,-10.0L34.0,14.0L24.0,24.0z" android:fillColor="#FFFFFF"/> diff --git a/packages/SystemUI/res/drawable-nodpi/lollipop.xml b/packages/SystemUI/res/drawable-nodpi/lollipop.xml deleted file mode 100644 index cb63af0..0000000 --- a/packages/SystemUI/res/drawable-nodpi/lollipop.xml +++ /dev/null @@ -1,48 +0,0 @@ -<!-- -Copyright (C) 2014 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.0apache.0org/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.0android.0com/apk/res/android" - android:width="560.0dp" - android:height="560.0dp" - android:viewportWidth="560.0" - android:viewportHeight="560.0"> - <path - android:pathData="M264.079987,240.736l0.0,9.82c7.31,-7.15 17.139999,-11.56 28.07,-11.56c22.639999,0.0 40.799999,18.48 40.799999,41.12c0.0,22.48 -18.16,40.880 -40.799999,40.880c-10.93,0.0 -20.280,-4.09 -27.59,-10.93L264.559998,339.0l-11.32,0.0l0.0,-98.269997L264.079987,240.731zM265.809998,264.869995c-0.47,0.79 -1.26,2.04 -1.26,4.79l0.0,21.07c0.0,1.97 0.47,3.07 1.1,4.17c5.19,8.88 14.78,14.94 25.63,14.94c16.43,0.0 29.950,-13.44 29.950,-29.870c0.0,-16.280 -13.52,-29.799999 -29.950,-29.799999C280.51,250.169998 271.0,256.059998 265.809998,264.869995z" - android:fillColor="#FFFFFF"/> - <path - android:pathData="M445.731,240.736l0.0,9.82c7.31,-7.15 17.139999,-11.56 28.07,-11.56c22.639999,0.0 40.799999,18.48 40.799999,41.12c0.0,22.48 -18.16,40.880 -40.799999,40.880c-10.93,0.0 -20.280,-4.09 -27.59,-10.93L446.210052,339.0l-11.32,0.0l0.0,-98.269997L445.731,240.731zM447.459991,264.869995c-0.47,0.79 -1.26,2.04 -1.26,4.79l0.0,21.07c0.0,1.97 0.47,3.07 1.1,4.17c5.19,8.88 14.78,14.94 25.63,14.94c16.43,0.0 29.950,-13.44 29.950,-29.870c0.0,-16.280 -13.52,-29.799999 -29.950,-29.799999C462.160004,250.169998 452.649994,256.059998 447.459991,264.869995z" - android:fillColor="#FFFFFF"/> - <path - android:pathData="M169.490005,279.880005c0.0,22.639999 -18.32,41.12 -40.810,41.12c-22.639999,0.0 -41.040,-18.48 -41.040,-41.12c0.0,-22.48 18.389999,-40.880 41.040,-40.880C151.169998,239.0 169.490005,257.399994 169.490005,279.880005zM158.089996,280.040009c0.0,-16.43 -13.13,-29.870 -29.41,-29.870c-16.51,0.0 -29.4,13.44 -29.4,29.870c0.0,16.280 12.89,29.799999 29.4,29.799999C144.960007,309.8387 158.089996,296.309998 158.089996,280.040009z" - android:fillColor="#FFFFFF"/> - <path - android:pathData="M423.790009,279.880005c0.0,22.639999 -18.32,41.12 -40.810,41.12c-22.639999,0.0 -41.040,-18.48 -41.040,-41.12c0.0,-22.48 18.389999,-40.880 41.040,-40.880C405.470,239.0 423.790009,257.399994 423.790009,279.880005zM412.395,280.040009c0.0,-16.43 -13.13,-29.870 -29.41,-29.870c-16.51,0.0 -29.4,13.44 -29.4,29.870c0.0,16.280 12.89,29.799999 29.4,29.799999C399.26,309.8387 412.395,296.309998 412.395,280.040009z" - android:fillColor="#FFFFFF"/> - <path - android:pathData="M229.02,221.0l11.17,0.0l0.0,11.48l-11.17,0.0z" - android:fillColor="#FFFFFF"/> - <path - android:pathData="M229.02,240.65l11.17,0.0l0.0,78.62l-11.17,0.0z" - android:fillColor="#FFFFFF"/> - <path - android:pathData="M65.4,221.0l11.17,0.0l0.0,98.27l-11.17,0.0z" - android:fillColor="#FFFFFF"/> - <path - android:pathData="M180.58,221.0l11.17,0.0l0.0,98.27l-11.17,0.0z" - android:fillColor="#FFFFFF"/> - <path - android:pathData="M204.8,221.0l11.17,0.0l0.0,98.27l-11.17,0.0z" - android:fillColor="#FFFFFF"/> -</vector> diff --git a/packages/SystemUI/res/drawable-nodpi/minus.xml b/packages/SystemUI/res/drawable-nodpi/minus.xml new file mode 100644 index 0000000..a308e07 --- /dev/null +++ b/packages/SystemUI/res/drawable-nodpi/minus.xml @@ -0,0 +1,24 @@ +<!-- +Copyright (C) 2015 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="48.0dp" + android:height="48.0dp" + android:viewportWidth="48.0" + android:viewportHeight="48.0"> + <path + android:pathData="M4.0,20.0l40.0,0.0l0.0,8.0l-40.0,0.0z" + android:fillColor="#FFFFFF"/> +</vector> diff --git a/packages/SystemUI/res/drawable-nodpi/mm_antennae.xml b/packages/SystemUI/res/drawable-nodpi/mm_antennae.xml new file mode 100644 index 0000000..15cd450 --- /dev/null +++ b/packages/SystemUI/res/drawable-nodpi/mm_antennae.xml @@ -0,0 +1,27 @@ +<!-- +Copyright (C) 2015 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.0" + android:viewportHeight="24.0"> + <path + android:pathData="M15.6,5.3c0,0,-0.1,0,-0.1,0c-0.3,-0.1,-0.4,-0.3,-0.4,-0.6L16,1.4C16,1.1,16.3,0.9,16.6,1 c0.3,0.1,0.4,0.3,0.4,0.6l-0.8,3.3C16.1,5.1,15.9,5.3,15.6,5.3z" + android:fillColor="#FFFFFF"/> + <path + android:pathData="M8.4,5.3c-0.2,0,-0.4,-0.2,-0.5,-0.4L7.1,1.6C7,1.4,7.2,1.1,7.4,1C7.7,0.9,8,1.1,8,1.4l0.8,3.3 c0.1,0.3,-0.1,0.5,-0.4,0.6C8.5,5.3,8.4,5.3,8.4,5.3z" + android:fillColor="#FFFFFF"/> +</vector> diff --git a/packages/SystemUI/res/drawable-nodpi/mm_antennae2.xml b/packages/SystemUI/res/drawable-nodpi/mm_antennae2.xml new file mode 100644 index 0000000..c7c06c5 --- /dev/null +++ b/packages/SystemUI/res/drawable-nodpi/mm_antennae2.xml @@ -0,0 +1,27 @@ +<!-- +Copyright (C) 2015 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.0" + android:viewportHeight="24.0"> + <path + android:pathData="M15.6,5.5C15.5,5.5,15.5,5.5,15.6,5.5c-0.3,-0.3,-0.3,-0.6,-0.1,-0.8l2.4,-2.5c0.2,-0.2,0.5,-0.2,0.7,0 c0.2,0.2,0.2,0.5,0,0.7l-2.4,2.5C16,5.6,15.8,5.7,15.6,5.5z" + android:fillColor="#FFFFFF"/> + <path + android:pathData="M8.4,5.6C8.2,5.7,8,5.6,7.8,5.5L5.5,3c-0.2,-0.2,-0.2,-0.5,0,-0.7c0.2,-0.2,0.5,-0.2,0.7,0l2.4,2.5 C8.7,5,8.7,5.3,8.4,5.6C8.5,5.5,8.5,5.5,8.4,5.6z" + android:fillColor="#FFFFFF"/> +</vector> diff --git a/packages/SystemUI/res/drawable-nodpi/mm_eyes.xml b/packages/SystemUI/res/drawable-nodpi/mm_eyes.xml new file mode 100644 index 0000000..ec7eb5d --- /dev/null +++ b/packages/SystemUI/res/drawable-nodpi/mm_eyes.xml @@ -0,0 +1,27 @@ +<!-- +Copyright (C) 2015 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.0" + android:viewportHeight="24.0"> + <path + android:fillColor="#FF000000" + android:pathData="M7.4,12.0m-0.7,0.0a0.7,0.7,0,1,1,1.4,0.0a0.7,0.7,0,1,1,-1.4,0.0"/> + <path + android:fillColor="#FF000000" + android:pathData="M16.6,12.0m-0.7,0.0a0.7,0.7,0,1,1,1.4,0.0a0.7,0.7,0,1,1,-1.4,0.0"/> +</vector> diff --git a/packages/SystemUI/res/drawable-nodpi/mm_eyes2.xml b/packages/SystemUI/res/drawable-nodpi/mm_eyes2.xml new file mode 100644 index 0000000..73ed453 --- /dev/null +++ b/packages/SystemUI/res/drawable-nodpi/mm_eyes2.xml @@ -0,0 +1,27 @@ +<!-- +Copyright (C) 2015 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.0" + android:viewportHeight="24.0"> + <path + android:fillColor="#FF000000" + android:pathData="M7.4,11.7c-0.6,0,-0.7,0.7,-0.7,0.3c0,-0.4,0.3,-0.7,0.7,-0.7C7.7,11.3,8,11.6,8,12C8,12.4,7.9,11.7,7.4,11.7z "/> + <path + android:fillColor="#FF000000" + android:pathData="M16.6,11.7c-0.6,0,-0.7,0.7,-0.7,0.3c0,-0.4,0.3,-0.7,0.7,-0.7s0.7,0.3,0.7,0.7C17.3,12.4,17.2,11.7,16.6,11.7 z"/> +</vector> diff --git a/packages/SystemUI/res/drawable-nodpi/mm_head.xml b/packages/SystemUI/res/drawable-nodpi/mm_head.xml new file mode 100644 index 0000000..c6a6465 --- /dev/null +++ b/packages/SystemUI/res/drawable-nodpi/mm_head.xml @@ -0,0 +1,30 @@ +<!-- +Copyright (C) 2015 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.0" + android:viewportHeight="24.0"> + <path + android:pathData="M18.6,5.4C18.1,5,16,4,12,4S5.9,5,5.4,5.4C5,5.9,4,8,4,12s1,6.1,1.4,6.6C5.9,19,8,20,12,20s6.1,-1,6.6,-1.4 C19,18.1,20,16,20,12S19,5.9,18.6,5.4z" + android:fillColor="#FFFFFF"/> + <path + android:pathData="M5.4,5.7 + a 6.6 1.7 0 1 1 13.2 0 + a 6.6 1.7 0 1 1 -13.2 0 + z" + android:fillColor="#33000000" /> +</vector> diff --git a/packages/SystemUI/res/drawable-nodpi/mm_mouth1.xml b/packages/SystemUI/res/drawable-nodpi/mm_mouth1.xml new file mode 100644 index 0000000..2ba6c5e --- /dev/null +++ b/packages/SystemUI/res/drawable-nodpi/mm_mouth1.xml @@ -0,0 +1,24 @@ +<!-- +Copyright (C) 2015 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.0" + android:viewportHeight="24.0"> + <path + android:fillColor="#FF000000" + android:pathData="M6.5,15.5c-0.6,0,-0.9,-0.1,-1.1,-0.2c0,0,0,-0.1,0,-0.2c0,0,0.1,0,0.2,0c0.2,0.2,1.1,0.2,2.5,0.1c1,-0.1,2.3,-0.1,4,-0.1 c1.6,0,2.9,0.1,4,0.1c1.4,0.1,2.3,0.1,2.5,-0.1c0,0,0.1,0,0.2,0c0,0,0,0.1,0,0.2c-0.3,0.3,-1.2,0.3,-2.7,0.2c-1,-0.1,-2.3,-0.1,-4,-0.1 c-1.6,0,-2.9,0.1,-4,0.1C7.4,15.5,6.9,15.5,6.5,15.5z"/> +</vector> diff --git a/packages/SystemUI/res/drawable-nodpi/mm_mouth2.xml b/packages/SystemUI/res/drawable-nodpi/mm_mouth2.xml new file mode 100644 index 0000000..50bd98b --- /dev/null +++ b/packages/SystemUI/res/drawable-nodpi/mm_mouth2.xml @@ -0,0 +1,24 @@ +<!-- +Copyright (C) 2015 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.0" + android:viewportHeight="24.0"> + <path + android:fillColor="#FF000000" + android:pathData="M18.6,15.1c0,0,-0.1,0,-0.2,0c-0.3,0.3,-1.6,0.3,-3.1,0.3c-0.4,0,-0.9,0,-1.4,0c-0.6,0,-1.3,0,-2,0s-1.4,0,-2,0 c-0.5,0,-1,0,-1.4,0c-1.5,0,-2.8,0,-3.1,-0.3c0,0,-0.1,0,-0.2,0c0,0,0,0.1,0,0.1s0,0.1,0,0.1c0.6,0.6,3.1,1,6.6,1s6.1,-0.4,6.6,-1 C18.7,15.2,18.7,15.2,18.6,15.1C18.7,15.1,18.7,15.1,18.6,15.1z"/> +</vector> diff --git a/packages/SystemUI/res/drawable-nodpi/mm_mouth3.xml b/packages/SystemUI/res/drawable-nodpi/mm_mouth3.xml new file mode 100644 index 0000000..93258ed --- /dev/null +++ b/packages/SystemUI/res/drawable-nodpi/mm_mouth3.xml @@ -0,0 +1,24 @@ +<!-- +Copyright (C) 2015 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.0" + android:viewportHeight="24.0"> + <path + android:fillColor="#FF000000" + android:pathData="M10.3,15.2c0.1,0.9,0.7,1.7,1.7,1.7s1.6,-0.8,1.7,-1.7"/> +</vector> diff --git a/packages/SystemUI/res/drawable-nodpi/mm_mouth4.xml b/packages/SystemUI/res/drawable-nodpi/mm_mouth4.xml new file mode 100644 index 0000000..c629492 --- /dev/null +++ b/packages/SystemUI/res/drawable-nodpi/mm_mouth4.xml @@ -0,0 +1,24 @@ +<!-- +Copyright (C) 2015 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.0" + android:viewportHeight="24.0"> + <path + android:fillColor="#FF000000" + android:pathData="M12.0,16.0m-0.9,0.0a0.9,0.9,0,1,1,1.8,0.0a0.9,0.9,0,1,1,-1.8,0.0"/> +</vector> diff --git a/packages/SystemUI/res/drawable-nodpi/moon.xml b/packages/SystemUI/res/drawable-nodpi/moon.xml new file mode 100644 index 0000000..4ee6286 --- /dev/null +++ b/packages/SystemUI/res/drawable-nodpi/moon.xml @@ -0,0 +1,24 @@ +<!-- +Copyright (C) 2014 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="48.0dp" + android:height="48.0dp" + android:viewportWidth="48.0" + android:viewportHeight="48.0"> + <path + android:pathData="M18.000000,4.000000c-2.100000,0.000000 -4.100000,0.300000 -6.000000,0.900000C20.100000,7.500000 26.000000,15.000000 26.000000,24.000000s-5.900000,16.500000 -14.000000,19.100000c1.900000,0.600000 3.900000,0.900000 6.000000,0.900000c11.000000,0.000000 20.000000,-9.000000 20.000000,-20.000000S29.000000,4.000000 18.000000,4.000000z" + android:fillColor="#FFF2F2FF"/> +</vector> diff --git a/packages/SystemUI/res/drawable-nodpi/mountain1.xml b/packages/SystemUI/res/drawable-nodpi/mountain1.xml new file mode 100644 index 0000000..52e22d0 --- /dev/null +++ b/packages/SystemUI/res/drawable-nodpi/mountain1.xml @@ -0,0 +1,33 @@ +<!-- +Copyright (C) 2015 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="48dp" + android:height="48dp" + android:viewportWidth="48.0" + android:viewportHeight="48.0"> + <path + android:pathData="M0.0,48.0l24.0,-36.0l24.0,36.0z" + android:fillColor="#4DB6AC"/> + <path + android:pathData="M24.0,12.0l-9.9,36.0l33.9,0.0z" + android:fillColor="#00897B"/> + <path + android:pathData="M24.0,12.0l7.700001,11.5l-5.300001,-5.0l-0.8999996,0.8999996l-1.5,-1.2999992l-4.6000004,10.5z" + android:fillColor="#CCCCCC"/> + <path + android:pathData="M24.0,12.0l-8.1,12.200001l2.3000011,1.8999996l1.1999989,2.5z" + android:fillColor="#FFFFFF"/> +</vector> diff --git a/packages/SystemUI/res/drawable-nodpi/mountain2.xml b/packages/SystemUI/res/drawable-nodpi/mountain2.xml new file mode 100644 index 0000000..ad23bdd --- /dev/null +++ b/packages/SystemUI/res/drawable-nodpi/mountain2.xml @@ -0,0 +1,27 @@ +<!-- +Copyright (C) 2015 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="48dp" + android:height="48dp" + android:viewportWidth="48.0" + android:viewportHeight="48.0"> + <path + android:pathData="M0.0,48.0l24.0,-36.0l24.0,36.0z" + android:fillColor="#4DB6AC"/> + <path + android:pathData="M24.0,12.0l-13.2,36.0l37.2,0.0z" + android:fillColor="#00897B"/> +</vector> diff --git a/packages/SystemUI/res/drawable-nodpi/mountain3.xml b/packages/SystemUI/res/drawable-nodpi/mountain3.xml new file mode 100644 index 0000000..02942d7 --- /dev/null +++ b/packages/SystemUI/res/drawable-nodpi/mountain3.xml @@ -0,0 +1,57 @@ +<!-- +Copyright (C) 2015 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="48dp" + android:height="48dp" + android:viewportWidth="48.0" + android:viewportHeight="48.0"> + <path + android:pathData="M0.1,48.0l21.0,-31.5l20.999998,31.5z" + android:fillColor="#4DB6AC"/> + <path + android:pathData="M21.1,16.5l-7.5,31.5l28.499998,0.0z" + android:fillColor="#00897B"/> + <path + android:pathData="M13.2,28.4l7.9000006,-11.9l-1.0,4.0z" + android:fillColor="#FFFFFF"/> + <path + android:pathData="M20.1,20.5l4.5,1.3999996l-3.5,-5.3999996z" + android:fillColor="#CCCCCC"/> + <path + android:pathData="M2.1,55.8l25.5,-38.4l25.6,38.4z" + android:fillColor="#4DB6AC"/> + <path + android:pathData="M27.6,17.4l-9.0,38.4l34.6,0.0z" + android:fillColor="#00897B"/> + <path + android:pathData="M18.6,31.0l9.0,-13.6l-1.5,6.700001z" + android:fillColor="#FFFFFF"/> + <path + android:pathData="M26.1,24.1l2.1999989,-2.2000008l3.7000008,2.0l-4.3999996,-6.5z" + android:fillColor="#CCCCCC"/> + <path + android:pathData="M8.9,59.1l19.9,-29.899998l20.0,29.899998z" + android:fillColor="#4DB6AC"/> + <path + android:pathData="M28.8,29.2l-7.0,29.899998l27.0,0.0z" + android:fillColor="#00897B"/> + <path + android:pathData="M25.1,34.9l3.6999989,-5.700001l-2.0999985,9.0l0.0,-4.5z" + android:fillColor="#FFFFFF"/> + <path + android:pathData="M26.7,38.2l5.5,-3.9000015l-3.4000015,-5.0999985z" + android:fillColor="#CCCCCC"/> +</vector> diff --git a/packages/SystemUI/res/drawable-nodpi/play.xml b/packages/SystemUI/res/drawable-nodpi/play.xml new file mode 100644 index 0000000..747e60b --- /dev/null +++ b/packages/SystemUI/res/drawable-nodpi/play.xml @@ -0,0 +1,27 @@ +<!-- +Copyright (C) 2015 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="48.0dp" + android:height="48.0dp" + android:viewportWidth="24.0" + android:viewportHeight="24.0"> + <path + android:fillColor="#FF000000" + android:pathData="M8.0,5.0l0.0,14.0l11.0,-7.0z"/> + <path + android:pathData="M0 0h24v24H0z" + android:fillColor="#00000000"/> +</vector> diff --git a/packages/SystemUI/res/drawable-nodpi/plus.xml b/packages/SystemUI/res/drawable-nodpi/plus.xml new file mode 100644 index 0000000..2bdb0b7 --- /dev/null +++ b/packages/SystemUI/res/drawable-nodpi/plus.xml @@ -0,0 +1,27 @@ +<!-- +Copyright (C) 2015 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="48.0dp" + android:height="48.0dp" + android:viewportWidth="48.0" + android:viewportHeight="48.0"> + <path + android:pathData="M4.0,20.0l40.0,0.0l0.0,8.0l-40.0,0.0z" + android:fillColor="#FFFFFF"/> + <path + android:pathData="M20.0,4.0l8.0,0.0l0.0,40.0l-8.0,0.0z" + android:fillColor="#FFFFFF"/> +</vector> diff --git a/packages/SystemUI/res/drawable-nodpi/ripplebg.xml b/packages/SystemUI/res/drawable-nodpi/ripplebg.xml new file mode 100644 index 0000000..21c66eb --- /dev/null +++ b/packages/SystemUI/res/drawable-nodpi/ripplebg.xml @@ -0,0 +1,25 @@ +<!-- +Copyright (C) 2014 The Android Open Source Project + + Licensed under the Apache License, Version 2 (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"> + <item android:state_focused="true"> + <ripple android:color="#DDDDDD"> + <item><shape android:shape="oval"><solid android:color="#FFFFFF" /></shape></item> + </ripple> + </item> + <item> + <shape android:shape="oval"><solid android:color="#AAAAAA" /></shape> + </item> +</selector>
\ No newline at end of file diff --git a/packages/SystemUI/res/drawable-nodpi/scorecard.xml b/packages/SystemUI/res/drawable-nodpi/scorecard.xml new file mode 100644 index 0000000..f22ec7b --- /dev/null +++ b/packages/SystemUI/res/drawable-nodpi/scorecard.xml @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="utf-8"?> +<shape + xmlns:android="http://schemas.android.com/apk/res/android" + android:shape="rectangle" + > + <corners + android:radius="4dp" /> + <solid + android:color="#ffffffff" /> +</shape> diff --git a/packages/SystemUI/res/drawable-nodpi/scorecard_gameover.xml b/packages/SystemUI/res/drawable-nodpi/scorecard_gameover.xml new file mode 100644 index 0000000..f663a66 --- /dev/null +++ b/packages/SystemUI/res/drawable-nodpi/scorecard_gameover.xml @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="utf-8"?> +<shape + xmlns:android="http://schemas.android.com/apk/res/android" + android:shape="rectangle" + > + <corners + android:radius="8dp" /> + <solid + android:color="#ffff0000" /> +</shape> diff --git a/packages/SystemUI/res/drawable-nodpi/star.xml b/packages/SystemUI/res/drawable-nodpi/star.xml new file mode 100644 index 0000000..73ca04a --- /dev/null +++ b/packages/SystemUI/res/drawable-nodpi/star.xml @@ -0,0 +1,24 @@ +<!-- +Copyright (C) 2014 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="48.0dp" + android:height="48.0dp" + android:viewportWidth="48.0" + android:viewportHeight="48.0"> + <path + android:pathData="M30.250000,17.750000L24.000000,4.000000l-6.250000,13.750000L4.000000,24.000000l13.750000,6.250000L24.000000,44.000000l6.250000,-13.750000L44.000000,24.000000L30.250000,17.750000z" + android:fillColor="#FFFFFF"/> +</vector> diff --git a/packages/SystemUI/res/drawable-nodpi/sun.xml b/packages/SystemUI/res/drawable-nodpi/sun.xml new file mode 100644 index 0000000..3e4a233 --- /dev/null +++ b/packages/SystemUI/res/drawable-nodpi/sun.xml @@ -0,0 +1,29 @@ +<!-- +Copyright (C) 2014 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="48.0dp" + android:height="48.0dp" + android:viewportWidth="48.0" + android:viewportHeight="48.0"> + <group> + <path + android:pathData="M 24,8 A 16,16 0 1,0 24.0001,8 z" + android:fillColor="#FFFFFFCC" /> + <path + android:pathData="M40.0,30.6l6.6,-6.6L40.0,17.4L40.0,8.0l-9.4,0.0L24.0,1.4L17.4,8.0L8.0,8.0l0.0,9.4L1.4,24.0L8.0,30.6L8.0,40.0l9.4,0.0l6.6,6.6l6.6,-6.6L40.0,40.0L40.0,30.6zM24.0,36.0c-6.6,0.0 -12.0,-5.4 -12.0,-12.0s5.4,-12.0 12.0,-12.0c6.6,0.0 12.0,5.4 12.0,12.0S30.6,36.0 24.0,36.0z" + android:fillColor="#FFFFFF40"/> + </group> +</vector> diff --git a/packages/SystemUI/res/layout/lland.xml b/packages/SystemUI/res/layout/lland.xml deleted file mode 100644 index 71a16c9..0000000 --- a/packages/SystemUI/res/layout/lland.xml +++ /dev/null @@ -1,53 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- - Copyright (C) 2014 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. ---> -<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" - android:orientation="vertical" - android:layout_width="match_parent" - android:layout_height="match_parent" - > - <com.android.systemui.egg.LLand - android:id="@+id/world" - android:layout_width="match_parent" - android:layout_height="match_parent"> - </com.android.systemui.egg.LLand> - <TextView - android:id="@+id/score" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:textSize="32sp" - android:textColor="#FFAAAAAA" - android:layout_marginTop="32dp" - android:layout_marginStart="16dp" - android:layout_gravity="top|start" - android:paddingStart="16dp" - android:paddingEnd="16dp" - android:paddingTop="8dp" - android:paddingBottom="8dp" - android:background="@drawable/scorecard" - /> - <TextView - android:id="@+id/welcome" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:textSize="30sp" - android:textColor="#FFFFFFFF" - android:layout_gravity="center" - android:layout_marginTop="70dp" - android:visibility="gone" - /> -</FrameLayout> - diff --git a/packages/SystemUI/res/layout/mland.xml b/packages/SystemUI/res/layout/mland.xml new file mode 100644 index 0000000..d1b6d00 --- /dev/null +++ b/packages/SystemUI/res/layout/mland.xml @@ -0,0 +1,103 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + Copyright (C) 2015 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. +--> +<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" + android:orientation="vertical" + android:layout_width="match_parent" + android:layout_height="match_parent" + > + <com.android.systemui.egg.MLand + android:id="@+id/world" + android:layout_width="match_parent" + android:layout_height="match_parent"> + </com.android.systemui.egg.MLand> + <FrameLayout + android:id="@+id/welcome" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:visibility="gone" + android:background="#a0000000" + android:clickable="true" + > + <FrameLayout + android:id="@+id/play_button" + android:layout_width="72dp" + android:layout_height="72dp" + android:layout_gravity="center" + android:clickable="true" + android:background="@drawable/ripplebg" + android:focusable="true" + android:onClick="startButtonPressed" + > + <ImageView + android:id="@+id/play_button_image" + android:layout_width="48dp" + android:layout_height="48dp" + android:scaleType="fitCenter" + android:layout_gravity="center" + android:tint="#000000" + android:src="@drawable/play" + /> + <TextView + android:id="@+id/play_button_text" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_gravity="center" + android:alpha="0" + android:textSize="40dp" + android:textColor="#000000" + /> + </FrameLayout> + </FrameLayout> + <LinearLayout + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_gravity="top|center_horizontal" + android:orientation="horizontal" + android:gravity="center_vertical" + android:id="@+id/player_setup" + > + <ImageButton + style="@android:style/Widget.Material.Button.Borderless" + android:id="@+id/player_minus_button" + android:layout_width="48dp" + android:layout_height="48dp" + android:padding="10dp" + android:scaleType="centerInside" + android:onClick="playerMinus" + android:src="@drawable/minus" + /> + <LinearLayout + android:id="@+id/scores" + android:layout_width="wrap_content" + android:layout_height="64dp" + android:padding="12dp" + android:orientation="horizontal" + android:clipToPadding="false" + > + </LinearLayout> + <ImageButton + style="@android:style/Widget.Material.Button.Borderless" + android:id="@+id/player_plus_button" + android:layout_width="48dp" + android:layout_height="48dp" + android:padding="10dp" + android:scaleType="centerInside" + android:onClick="playerPlus" + android:src="@drawable/plus" + /> + </LinearLayout> +</FrameLayout> diff --git a/packages/SystemUI/res/layout/mland_scorefield.xml b/packages/SystemUI/res/layout/mland_scorefield.xml new file mode 100644 index 0000000..0ed72e4 --- /dev/null +++ b/packages/SystemUI/res/layout/mland_scorefield.xml @@ -0,0 +1,32 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + Copyright (C) 2015 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. +--> +<TextView + xmlns:android="http://schemas.android.com/apk/res/android" + android:id="@+id/score" + android:layout_width="wrap_content" + android:layout_height="match_parent" + android:textStyle="bold" + android:textSize="22sp" + android:gravity="center" + android:textColor="#FFAAAAAA" + android:paddingStart="12dp" + android:paddingEnd="12dp" + android:paddingTop="4dp" + android:paddingBottom="4dp" + android:background="@drawable/scorecard" + android:elevation="@dimen/hud_z" + /> diff --git a/packages/SystemUI/res/values/lland_strings.xml b/packages/SystemUI/res/values/lland_strings.xml deleted file mode 100644 index ce88157..0000000 --- a/packages/SystemUI/res/values/lland_strings.xml +++ /dev/null @@ -1,22 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- -/** - * Copyright (c) 2014, 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. - */ ---> -<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - <!-- Name of the L Land easter egg. DO NOT TRANSLATE --> - <string name="lland">L Land</string> -</resources> diff --git a/packages/SystemUI/res/values/lland_config.xml b/packages/SystemUI/res/values/mland_config.xml index a9e732e..0ca88ae 100644 --- a/packages/SystemUI/res/values/lland_config.xml +++ b/packages/SystemUI/res/values/mland_config.xml @@ -1,33 +1,30 @@ <?xml version="1.0" encoding="utf-8"?> <!-- -/* -** Copyright 2014, 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. -*/ ---> + Copyright (C) 2015 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. +--> <resources> <dimen name="obstacle_spacing">380dp</dimen> <dimen name="translation_per_sec">100dp</dimen> <dimen name="boost_dv">550dp</dimen> <dimen name="player_hit_size">40dp</dimen> <dimen name="player_size">40dp</dimen> - <dimen name="obstacle_width">90dp</dimen> - <dimen name="obstacle_stem_width">12dp</dimen> - <dimen name="obstacle_gap">170dp</dimen> + <dimen name="obstacle_width">130dp</dimen> + <dimen name="obstacle_stem_width">8dp</dimen> + <dimen name="obstacle_gap">140dp</dimen> <dimen name="obstacle_height_min">48dp</dimen> - <dimen name="building_width_min">20dp</dimen> + <dimen name="building_width_min">50dp</dimen> <dimen name="building_width_max">250dp</dimen> <dimen name="building_height_min">20dp</dimen> <dimen name="cloud_size_min">10dp</dimen> @@ -42,5 +39,5 @@ <dimen name="obstacle_z">18dp</dimen> <dimen name="player_z">18dp</dimen> <dimen name="player_z_boost">20dp</dimen> - <dimen name="hud_z">35dp</dimen> + <dimen name="hud_z">10dp</dimen> </resources> diff --git a/packages/SystemUI/res/values/mland_strings.xml b/packages/SystemUI/res/values/mland_strings.xml new file mode 100644 index 0000000..fada1ae --- /dev/null +++ b/packages/SystemUI/res/values/mland_strings.xml @@ -0,0 +1,20 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + Copyright (C) 2015 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. +--> +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <!-- Name of the easter egg. DO NOT TRANSLATE --> + <string name="mland">Marshmallow Land</string> +</resources> diff --git a/packages/SystemUI/src/com/android/systemui/egg/LLandActivity.java b/packages/SystemUI/src/com/android/systemui/egg/LLandActivity.java deleted file mode 100644 index 50221d3..0000000 --- a/packages/SystemUI/src/com/android/systemui/egg/LLandActivity.java +++ /dev/null @@ -1,43 +0,0 @@ -/* - * Copyright (C) 2014 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 com.android.systemui.egg; - -import android.app.Activity; -import android.os.Bundle; -import android.widget.TextView; - -import com.android.systemui.R; - -public class LLandActivity extends Activity { - LLand mLand; - - @Override - public void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.lland); - mLand = (LLand) findViewById(R.id.world); - mLand.setScoreField((TextView) findViewById(R.id.score)); - mLand.setSplash(findViewById(R.id.welcome)); - //Log.v(LLand.TAG, "focus: " + mLand.requestFocus()); - } - - @Override - public void onPause() { - mLand.stop(); - super.onPause(); - } -} diff --git a/packages/SystemUI/src/com/android/systemui/egg/LLand.java b/packages/SystemUI/src/com/android/systemui/egg/MLand.java index fa257b1..b84777b 100644 --- a/packages/SystemUI/src/com/android/systemui/egg/LLand.java +++ b/packages/SystemUI/src/com/android/systemui/egg/MLand.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2014 The Android Open Source Project + * Copyright (C) 2015 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. @@ -16,6 +16,7 @@ package com.android.systemui.egg; +import android.animation.LayoutTransition; import android.animation.TimeAnimator; import android.content.Context; import android.content.res.Resources; @@ -26,6 +27,7 @@ import android.graphics.Outline; import android.graphics.Paint; import android.graphics.Path; import android.graphics.PorterDuff; +import android.graphics.PorterDuffColorFilter; import android.graphics.Rect; import android.graphics.drawable.Drawable; import android.graphics.drawable.GradientDrawable; @@ -35,49 +37,51 @@ import android.os.Vibrator; import android.util.AttributeSet; import android.util.Log; import android.view.Gravity; +import android.view.InputDevice; import android.view.KeyEvent; +import android.view.LayoutInflater; import android.view.MotionEvent; -import android.util.Slog; import android.view.View; +import android.view.ViewGroup; import android.view.ViewOutlineProvider; -import android.view.animation.DecelerateInterpolator; import android.widget.FrameLayout; import android.widget.ImageView; import android.widget.TextView; -import com.android.systemui.R; - import java.util.ArrayList; -public class LLand extends FrameLayout { - public static final String TAG = "LLand"; +import com.android.internal.logging.MetricsLogger; + +import com.android.systemui.R; + +// It's like LLand, but "M"ultiplayer. +public class MLand extends FrameLayout { + public static final String TAG = "MLand"; public static final boolean DEBUG = Log.isLoggable(TAG, Log.DEBUG); public static final boolean DEBUG_DRAW = false; // DEBUG + public static final boolean SHOW_TOUCHES = true; + public static void L(String s, Object ... objects) { if (DEBUG) { - Slog.d(TAG, objects.length == 0 ? s : String.format(s, objects)); + Log.d(TAG, objects.length == 0 ? s : String.format(s, objects)); } } + public static final float PI_2 = (float) (Math.PI/2); + public static final boolean AUTOSTART = true; public static final boolean HAVE_STARS = true; - public static final float DEBUG_SPEED_MULTIPLIER = 1f; // 0.1f; + public static final float DEBUG_SPEED_MULTIPLIER = 0.5f; // only if DEBUG public static final boolean DEBUG_IDDQD = Log.isLoggable(TAG + ".iddqd", Log.DEBUG); - final static int[] POPS = { - // resid // spinny! // alpha - R.drawable.pop_belt, 0, 255, - R.drawable.pop_droid, 0, 255, - R.drawable.pop_pizza, 1, 255, - R.drawable.pop_stripes, 0, 255, - R.drawable.pop_swirl, 1, 255, - R.drawable.pop_vortex, 1, 255, - R.drawable.pop_vortex2, 1, 255, - R.drawable.pop_ball, 0, 190, - }; + public static final int DEFAULT_PLAYERS = 1; + public static final int MIN_PLAYERS = 1; + public static final int MAX_PLAYERS = 6; + + static final float CONTROLLER_VIBRATION_MULTIPLIER = 2f; private static class Params { public float TRANSLATION_PER_SEC; @@ -125,7 +129,7 @@ public class LLand extends FrameLayout { // Sanity checking if (OBSTACLE_MIN <= OBSTACLE_WIDTH / 2) { - Slog.e(TAG, "error: obstacles might be too short, adjusting"); + L("error: obstacles might be too short, adjusting"); OBSTACLE_MIN = OBSTACLE_WIDTH / 2 + 1; } } @@ -137,21 +141,24 @@ public class LLand extends FrameLayout { private final AudioAttributes mAudioAttrs = new AudioAttributes.Builder() .setUsage(AudioAttributes.USAGE_GAME).build(); - private TextView mScoreField; private View mSplash; + private ViewGroup mScoreFields; - private Player mDroid; + private ArrayList<Player> mPlayers = new ArrayList<Player>(); private ArrayList<Obstacle> mObstaclesInPlay = new ArrayList<Obstacle>(); private float t, dt; - private int mScore; private float mLastPipeTime; // in sec + private int mCurrentPipeId; // basically, equivalent to the current score private int mWidth, mHeight; private boolean mAnimating, mPlaying; private boolean mFrozen; // after death, a short backoff + private int mCountdown = 0; private boolean mFlipped; + private int mTaps; + private int mTimeOfDay; private static final int DAY = 0, NIGHT = 1, TWILIGHT = 2, SUNSET = 3; private static final int[][] SKIES = { @@ -161,26 +168,62 @@ public class LLand extends FrameLayout { { 0xFFa08020, 0xFF204080 }, // SUNSET }; + private int mScene; + private static final int SCENE_CITY = 0, SCENE_TX = 1, SCENE_ZRH = 2; + private static final int SCENE_COUNT = 3; + private static Params PARAMS; - public LLand(Context context) { + private static float dp = 1f; + + private Paint mTouchPaint, mPlayerTracePaint; + + private ArrayList<Integer> mGameControllers = new ArrayList<>(); + + public MLand(Context context) { this(context, null); } - public LLand(Context context, AttributeSet attrs) { + public MLand(Context context, AttributeSet attrs) { this(context, attrs, 0); } - public LLand(Context context, AttributeSet attrs, int defStyle) { + public MLand(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); + mVibrator = (Vibrator) context.getSystemService(Context.VIBRATOR_SERVICE); mAudioManager = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE); setFocusable(true); PARAMS = new Params(getResources()); - mTimeOfDay = irand(0, SKIES.length); + mTimeOfDay = irand(0, SKIES.length - 1); + mScene = irand(0, SCENE_COUNT); + + mTouchPaint = new Paint(Paint.ANTI_ALIAS_FLAG); + mTouchPaint.setColor(0x80FFFFFF); + mTouchPaint.setStyle(Paint.Style.FILL); + + mPlayerTracePaint = new Paint(Paint.ANTI_ALIAS_FLAG); + mPlayerTracePaint.setColor(0x80FFFFFF); + mPlayerTracePaint.setStyle(Paint.Style.STROKE); + mPlayerTracePaint.setStrokeWidth(2 * dp); // we assume everything will be laid out left|top setLayoutDirection(LAYOUT_DIRECTION_LTR); + + setupPlayers(DEFAULT_PLAYERS); + + MetricsLogger.count(getContext(), "egg_mland_create", 1); + } + + @Override + public void onAttachedToWindow() { + super.onAttachedToWindow(); + dp = getResources().getDisplayMetrics().density; + + reset(); + if (AUTOSTART) { + start(false); + } } @Override @@ -193,13 +236,18 @@ public class LLand extends FrameLayout { public float getGameTime() { return t; } public float getLastTimeStep() { return dt; } - public void setScoreField(TextView tv) { - mScoreField = tv; - if (tv != null) { - tv.setTranslationZ(PARAMS.HUD_Z); - if (!(mAnimating && mPlaying)) { - tv.setTranslationY(-500); - } + public void setScoreFieldHolder(ViewGroup vg) { + mScoreFields = vg; + if (vg != null) { + final LayoutTransition lt = new LayoutTransition(); + lt.setDuration(250); + mScoreFields.setLayoutTransition(lt); + } + for (Player p : mPlayers) { + mScoreFields.addView(p.mScoreField, + new MarginLayoutParams( + MarginLayoutParams.WRAP_CONTENT, + MarginLayoutParams.MATCH_PARENT)); } } @@ -207,23 +255,134 @@ public class LLand extends FrameLayout { mSplash = v; } + public static boolean isGamePad(InputDevice dev) { + int sources = dev.getSources(); + + // Verify that the device has gamepad buttons, control sticks, or both. + return (((sources & InputDevice.SOURCE_GAMEPAD) == InputDevice.SOURCE_GAMEPAD) + || ((sources & InputDevice.SOURCE_JOYSTICK) == InputDevice.SOURCE_JOYSTICK)); + } + + public ArrayList getGameControllers() { + mGameControllers.clear(); + int[] deviceIds = InputDevice.getDeviceIds(); + for (int deviceId : deviceIds) { + InputDevice dev = InputDevice.getDevice(deviceId); + if (isGamePad(dev)) { + if (!mGameControllers.contains(deviceId)) { + mGameControllers.add(deviceId); + } + } + } + return mGameControllers; + } + + public int getControllerPlayer(int id) { + final int player = mGameControllers.indexOf(id); + if (player < 0 || player >= mPlayers.size()) return 0; + return player; + } + @Override protected void onSizeChanged(int w, int h, int oldw, int oldh) { + dp = getResources().getDisplayMetrics().density; + stop(); + reset(); if (AUTOSTART) { start(false); } } - final float hsv[] = {0, 0, 0}; + final static float hsv[] = {0, 0, 0}; + + private static float luma(int bgcolor) { + return 0.2126f * (float) (bgcolor & 0xFF0000) / 0xFF0000 + + 0.7152f * (float) (bgcolor & 0xFF00) / 0xFF00 + + 0.0722f * (float) (bgcolor & 0xFF) / 0xFF; + } + + public Player getPlayer(int i) { + return i < mPlayers.size() ? mPlayers.get(i) : null; + } + + private int addPlayerInternal(Player p) { + mPlayers.add(p); + realignPlayers(); + TextView scoreField = (TextView) + LayoutInflater.from(getContext()).inflate(R.layout.mland_scorefield, null); + if (mScoreFields != null) { + mScoreFields.addView(scoreField, + new MarginLayoutParams( + MarginLayoutParams.WRAP_CONTENT, + MarginLayoutParams.MATCH_PARENT)); + } + p.setScoreField(scoreField); + return mPlayers.size()-1; + } + + private void removePlayerInternal(Player p) { + if (mPlayers.remove(p)) { + removeView(p); + mScoreFields.removeView(p.mScoreField); + realignPlayers(); + } + } + + private void realignPlayers() { + final int N = mPlayers.size(); + float x = (mWidth - (N-1) * PARAMS.PLAYER_SIZE) / 2; + for (int i=0; i<N; i++) { + final Player p = mPlayers.get(i); + p.setX(x); + x += PARAMS.PLAYER_SIZE; + } + } + + private void clearPlayers() { + while (mPlayers.size() > 0) { + removePlayerInternal(mPlayers.get(0)); + } + } + + public void setupPlayers(int num) { + clearPlayers(); + for (int i=0; i<num; i++) { + addPlayerInternal(Player.create(this)); + } + } + + public void addPlayer() { + if (getNumPlayers() == MAX_PLAYERS) return; + addPlayerInternal(Player.create(this)); + } + + public int getNumPlayers() { + return mPlayers.size(); + } + + public void removePlayer() { + if (getNumPlayers() == MIN_PLAYERS) return; + removePlayerInternal(mPlayers.get(mPlayers.size() - 1)); + } - private void thump() { + private void thump(int playerIndex, long ms) { if (mAudioManager.getRingerMode() == AudioManager.RINGER_MODE_SILENT) { // No interruptions. Not even game haptics. return; } - mVibrator.vibrate(80, mAudioAttrs); + if (playerIndex < mGameControllers.size()) { + int controllerId = mGameControllers.get(playerIndex); + InputDevice dev = InputDevice.getDevice(controllerId); + if (dev != null && dev.getVibrator().hasVibrator()) { + dev.getVibrator().vibrate( + (long) (ms * CONTROLLER_VIBRATION_MULTIPLIER), + mAudioAttrs); + return; + } + } + mVibrator.vibrate(ms, mAudioAttrs); } public void reset() { @@ -238,8 +397,6 @@ public class LLand extends FrameLayout { mFlipped = frand() > 0.5f; setScaleX(mFlipped ? -1 : 1); - setScore(0); - int i = getChildCount(); while (i-->0) { final View v = getChildAt(i); @@ -249,6 +406,7 @@ public class LLand extends FrameLayout { } mObstaclesInPlay.clear(); + mCurrentPipeId = 0; mWidth = getWidth(); mHeight = getHeight(); @@ -297,16 +455,29 @@ public class LLand extends FrameLayout { } else if (r1 < 0.6 && !cloudless) { s = new Cloud(getContext()); } else { - s = new Building(getContext()); - - s.z = (float)i/N; - s.setTranslationZ(PARAMS.SCENERY_Z * (1+s.z)); + switch (mScene) { + case SCENE_ZRH: + s = new Mountain(getContext()); + break; + case SCENE_TX: + s = new Cactus(getContext()); + break; + case SCENE_CITY: + default: + s = new Building(getContext()); + break; + } + s.z = (float) i / N; + // no more shadows for these things + //s.setTranslationZ(PARAMS.SCENERY_Z * (1+s.z)); s.v = 0.85f * s.z; // buildings move proportional to their distance - hsv[0] = 175; - hsv[1] = 0.25f; - hsv[2] = 1 * s.z; - s.setBackgroundColor(Color.HSVToColor(hsv)); - s.h = irand(PARAMS.BUILDING_HEIGHT_MIN, mh); + if (mScene == SCENE_CITY) { + s.setBackgroundColor(Color.GRAY); + s.h = irand(PARAMS.BUILDING_HEIGHT_MIN, mh); + } + final int c = (int)(255f*s.z); + final Drawable bg = s.getBackground(); + if (bg != null) bg.setColorFilter(Color.rgb(c,c,c), PorterDuff.Mode.MULTIPLY); } final LayoutParams lp = new LayoutParams(s.w, s.h); if (s instanceof Building) { @@ -321,15 +492,21 @@ public class LLand extends FrameLayout { } } + addView(s, lp); s.setTranslationX(frand(-lp.width, mWidth + lp.width)); } - mDroid = new Player(getContext()); - mDroid.setX(mWidth / 2); - mDroid.setY(mHeight / 2); - addView(mDroid, new LayoutParams(PARAMS.PLAYER_SIZE, PARAMS.PLAYER_SIZE)); + for (Player p : mPlayers) { + addView(p); // put it back! + p.reset(); + } + + realignPlayers(); + if (mAnim != null) { + mAnim.cancel(); + } mAnim = new TimeAnimator(); mAnim.setTimeListener(new TimeAnimator.TimeListener() { @Override @@ -339,58 +516,107 @@ public class LLand extends FrameLayout { }); } - private void setScore(int score) { - mScore = score; - if (mScoreField != null) { - mScoreField.setText(DEBUG_IDDQD ? "??" : String.valueOf(score)); - } - } - - private void addScore(int incr) { - setScore(mScore + incr); - } - public void start(boolean startPlaying) { - L("start(startPlaying=%s)", startPlaying?"true":"false"); - if (startPlaying) { - mPlaying = true; + L("start(startPlaying=%s)", startPlaying ? "true" : "false"); + if (startPlaying && mCountdown <= 0) { + showSplash(); - t = 0; - // there's a sucker born every OBSTACLE_PERIOD - mLastPipeTime = getGameTime() - PARAMS.OBSTACLE_PERIOD; + mSplash.findViewById(R.id.play_button).setEnabled(false); - if (mSplash != null && mSplash.getAlpha() > 0f) { - mSplash.setTranslationZ(PARAMS.HUD_Z); - mSplash.animate().alpha(0).translationZ(0).setDuration(400); + final View playImage = mSplash.findViewById(R.id.play_button_image); + final TextView playText = (TextView) mSplash.findViewById(R.id.play_button_text); - mScoreField.animate().translationY(0) - .setInterpolator(new DecelerateInterpolator()) - .setDuration(1500); - } + playImage.animate().alpha(0f); + playText.animate().alpha(1f); - mScoreField.setTextColor(0xFFAAAAAA); - mScoreField.setBackgroundResource(R.drawable.scorecard); - mDroid.setVisibility(View.VISIBLE); - mDroid.setX(mWidth / 2); - mDroid.setY(mHeight / 2); - } else { - mDroid.setVisibility(View.GONE); + mCountdown = 3; + post(new Runnable() { + @Override + public void run() { + if (mCountdown == 0) { + startPlaying(); + } else { + postDelayed(this, 500); + } + playText.setText(String.valueOf(mCountdown)); + mCountdown--; + } + }); + } + + for (Player p : mPlayers) { + p.setVisibility(View.INVISIBLE); } + if (!mAnimating) { mAnim.start(); mAnimating = true; } } + public void hideSplash() { + if (mSplash != null && mSplash.getVisibility() == View.VISIBLE) { + mSplash.setClickable(false); + mSplash.animate().alpha(0).translationZ(0).setDuration(300).withEndAction( + new Runnable() { + @Override + public void run() { + mSplash.setVisibility(View.GONE); + } + } + ); + } + } + + public void showSplash() { + if (mSplash != null && mSplash.getVisibility() != View.VISIBLE) { + mSplash.setClickable(true); + mSplash.setAlpha(0f); + mSplash.setVisibility(View.VISIBLE); + mSplash.animate().alpha(1f).setDuration(1000); + mSplash.findViewById(R.id.play_button_image).setAlpha(1f); + mSplash.findViewById(R.id.play_button_text).setAlpha(0f); + mSplash.findViewById(R.id.play_button).setEnabled(true); + mSplash.findViewById(R.id.play_button).requestFocus(); + } + } + + public void startPlaying() { + mPlaying = true; + + t = 0; + // there's a sucker born every OBSTACLE_PERIOD + mLastPipeTime = getGameTime() - PARAMS.OBSTACLE_PERIOD; + + hideSplash(); + + realignPlayers(); + mTaps = 0; + + final int N = mPlayers.size(); + MetricsLogger.histogram(getContext(), "egg_mland_players", N); + for (int i=0; i<N; i++) { + final Player p = mPlayers.get(i); + p.setVisibility(View.VISIBLE); + p.reset(); + p.start(); + p.boost(-1, -1); // start you off flying! + p.unboost(); // not forever, though + } + } + public void stop() { if (mAnimating) { mAnim.cancel(); mAnim = null; mAnimating = false; - mScoreField.setTextColor(0xFFFFFFFF); - mScoreField.setBackgroundResource(R.drawable.scorecard_gameover); - mTimeOfDay = irand(0, SKIES.length); // for next reset + mPlaying = false; + mTimeOfDay = irand(0, SKIES.length - 1); // for next reset + mScene = irand(0, SCENE_COUNT); mFrozen = true; + for (Player p : mPlayers) { + p.die(); + } postDelayed(new Runnable() { @Override public void run() { @@ -421,7 +647,11 @@ public class LLand extends FrameLayout { } public static final int irand(int a, int b) { - return (int) lerp(frand(), (float) a, (float) b); + return Math.round(frand((float) a, (float) b)); + } + + public static int pick(int[] l) { + return l[irand(0, l.length-1)]; } private void step(long t_ms, long dt_ms) { @@ -443,34 +673,58 @@ public class LLand extends FrameLayout { } } - // 2. Check for altitude - if (mPlaying && mDroid.below(mHeight)) { - if (DEBUG_IDDQD) { - poke(); - unpoke(); - } else { - L("player hit the floor"); - thump(); - stop(); + if (mPlaying) { + int livingPlayers = 0; + for (i = 0; i < mPlayers.size(); i++) { + final Player p = getPlayer(i); + + if (p.mAlive) { + // 2. Check for altitude + if (p.below(mHeight)) { + if (DEBUG_IDDQD) { + poke(i); + unpoke(i); + } else { + L("player %d hit the floor", i); + thump(i, 80); + p.die(); + } + } + + // 3. Check for obstacles + int maxPassedStem = 0; + for (int j = mObstaclesInPlay.size(); j-- > 0; ) { + final Obstacle ob = mObstaclesInPlay.get(j); + if (ob.intersects(p) && !DEBUG_IDDQD) { + L("player hit an obstacle"); + thump(i, 80); + p.die(); + } else if (ob.cleared(p)) { + if (ob instanceof Stem) { + maxPassedStem = Math.max(maxPassedStem, ((Stem)ob).id); + } + } + } + + if (maxPassedStem > p.mScore) { + p.addScore(1); + } + } + + if (p.mAlive) livingPlayers++; } - } - // 3. Check for obstacles - boolean passedBarrier = false; - for (int j = mObstaclesInPlay.size(); j-->0;) { - final Obstacle ob = mObstaclesInPlay.get(j); - if (mPlaying && ob.intersects(mDroid) && !DEBUG_IDDQD) { - L("player hit an obstacle"); - thump(); + if (livingPlayers == 0) { stop(); - } else if (ob.cleared(mDroid)) { - if (ob instanceof Stem) passedBarrier = true; - mObstaclesInPlay.remove(j); - } - } - if (mPlaying && passedBarrier) { - addScore(1); + MetricsLogger.count(getContext(), "egg_mland_taps", mTaps); + mTaps = 0; + final int playerCount = mPlayers.size(); + for (int pi=0; pi<playerCount; pi++) { + final Player p = mPlayers.get(pi); + MetricsLogger.histogram(getContext(), "egg_mland_score", p.getScore()); + } + } } // 4. Handle edge of screen @@ -480,6 +734,7 @@ public class LLand extends FrameLayout { if (v instanceof Obstacle) { if (v.getTranslationX() + v.getWidth() < 0) { removeViewAt(i); + mObstaclesInPlay.remove(v); } } else if (v instanceof Scenery) { final Scenery s = (Scenery) v; @@ -492,6 +747,7 @@ public class LLand extends FrameLayout { // 3. Time for more obstacles! if (mPlaying && (t - mLastPipeTime) > PARAMS.OBSTACLE_PERIOD) { mLastPipeTime = t; + mCurrentPipeId ++; final int obstacley = (int)(frand() * (mHeight - 2*PARAMS.OBSTACLE_MIN - PARAMS.OBSTACLE_GAP)) + PARAMS.OBSTACLE_MIN; @@ -523,11 +779,11 @@ public class LLand extends FrameLayout { p1.setTranslationY(-PARAMS.OBSTACLE_WIDTH); p1.setTranslationZ(PARAMS.OBSTACLE_Z); p1.setScaleX(0.25f); - p1.setScaleY(0.25f); + p1.setScaleY(-0.25f); p1.animate() .translationY(s1.h-inset) .scaleX(1f) - .scaleY(1f) + .scaleY(-1f) .setStartDelay(d1) .setDuration(250); mObstaclesInPlay.add(p1); @@ -568,18 +824,25 @@ public class LLand extends FrameLayout { mObstaclesInPlay.add(p2); } - if (DEBUG_DRAW) invalidate(); + if (SHOW_TOUCHES || DEBUG_DRAW) invalidate(); } - + @Override public boolean onTouchEvent(MotionEvent ev) { L("touch: %s", ev); - switch (ev.getAction()) { + final int actionIndex = ev.getActionIndex(); + final float x = ev.getX(actionIndex); + final float y = ev.getY(actionIndex); + int playerIndex = (int) (getNumPlayers() * (x / getWidth())); + if (mFlipped) playerIndex = getNumPlayers() - 1 - playerIndex; + switch (ev.getActionMasked()) { case MotionEvent.ACTION_DOWN: - poke(); + case MotionEvent.ACTION_POINTER_DOWN: + poke(playerIndex, x, y); return true; case MotionEvent.ACTION_UP: - unpoke(); + case MotionEvent.ACTION_POINTER_UP: + unpoke(playerIndex); return true; } return false; @@ -590,10 +853,10 @@ public class LLand extends FrameLayout { L("trackball: %s", ev); switch (ev.getAction()) { case MotionEvent.ACTION_DOWN: - poke(); + poke(0); return true; case MotionEvent.ACTION_UP: - unpoke(); + unpoke(0); return true; } return false; @@ -608,7 +871,8 @@ public class LLand extends FrameLayout { case KeyEvent.KEYCODE_SPACE: case KeyEvent.KEYCODE_ENTER: case KeyEvent.KEYCODE_BUTTON_A: - poke(); + int player = getControllerPlayer(ev.getDeviceId()); + poke(player); return true; } return false; @@ -623,7 +887,8 @@ public class LLand extends FrameLayout { case KeyEvent.KEYCODE_SPACE: case KeyEvent.KEYCODE_ENTER: case KeyEvent.KEYCODE_BUTTON_A: - unpoke(); + int player = getControllerPlayer(ev.getDeviceId()); + unpoke(player); return true; } return false; @@ -635,47 +900,76 @@ public class LLand extends FrameLayout { return false; } - private void poke() { - L("poke"); + private void poke(int playerIndex) { + poke(playerIndex, -1, -1); + } + + private void poke(int playerIndex, float x, float y) { + L("poke(%d)", playerIndex); if (mFrozen) return; if (!mAnimating) { reset(); - start(true); - } else if (!mPlaying) { - start(true); } - mDroid.boost(); - if (DEBUG) { - mDroid.dv *= DEBUG_SPEED_MULTIPLIER; - mDroid.animate().setDuration((long) (200/DEBUG_SPEED_MULTIPLIER)); + if (!mPlaying) { + start(true); + } else { + final Player p = getPlayer(playerIndex); + if (p == null) return; // no player for this controller + p.boost(x, y); + mTaps++; + if (DEBUG) { + p.dv *= DEBUG_SPEED_MULTIPLIER; + p.animate().setDuration((long) (200 / DEBUG_SPEED_MULTIPLIER)); + } } } - private void unpoke() { - L("unboost"); - if (mFrozen) return; - if (!mAnimating) return; - mDroid.unboost(); + private void unpoke(int playerIndex) { + L("unboost(%d)", playerIndex); + if (mFrozen || !mAnimating || !mPlaying) return; + final Player p = getPlayer(playerIndex); + if (p == null) return; // no player for this controller + p.unboost(); } @Override public void onDraw(Canvas c) { super.onDraw(c); + if (SHOW_TOUCHES) { + for (Player p : mPlayers) { + if (p.mTouchX > 0) { + mTouchPaint.setColor(0x80FFFFFF & p.color); + mPlayerTracePaint.setColor(0x80FFFFFF & p.color); + float x1 = p.mTouchX; + float y1 = p.mTouchY; + c.drawCircle(x1, y1, 100, mTouchPaint); + float x2 = p.getX() + p.getPivotX(); + float y2 = p.getY() + p.getPivotY(); + float angle = PI_2 - (float) Math.atan2(x2-x1, y2-y1); + x1 += 100*Math.cos(angle); + y1 += 100*Math.sin(angle); + c.drawLine(x1, y1, x2, y2, mPlayerTracePaint); + } + } + } + if (!DEBUG_DRAW) return; final Paint pt = new Paint(); pt.setColor(0xFFFFFFFF); - final int L = mDroid.corners.length; - final int N = L/2; - for (int i=0; i<N; i++) { - final int x = (int) mDroid.corners[i*2]; - final int y = (int) mDroid.corners[i*2+1]; - c.drawCircle(x, y, 4, pt); - c.drawLine(x, y, - mDroid.corners[(i*2+2)%L], - mDroid.corners[(i*2+3)%L], - pt); + for (Player p : mPlayers) { + final int L = p.corners.length; + final int N = L / 2; + for (int i = 0; i < N; i++) { + final int x = (int) p.corners[i * 2]; + final int y = (int) p.corners[i * 2 + 1]; + c.drawCircle(x, y, 4, pt); + c.drawLine(x, y, + p.corners[(i * 2 + 2) % L], + p.corners[(i * 2 + 3) % L], + pt); + } } pt.setStyle(Paint.Style.STROKE); @@ -685,11 +979,11 @@ public class LLand extends FrameLayout { pt.setColor(0x8000FF00); for (int i=0; i<M; i++) { final View v = getChildAt(i); - if (v == mDroid) continue; + if (v instanceof Player) continue; if (!(v instanceof GameView)) continue; if (v instanceof Pop) { - final Pop p = (Pop) v; - c.drawCircle(p.cx, p.cy, p.r, pt); + final Pop pop = (Pop) v; + c.drawCircle(pop.cx, pop.cy, pop.r, pt); } else { final Rect r = new Rect(); v.getHitRect(r); @@ -713,14 +1007,26 @@ public class LLand extends FrameLayout { public void step(long t_ms, long dt_ms, float t, float dt); } - private class Player extends ImageView implements GameView { + private static class Player extends ImageView implements GameView { public float dv; - + public int color; + private MLand mLand; private boolean mBoosting; + private float mTouchX = -1, mTouchY = -1; + private boolean mAlive; + private int mScore; + private TextView mScoreField; private final int[] sColors = new int[] { - 0xFF78C557, + //0xFF78C557, + 0xFFDB4437, + 0xFF3B78E7, + 0xFFF4B400, + 0xFF0F9D58, + 0xFF7B1880, + 0xFF9E9E9E, }; + static int sNextColor = 0; private final float[] sHull = new float[] { 0.3f, 0f, // left antenna @@ -734,12 +1040,58 @@ public class LLand extends FrameLayout { }; public final float[] corners = new float[sHull.length]; + public static Player create(MLand land) { + final Player p = new Player(land.getContext()); + p.mLand = land; + p.reset(); + p.setVisibility(View.INVISIBLE); + land.addView(p, new LayoutParams(PARAMS.PLAYER_SIZE, PARAMS.PLAYER_SIZE)); + return p; + } + + private void setScore(int score) { + mScore = score; + if (mScoreField != null) { + mScoreField.setText(DEBUG_IDDQD ? "??" : String.valueOf(score)); + } + } + + public int getScore() { + return mScore; + } + + private void addScore(int incr) { + setScore(mScore + incr); + } + + public void setScoreField(TextView tv) { + mScoreField = tv; + if (tv != null) { + setScore(mScore); // reapply + //mScoreField.setBackgroundResource(R.drawable.scorecard); + mScoreField.getBackground().setColorFilter(color, PorterDuff.Mode.SRC_ATOP); + mScoreField.setTextColor(luma(color) > 0.7f ? 0xFF000000 : 0xFFFFFFFF); + } + } + + public void reset() { + //setX(mLand.mWidth / 2); + setY(mLand.mHeight / 2 + + (int)(Math.random() * PARAMS.PLAYER_SIZE) + - PARAMS.PLAYER_SIZE / 2); + setScore(0); + setScoreField(mScoreField); // refresh color + mBoosting = false; + dv = 0; + } + public Player(Context context) { super(context); setBackgroundResource(R.drawable.android); getBackground().setTintMode(PorterDuff.Mode.SRC_ATOP); - getBackground().setTint(sColors[0]); + color = sColors[(sNextColor++%sColors.length)]; + getBackground().setTint(color); setOutlineProvider(new ViewOutlineProvider() { @Override public void getOutline(View view, Outline outline) { @@ -774,7 +1126,11 @@ public class LLand extends FrameLayout { } public void step(long t_ms, long dt_ms, float t, float dt) { - if (getVisibility() != View.VISIBLE) return; // not playing yet + if (!mAlive) { + // float away with the garbage + setTranslationX(getTranslationX()-PARAMS.TRANSLATION_PER_SEC*dt); + return; + } if (mBoosting) { dv = -PARAMS.BOOST_DV; @@ -792,6 +1148,12 @@ public class LLand extends FrameLayout { prepareCheckIntersections(); } + public void boost(float x, float y) { + mTouchX = x; + mTouchY = y; + boost(); + } + public void boost() { mBoosting = true; dv = -PARAMS.BOOST_DV; @@ -808,6 +1170,7 @@ public class LLand extends FrameLayout { public void unboost() { mBoosting = false; + mTouchX = mTouchY = -1; animate().cancel(); animate() @@ -816,6 +1179,19 @@ public class LLand extends FrameLayout { .translationZ(PARAMS.PLAYER_Z) .setDuration(200); } + + public void die() { + mAlive = false; + if (mScoreField != null) { + //mScoreField.setTextColor(0xFFFFFFFF); + //mScoreField.getBackground().setColorFilter(0xFF666666, PorterDuff.Mode.SRC_ATOP); + //mScoreField.setBackgroundResource(R.drawable.scorecard_gameover); + } + } + + public void start() { + mAlive = true; + } } private class Obstacle extends View implements GameView { @@ -855,20 +1231,31 @@ public class LLand extends FrameLayout { } } + static final int[] ANTENNAE = new int[] {R.drawable.mm_antennae, R.drawable.mm_antennae2}; + static final int[] EYES = new int[] {R.drawable.mm_eyes, R.drawable.mm_eyes2}; + static final int[] MOUTHS = new int[] {R.drawable.mm_mouth1, R.drawable.mm_mouth2, + R.drawable.mm_mouth3, R.drawable.mm_mouth4}; private class Pop extends Obstacle { int mRotate; int cx, cy, r; + // The marshmallow illustration and hitbox is 2/3 the size of its container. + Drawable antenna, eyes, mouth; + + public Pop(Context context, float h) { super(context, h); - int idx = 3*irand(0, POPS.length/3); - setBackgroundResource(POPS[idx]); - setAlpha((float)(POPS[idx+2])/255); - setScaleX(frand() < 0.5f ? -1 : 1); - mRotate = POPS[idx+1] == 0 ? 0 : (frand() < 0.5f ? -1 : 1); + setBackgroundResource(R.drawable.mm_head); + antenna = context.getDrawable(pick(ANTENNAE)); + if (frand() > 0.5f) { + eyes = context.getDrawable(pick(EYES)); + if (frand() > 0.8f) { + mouth = context.getDrawable(pick(MOUTHS)); + } + } setOutlineProvider(new ViewOutlineProvider() { @Override public void getOutline(View view, Outline outline) { - final int pad = (int) (getWidth() * 0.02f); + final int pad = (int) (getWidth() * 1f/6); outline.setOval(pad, pad, getWidth()-pad, getHeight()-pad); } }); @@ -893,20 +1280,56 @@ public class LLand extends FrameLayout { cx = (hitRect.left + hitRect.right)/2; cy = (hitRect.top + hitRect.bottom)/2; - r = getWidth()/2; + r = getWidth() / 3; // see above re 2/3 container size + } + + @Override + public void onDraw(Canvas c) { + super.onDraw(c); + if (antenna != null) { + antenna.setBounds(0, 0, c.getWidth(), c.getHeight()); + antenna.draw(c); + } + if (eyes != null) { + eyes.setBounds(0, 0, c.getWidth(), c.getHeight()); + eyes.draw(c); + } + if (mouth != null) { + mouth.setBounds(0, 0, c.getWidth(), c.getHeight()); + mouth.draw(c); + } } } private class Stem extends Obstacle { Paint mPaint = new Paint(); Path mShadow = new Path(); + GradientDrawable mGradient = new GradientDrawable(); boolean mDrawShadow; + Path mJandystripe; + Paint mPaint2; + int id; // use this to track which pipes have been cleared public Stem(Context context, float h, boolean drawShadow) { super(context, h); + id = mCurrentPipeId; + mDrawShadow = drawShadow; - mPaint.setColor(0xFFAAAAAA); setBackground(null); + mGradient.setOrientation(GradientDrawable.Orientation.LEFT_RIGHT); + mPaint.setColor(0xFF000000); + mPaint.setColorFilter(new PorterDuffColorFilter(0x22000000, PorterDuff.Mode.MULTIPLY)); + + if (frand() < 0.01f) { + mGradient.setColors(new int[]{0xFFFFFFFF, 0xFFDDDDDD}); + mJandystripe = new Path(); + mPaint2 = new Paint(); + mPaint2.setColor(0xFFFF0000); + mPaint2.setColorFilter(new PorterDuffColorFilter(0xFFFF0000, PorterDuff.Mode.MULTIPLY)); + } else { + //mPaint.setColor(0xFFA1887F); + mGradient.setColors(new int[]{0xFFBCAAA4, 0xFFA1887F}); + } } @Override @@ -924,18 +1347,29 @@ public class LLand extends FrameLayout { public void onDraw(Canvas c) { final int w = c.getWidth(); final int h = c.getHeight(); - final GradientDrawable g = new GradientDrawable(); - g.setOrientation(GradientDrawable.Orientation.LEFT_RIGHT); - g.setGradientCenter(w * 0.75f, 0); - g.setColors(new int[] { 0xFFFFFFFF, 0xFFAAAAAA }); - g.setBounds(0, 0, w, h); - g.draw(c); + mGradient.setGradientCenter(w * 0.75f, 0); + mGradient.setBounds(0, 0, w, h); + mGradient.draw(c); + + if (mJandystripe != null) { + mJandystripe.reset(); + mJandystripe.moveTo(0, w); + mJandystripe.lineTo(w, 0); + mJandystripe.lineTo(w, 2 * w); + mJandystripe.lineTo(0, 3 * w); + mJandystripe.close(); + for (int y=0; y<h; y+=4*w) { + c.drawPath(mJandystripe, mPaint2); + mJandystripe.offset(0, 4 * w); + } + } + if (!mDrawShadow) return; mShadow.reset(); - mShadow.moveTo(0,0); + mShadow.moveTo(0, 0); mShadow.lineTo(w, 0); - mShadow.lineTo(w, PARAMS.OBSTACLE_WIDTH/2+w*1.5f); - mShadow.lineTo(0, PARAMS.OBSTACLE_WIDTH/2); + mShadow.lineTo(w, PARAMS.OBSTACLE_WIDTH * 0.4f + w*1.5f); + mShadow.lineTo(0, PARAMS.OBSTACLE_WIDTH * 0.4f); mShadow.close(); c.drawPath(mShadow, mPaint); } @@ -961,11 +1395,30 @@ public class LLand extends FrameLayout { w = irand(PARAMS.BUILDING_WIDTH_MIN, PARAMS.BUILDING_WIDTH_MAX); h = 0; // will be setup later, along with z + } + } + + static final int[] CACTI = { R.drawable.cactus1, R.drawable.cactus2, R.drawable.cactus3 }; + private class Cactus extends Building { + public Cactus(Context context) { + super(context); - setTranslationZ(PARAMS.SCENERY_Z); + setBackgroundResource(pick(CACTI)); + w = h = irand(PARAMS.BUILDING_WIDTH_MAX / 4, PARAMS.BUILDING_WIDTH_MAX / 2); } } + static final int[] MOUNTAINS = { + R.drawable.mountain1, R.drawable.mountain2, R.drawable.mountain3 }; + private class Mountain extends Building { + public Mountain(Context context) { + super(context); + + setBackgroundResource(pick(MOUNTAINS)); + w = h = irand(PARAMS.BUILDING_WIDTH_MAX / 2, PARAMS.BUILDING_WIDTH_MAX); + z = 0; + } + } private class Cloud extends Scenery { public Cloud(Context context) { super(context); diff --git a/packages/SystemUI/src/com/android/systemui/egg/MLandActivity.java b/packages/SystemUI/src/com/android/systemui/egg/MLandActivity.java new file mode 100644 index 0000000..cdda45f --- /dev/null +++ b/packages/SystemUI/src/com/android/systemui/egg/MLandActivity.java @@ -0,0 +1,91 @@ +/* + * Copyright (C) 2015 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 com.android.systemui.egg; + +import android.app.Activity; +import android.os.Bundle; +import android.view.View; +import android.view.ViewGroup; + +import com.android.systemui.R; + +public class MLandActivity extends Activity { + MLand mLand; + + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.mland); + mLand = (MLand) findViewById(R.id.world); + mLand.setScoreFieldHolder((ViewGroup) findViewById(R.id.scores)); + final View welcome = findViewById(R.id.welcome); + mLand.setSplash(welcome); + final int numControllers = mLand.getGameControllers().size(); + if (numControllers > 0) { + mLand.setupPlayers(numControllers); + } + } + + public void updateSplashPlayers() { + final int N = mLand.getNumPlayers(); + final View minus = findViewById(R.id.player_minus_button); + final View plus = findViewById(R.id.player_plus_button); + if (N == 1) { + minus.setVisibility(View.INVISIBLE); + plus.setVisibility(View.VISIBLE); + plus.requestFocus(); + } else if (N == mLand.MAX_PLAYERS) { + minus.setVisibility(View.VISIBLE); + plus.setVisibility(View.INVISIBLE); + minus.requestFocus(); + } else { + minus.setVisibility(View.VISIBLE); + plus.setVisibility(View.VISIBLE); + } + } + + @Override + public void onPause() { + mLand.stop(); + super.onPause(); + } + + @Override + public void onResume() { + super.onResume(); + + mLand.onAttachedToWindow(); // resets and starts animation + updateSplashPlayers(); + mLand.showSplash(); + } + + public void playerMinus(View v) { + mLand.removePlayer(); + updateSplashPlayers(); + } + + public void playerPlus(View v) { + mLand.addPlayer(); + updateSplashPlayers(); + } + + public void startButtonPressed(View v) { + findViewById(R.id.player_minus_button).setVisibility(View.INVISIBLE); + findViewById(R.id.player_plus_button).setVisibility(View.INVISIBLE); + mLand.start(true); + } +} diff --git a/packages/SystemUI/src/com/android/systemui/egg/ShruggyActivity.java b/packages/SystemUI/src/com/android/systemui/egg/ShruggyActivity.java deleted file mode 100644 index 7459957..0000000 --- a/packages/SystemUI/src/com/android/systemui/egg/ShruggyActivity.java +++ /dev/null @@ -1,34 +0,0 @@ -/* - * Copyright (C) 2015 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 com.android.systemui.egg; - -import android.app.Activity; -import android.os.Bundle; -import android.util.Log; -import android.widget.Toast; -import com.android.systemui.R; - -public class ShruggyActivity extends Activity { - @Override - public void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - Toast.makeText(this, getString(R.string.regrettable_lack_of_easter_egg), - Toast.LENGTH_SHORT).show(); - Log.v("SystemUI", "Hey, it's just a preview; what did you expect?"); - finish(); - } -} |