Home | History | Annotate | Download | only in layout
      1 <?xml version="1.0" encoding="utf-8"?>
      2 <!-- Copyright (C) 2009 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 <!-- In-call onscreen touch UI elements, used on some platforms.
     18 
     19      This layout is a fullscreen overlay, drawn on top of the
     20      non-touch-sensitive parts of the in-call UI (i.e. the call card).
     21 
     22      The top-level View here is a InCallTouchUi (FrameLayout) with 2 children:
     23        (1) inCallControls: the widgets visible while a regular call (or calls) is in progress
     24        (2) incomingCallWidget: the UI displayed while an incoming call is ringing
     25      In usual cases, one of these is visible at any given moment.
     26      One exception is when incomingCallWidget is fading-out. At that moment, we show
     27      inCallControls beneath incomingCallWidget for smoother transition.
     28      -->
     29 <com.android.phone.InCallTouchUi xmlns:android="http://schemas.android.com/apk/res/android"
     30     xmlns:prvandroid="http://schemas.android.com/apk/prv/res/android"
     31     android:id="@+id/inCallTouchUi"
     32     android:layout_width="match_parent"
     33     android:layout_height="match_parent"
     34     >
     35 
     36     <!--
     37         (1) inCallControls: the widgets visible while a regular call
     38         (or calls) is in progress
     39     -->
     40     <RelativeLayout android:id="@+id/inCallControls"
     41                     android:layout_width="match_parent"
     42                     android:layout_height="match_parent"
     43                     android:visibility="gone"
     44                     >
     45         <!-- DTMF dialpad shown in the upper part of the screen
     46              (above the main cluster of buttons.) -->
     47         <ViewStub android:id="@+id/dtmf_twelve_key_dialer_stub"
     48                   android:layout="@layout/dtmf_twelve_key_dialer_view"
     49                   android:layout_width="match_parent"
     50                   android:layout_height="match_parent"
     51                   android:layout_above="@+id/bottomButtons"
     52                   android:layout_marginBottom="@dimen/dialpad_vertical_margin" />
     53 
     54         <!-- Main cluster of onscreen buttons on the lower part of the screen. -->
     55         <LinearLayout android:id="@+id/bottomButtons"
     56                       android:orientation="vertical"
     57                       android:layout_width="match_parent"
     58                       android:layout_height="wrap_content"
     59                       android:layout_alignParentBottom="true">
     60 
     61             <!-- Row 1, the "extra button row": A couple of relatively rare
     62                  buttons used only in certain call states.
     63                  Most of the time this whole row is GONE.
     64                  For now, at least, there's only ever one button visible here
     65                  at a time, so this can be a simple FrameLayout. -->
     66             <ViewStub android:id="@+id/extraButtonRow"
     67                       android:layout="@layout/extra_button_row"
     68                       android:layout_width="match_parent"
     69                       android:layout_height="wrap_content" />
     70 
     71             <!-- Row 2: The "End call" button. -->
     72             <ImageButton android:id="@+id/endButton"
     73                 style="@style/InCallEndButton"
     74                 android:layout_width="match_parent"
     75                 android:src="@drawable/ic_dial_end_call"
     76                 android:background="@drawable/end_call_background"
     77                 android:contentDescription="@string/onscreenEndCallText" />
     78 
     79             <!-- Row 3: The main batch of in-call buttons:
     80                     Dialpad / Audio mode / Mute / Hold / Add call
     81                  Visible in all states except while an incoming call is
     82                  ringing. -->
     83             <LinearLayout
     84                 android:orientation="horizontal"
     85                 android:layout_width="match_parent"
     86                 android:layout_height="wrap_content"
     87                 android:background="@drawable/dialpad_background"
     88                 android:paddingStart="@dimen/button_cluster_side_padding"
     89                 android:paddingEnd="@dimen/button_cluster_side_padding"
     90                 >
     91 
     92                 <!-- This row has either 4 or 5 buttons, depending on
     93                      whether the device supports "Hold" (i.e. 4 buttons on
     94                      CDMA devices, 5 buttons on GSM devices.)  The buttons
     95                      are interspersed with 'layout_weight="1"' placeholder
     96                      views so that they'll be spaced evenly in both cases.
     97 
     98                      But note there are a couple of *pairs* of buttons that share a
     99                      single "slot", namely Hold/Swap and Add/Merge.  For these, the
    100                      code in InCallTouchUi is responsible for making sure that at any
    101                      point exactly one of the pair is VISIBLE and the other is
    102                      GONE. -->
    103 
    104                 <!-- Separator between left padding and 1st button -->
    105                 <View style="@style/VerticalSeparator" />
    106 
    107                 <!-- "Dialpad" -->
    108                 <!-- This is a "compound button": it has checked and unchecked states. -->
    109                 <ToggleButton android:id="@+id/dialpadButton"
    110                     style="@style/InCallCompoundButton"
    111                     android:background="@drawable/btn_compound_dialpad"
    112                     android:contentDescription="@string/onscreenShowDialpadText"
    113                     />
    114 
    115                 <!-- Separator between 1st and 2nd button -->
    116                 <View style="@style/VerticalSeparator" />
    117 
    118                 <!-- "Audio mode" -->
    119                 <!-- This is a multi-mode button that can behave either like a
    120                      simple "compound button" with two states *or* like an
    121                      action button that brings up a popup menu; see
    122                      btn_compound_audio.xml and InCallTouchUi.updateAudioButton()
    123                      for the full details. -->
    124                 <ToggleButton android:id="@+id/audioButton"
    125                     style="@style/InCallCompoundButton"
    126                     android:background="@drawable/btn_compound_audio"
    127                     android:contentDescription="@string/onscreenAudioText"
    128                     />
    129 
    130                 <!-- Separator between 2nd and 3rd button -->
    131                 <View style="@style/VerticalSeparator" />
    132 
    133                 <!-- "Mute" -->
    134                 <!-- This is a "compound button": it has checked and unchecked states. -->
    135                 <ToggleButton android:id="@+id/muteButton"
    136                     style="@style/InCallCompoundButton"
    137                     android:background="@drawable/btn_compound_mute"
    138                     android:contentDescription="@string/onscreenMuteText"
    139                     />
    140 
    141                 <!-- Separator between 3rd and 4th button -->
    142                 <View style="@style/VerticalSeparator" />
    143 
    144                 <!-- This slot is either "Hold" or "Swap", depending on
    145                      the state of the call.   One or the other of these
    146                      must always be set to GONE. -->
    147                 <!-- "Hold" -->
    148                 <!-- This is a "compound button": it has checked and unchecked states. -->
    149                 <ToggleButton android:id="@+id/holdButton"
    150                     style="@style/InCallCompoundButton"
    151                     android:background="@drawable/btn_compound_hold"
    152                     android:contentDescription="@string/onscreenHoldText"
    153                     />
    154                 <!-- "Swap" (or "Manage calls" in some CDMA states) -->
    155                 <ImageButton android:id="@+id/swapButton"
    156                     style="@style/InCallButton"
    157                     android:src="@drawable/ic_incall_switch_holo_dark"
    158                     android:contentDescription="@string/onscreenSwapCallsText"
    159                     />
    160 
    161                 <!-- Separator between 4th and 5th button (if 5th exists) -->
    162                 <View android:id="@+id/holdSwapSpacer"
    163                       style="@style/VerticalSeparator" />
    164 
    165                 <!-- This slot is either "Add" or "Merge", depending on
    166                      the state of the call.  One or the other of these
    167                      must always be set to GONE. -->
    168                 <!-- "Add Call" -->
    169                 <ImageButton android:id="@+id/addButton"
    170                     style="@style/InCallButton"
    171                     android:src="@drawable/ic_add_contact_holo_dark"
    172                     android:contentDescription="@string/onscreenAddCallText"
    173                     />
    174                 <!-- "Merge calls" -->
    175                 <!-- This button is used only on GSM devices, where we know
    176                      that "Add" and "Merge" are never available at the same time.
    177                      The "Merge" button for CDMA devices is "cdmaMergeButton" above. -->
    178                 <ImageButton android:id="@+id/mergeButton"
    179                     style="@style/InCallButton"
    180                     android:src="@drawable/ic_merge_holo_dark"
    181                     android:contentDescription="@string/onscreenMergeCallsText"
    182                     />
    183 
    184                 <!-- Separator between 4th (or 5th) button and right padding -->
    185                 <View style="@style/VerticalSeparator" />
    186 
    187             </LinearLayout>
    188 
    189         </LinearLayout>
    190 
    191     </RelativeLayout>
    192 
    193     <!--
    194         (2) incomingCallWidget: the UI displayed while an incoming call is ringing.
    195             See InCallTouchUi.showIncomingCallWidget().
    196 
    197             Layout notes:
    198             - Use an opaque black background since we need to cover up
    199               a bit of the bottom of the contact photo
    200             - The verticalOffset value gets us a little extra space above
    201               the topmost "Respond by SMS" icon
    202             - The negative layout_marginBottom shifts us slightly downward;
    203               we're already aligned with the bottom of the screen, but we
    204               don't have an icon in the downward direction so the whole
    205               bottom area of this widget is just wasted space.
    206     -->
    207     <com.android.internal.widget.multiwaveview.GlowPadView
    208         android:id="@+id/incomingCallWidget"
    209         android:layout_width="match_parent"
    210         android:layout_height="wrap_content"
    211         android:layout_gravity="center|bottom"
    212         android:layout_marginTop="20dip"
    213         android:layout_marginBottom="-46dp"
    214         android:background="@android:color/black"
    215         android:visibility="gone"
    216         android:gravity="top"
    217 
    218         prvandroid:targetDrawables="@array/incoming_call_widget_3way_targets"
    219         prvandroid:targetDescriptions="@array/incoming_call_widget_3way_target_descriptions"
    220         prvandroid:directionDescriptions="@array/incoming_call_widget_3way_direction_descriptions"
    221         prvandroid:handleDrawable="@drawable/ic_in_call_touch_handle"
    222         prvandroid:innerRadius="@*android:dimen/glowpadview_inner_radius"
    223         prvandroid:outerRadius="@*android:dimen/glowpadview_target_placement_radius"
    224         prvandroid:outerRingDrawable="@*android:drawable/ic_lockscreen_outerring"
    225         prvandroid:snapMargin="@*android:dimen/glowpadview_snap_margin"
    226         prvandroid:vibrationDuration="20"
    227         prvandroid:feedbackCount="1"
    228         prvandroid:glowRadius="@*android:dimen/glowpadview_glow_radius"
    229         prvandroid:pointDrawable="@*android:drawable/ic_lockscreen_glowdot"
    230         />
    231 
    232 </com.android.phone.InCallTouchUi>
    233