1<?xml version="1.0" encoding="utf-8"?> 2<!-- Copyright (C) 2021 The Android Open Source Project 3 4 Licensed under the Apache License, Version 2.0 (the "License"); 5 you may not use this file except in compliance with the License. 6 You may obtain a copy of the License at 7 8 http://www.apache.org/licenses/LICENSE-2.0 9 10 Unless required by applicable law or agreed to in writing, software 11 distributed under the License is distributed on an "AS IS" BASIS, 12 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 See the License for the specific language governing permissions and 14 limitations under the License. 15--> 16 17<androidx.constraintlayout.widget.ConstraintLayout 18 xmlns:android="http://schemas.android.com/apk/res/android" 19 xmlns:app="http://schemas.android.com/apk/res-auto" 20 xmlns:tools="http://schemas.android.com/tools" 21 android:id="@+id/activity_main" 22 android:layout_width="match_parent" 23 android:layout_height="match_parent" 24 android:background="@android:color/background_dark" 25 android:windowIsFloating="true" 26 tools:context=".MainClusterActivity"> 27 28 <androidx.constraintlayout.widget.Guideline 29 android:layout_width="wrap_content" 30 android:layout_height="wrap_content" 31 android:id="@+id/left_unobscured" 32 android:orientation="vertical" 33 app:layout_constraintGuide_begin="@dimen/speedometer_overlap_width"/> 34 35 <androidx.constraintlayout.widget.Guideline 36 android:layout_width="wrap_content" 37 android:layout_height="wrap_content" 38 android:id="@+id/right_unobscured" 39 android:orientation="vertical" 40 app:layout_constraintGuide_end="@dimen/speedometer_overlap_width"/> 41 42 <androidx.constraintlayout.widget.Guideline 43 android:layout_width="wrap_content" 44 android:layout_height="wrap_content" 45 android:id="@+id/gauges_top" 46 android:orientation="horizontal" 47 app:layout_constraintGuide_begin="@dimen/speedometer_top"/> 48 49 <SurfaceView 50 android:id="@+id/cluster_display" 51 android:layout_width="match_parent" 52 android:layout_height="0dp" 53 app:layout_constraintTop_toTopOf="parent" 54 app:layout_constraintBottom_toTopOf="@+id/info"/> 55 56 <ImageView 57 android:layout_width="match_parent" 58 android:layout_height="@dimen/navigation_gradient_height" 59 android:src="@drawable/gradient_top" 60 app:layout_constraintTop_toTopOf="parent"/> 61 62 <ImageView 63 android:layout_width="match_parent" 64 android:layout_height="@dimen/navigation_gradient_height" 65 android:src="@drawable/gradient_bottom" 66 app:layout_constraintBottom_toBottomOf="@+id/info"/> 67 68 <LinearLayout 69 android:id="@+id/info" 70 android:layout_width="0dp" 71 android:layout_height="@dimen/info_height" 72 app:layout_constraintLeft_toRightOf="@+id/left_unobscured" 73 app:layout_constraintRight_toLeftOf="@+id/right_unobscured" 74 app:layout_constraintBottom_toBottomOf="parent" 75 android:gravity="center"> 76 77 <LinearLayout 78 android:layout_width="wrap_content" 79 android:layout_height="wrap_content" 80 android:orientation="vertical" 81 android:gravity="start"> 82 83 <TextView 84 android:layout_height="wrap_content" 85 android:layout_width="wrap_content" 86 android:includeFontPadding="false" 87 android:text="@string/info_fuel_label" 88 android:textSize="@dimen/info_label_text_size"/> 89 90 <TextView 91 android:id="@+id/info_fuel" 92 android:layout_height="wrap_content" 93 android:layout_width="wrap_content" 94 android:includeFontPadding="false" 95 android:text="@string/info_value_empty" 96 android:textSize="@dimen/info_value_text_size"/> 97 98 <TextView 99 android:layout_height="wrap_content" 100 android:layout_width="wrap_content" 101 android:includeFontPadding="false" 102 android:text="@string/info_range_label" 103 android:textSize="@dimen/info_label_text_size"/> 104 105 <TextView 106 android:id="@+id/info_range" 107 android:layout_height="wrap_content" 108 android:layout_width="wrap_content" 109 android:includeFontPadding="false" 110 android:text="@string/info_value_empty" 111 android:textSize="@dimen/info_value_text_size"/> 112 </LinearLayout> 113 114 <include 115 android:layout_width="0dp" 116 android:layout_height="match_parent" 117 android:layout_weight="1" 118 android:id="@+id/navigation_state" 119 layout="@layout/include_navigation_state"/> 120 121 <LinearLayout 122 android:layout_width="wrap_content" 123 android:layout_height="wrap_content" 124 android:orientation="vertical" 125 android:gravity="end"> 126 127 <TextView 128 android:layout_height="wrap_content" 129 android:layout_width="wrap_content" 130 android:includeFontPadding="false" 131 android:text="@string/info_speed_label" 132 android:textSize="@dimen/info_label_text_size"/> 133 134 <TextView 135 android:id="@+id/info_speed" 136 android:layout_height="wrap_content" 137 android:layout_width="wrap_content" 138 android:includeFontPadding="false" 139 android:text="@string/info_value_empty" 140 android:textSize="@dimen/info_value_text_size"/> 141 142 <TextView 143 android:layout_height="wrap_content" 144 android:layout_width="wrap_content" 145 android:includeFontPadding="false" 146 android:text="@string/info_rpm_label" 147 android:textSize="@dimen/info_label_text_size"/> 148 149 <TextView 150 android:id="@+id/info_rpm" 151 android:layout_height="wrap_content" 152 android:layout_width="wrap_content" 153 android:includeFontPadding="false" 154 android:text="@string/info_value_empty" 155 android:textSize="@dimen/info_value_text_size"/> 156 </LinearLayout> 157 </LinearLayout> 158 159 <ImageView 160 android:id="@+id/left_gauge" 161 android:layout_width="@dimen/speedometer_width" 162 android:layout_height="@dimen/speedometer_height" 163 android:src="@drawable/speedometer" 164 android:elevation="2dp" 165 app:layout_constraintTop_toBottomOf="@+id/gauges_top" 166 app:layout_constraintRight_toLeftOf="@+id/left_unobscured"/> 167 168 <ImageView 169 android:id="@+id/right_gauge" 170 android:layout_width="@dimen/speedometer_width" 171 android:layout_height="@dimen/speedometer_height" 172 android:src="@drawable/speedometer" 173 android:elevation="2dp" 174 app:layout_constraintTop_toBottomOf="@+id/gauges_top" 175 app:layout_constraintLeft_toRightOf="@+id/right_unobscured"/> 176 177 <LinearLayout 178 android:layout_width="wrap_content" 179 android:layout_height="wrap_content" 180 android:orientation="vertical" 181 android:translationZ="4dp" 182 app:layout_constraintLeft_toLeftOf="parent" 183 app:layout_constraintBottom_toBottomOf="parent"> 184 185 <Button 186 android:id="@+id/btn_car_info" 187 android:clickable="true" 188 android:layout_width="@dimen/facet_icon_size" 189 android:layout_height="@dimen/facet_icon_size" 190 android:layout_margin="@dimen/facet_icon_margin" 191 android:background="@drawable/ic_car_info" 192 android:backgroundTint="@color/icon_color" 193 android:focusableInTouchMode="true" /> 194 <Button 195 android:id="@+id/btn_nav" 196 android:clickable="true" 197 android:layout_width="@dimen/facet_icon_size" 198 android:layout_height="@dimen/facet_icon_size" 199 android:layout_margin="@dimen/facet_icon_margin" 200 android:background="@drawable/ic_nav" 201 android:backgroundTint="@color/icon_color" 202 android:focusableInTouchMode="true" /> 203 <Button 204 android:id="@+id/btn_music" 205 android:clickable="true" 206 android:layout_width="@dimen/facet_icon_size" 207 android:layout_height="@dimen/facet_icon_size" 208 android:layout_margin="@dimen/facet_icon_margin" 209 android:background="@drawable/ic_music" 210 android:backgroundTint="@color/icon_color" 211 android:focusableInTouchMode="true" /> 212 <Button 213 android:id="@+id/btn_phone" 214 android:clickable="true" 215 android:layout_width="@dimen/facet_icon_size" 216 android:layout_height="@dimen/facet_icon_size" 217 android:layout_margin="@dimen/facet_icon_margin" 218 android:background="@drawable/ic_phone" 219 android:backgroundTint="@color/icon_color" 220 android:focusableInTouchMode="true" /> 221 </LinearLayout> 222 223 <LinearLayout 224 android:layout_width="wrap_content" 225 android:layout_height="wrap_content" 226 android:orientation="vertical" 227 android:translationZ="4dp" 228 app:layout_constraintRight_toRightOf="parent" 229 app:layout_constraintBottom_toBottomOf="parent"> 230 231 <TextView 232 android:id="@+id/gear_parked" 233 android:layout_height="wrap_content" 234 android:layout_width="wrap_content" 235 android:layout_marginHorizontal="@dimen/gear_icon_margin" 236 android:text="@string/gear_parked" 237 android:textColor="@color/icon_color" 238 android:textSize="@dimen/gear_text_size"/> 239 240 <TextView 241 android:id="@+id/gear_reverse" 242 android:layout_height="wrap_content" 243 android:layout_width="wrap_content" 244 android:layout_marginHorizontal="@dimen/gear_icon_margin" 245 android:text="@string/gear_reverse" 246 android:textColor="@color/icon_color" 247 android:textSize="@dimen/gear_text_size"/> 248 249 <TextView 250 android:id="@+id/gear_neutral" 251 android:layout_height="wrap_content" 252 android:layout_width="wrap_content" 253 android:layout_marginHorizontal="@dimen/gear_icon_margin" 254 android:text="@string/gear_neutral" 255 android:textColor="@color/icon_color" 256 android:textSize="@dimen/gear_text_size"/> 257 258 <TextView 259 android:id="@+id/gear_drive" 260 android:layout_height="wrap_content" 261 android:layout_width="wrap_content" 262 android:layout_marginHorizontal="@dimen/gear_icon_margin" 263 android:text="@string/gear_drive" 264 android:textColor="@color/icon_color" 265 android:textSize="@dimen/gear_text_size"/> 266 267 </LinearLayout> 268</androidx.constraintlayout.widget.ConstraintLayout> 269