Initial checkin of AOSP Messaging app.

b/23110861

Change-Id: I11db999bd10656801e618f78ab2b2ef74136fff1
diff --git a/res/layout/action_bar_conversation_name.xml b/res/layout/action_bar_conversation_name.xml
new file mode 100644
index 0000000..586cf83
--- /dev/null
+++ b/res/layout/action_bar_conversation_name.xml
@@ -0,0 +1,31 @@
+<?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.
+-->
+<RelativeLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    android:id="@+id/conversation_title_container"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content"
+    android:layout_gravity="fill_horizontal" >
+
+      <TextView
+            android:id="@+id/conversation_title"
+            style="@style/ConversationActionBarTitleTextStyle"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:layout_centerVertical="true" />
+</RelativeLayout>
\ No newline at end of file
diff --git a/res/layout/add_contacts_confirmation_dialog_body.xml b/res/layout/add_contacts_confirmation_dialog_body.xml
new file mode 100644
index 0000000..07f3d0f
--- /dev/null
+++ b/res/layout/add_contacts_confirmation_dialog_body.xml
@@ -0,0 +1,45 @@
+<?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.
+-->
+<LinearLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    android:orientation="horizontal"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:layout_gravity="center_vertical"
+    android:padding="20dp" >
+
+    <com.android.messaging.ui.ContactIconView
+        android:id="@+id/contact_icon"
+        android:layout_width="@dimen/conversation_list_contact_icon_size"
+        android:layout_height="@dimen/conversation_list_contact_icon_size"
+        android:importantForAccessibility="no"
+        app:iconSize="large"
+        android:layout_gravity="center_vertical"
+        android:clickable="true" />
+
+    <TextView
+        android:id="@+id/participant_name"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:singleLine="true"
+        android:maxLines="1"
+        android:ellipsize="end"
+        style="@style/AddContactConfirmationTextStyle"
+        android:layout_gravity="center_vertical" />
+
+</LinearLayout>
diff --git a/res/layout/all_contacts_list_view.xml b/res/layout/all_contacts_list_view.xml
new file mode 100644
index 0000000..fe05c4d
--- /dev/null
+++ b/res/layout/all_contacts_list_view.xml
@@ -0,0 +1,38 @@
+<?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:layout_width="match_parent"
+    android:layout_height="match_parent">
+
+    <ListView
+        android:id="@+id/all_contacts_list"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:paddingTop="8dp"
+        android:paddingBottom="8dp"
+        android:clipToPadding="false"
+        android:divider="@null"
+        android:dividerHeight="0px"
+        android:fastScrollEnabled="true" />
+
+    <include
+        layout="@layout/list_empty_view"
+        android:id="@+id/empty_view"
+        android:visibility="gone" />
+
+</FrameLayout>
diff --git a/res/layout/apn_preference_layout.xml b/res/layout/apn_preference_layout.xml
new file mode 100644
index 0000000..25a0323
--- /dev/null
+++ b/res/layout/apn_preference_layout.xml
@@ -0,0 +1,69 @@
+<?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.
+-->
+
+<!--
+    This is the layout file for an ApnPreference in the ApnSettingsActivity. The preference
+    is a list item.
+-->
+
+<LinearLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content"
+    android:minHeight="?android:attr/listPreferredItemHeight"
+    android:gravity="center_vertical"
+    style="@style/ApnPreferenceLayoutStyle">
+
+    <RelativeLayout
+        android:id="@+id/text_layout"
+        android:layout_width="0dip"
+        android:layout_height="match_parent"
+        android:gravity="center_vertical"
+        android:layout_weight="1"
+        android:focusable="true"
+        android:background="?android:attr/selectableItemBackground">
+
+        <TextView
+            android:id="@+android:id/title"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:focusable="true"
+            android:singleLine="true"
+            android:textAppearance="?android:attr/textAppearanceListItem" />
+
+        <TextView
+            android:id="@+android:id/summary"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_below="@android:id/title"
+            android:layout_alignStart="@android:id/title"
+            android:textAppearance="?android:attr/textAppearanceListItemSecondary"
+            android:textColor="?android:attr/textColorSecondary"
+            android:maxLines="2" />
+
+    </RelativeLayout>
+
+    <RadioButton
+        android:id="@+id/apn_radiobutton"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_marginStart="8dip"
+        android:layout_marginEnd="8dip"
+        android:layout_gravity="center_vertical"
+        android:clickable="true" />
+
+</LinearLayout>
diff --git a/res/layout/attachment_chooser_activity.xml b/res/layout/attachment_chooser_activity.xml
new file mode 100644
index 0000000..850716e
--- /dev/null
+++ b/res/layout/attachment_chooser_activity.xml
@@ -0,0 +1,22 @@
+<?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.
+-->
+<fragment
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    class="com.android.messaging.ui.attachmentchooser.AttachmentChooserFragment"
+    android:id="@+id/attachment_chooser_fragment"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent" />
\ No newline at end of file
diff --git a/res/layout/attachment_chooser_audio.xml b/res/layout/attachment_chooser_audio.xml
new file mode 100644
index 0000000..ea2f431
--- /dev/null
+++ b/res/layout/attachment_chooser_audio.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.
+-->
+<FrameLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    android:id="@+id/audio_attachment_background"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:background="@color/attachment_chooser_audio_background">
+
+    <com.android.messaging.ui.AudioAttachmentView
+        android:id="@+id/audio_attachment_view"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:gravity="center"
+        app:layoutMode="compact" />
+
+</FrameLayout>
diff --git a/res/layout/attachment_chooser_fragment.xml b/res/layout/attachment_chooser_fragment.xml
new file mode 100644
index 0000000..15e249a
--- /dev/null
+++ b/res/layout/attachment_chooser_fragment.xml
@@ -0,0 +1,29 @@
+<?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.
+-->
+<com.android.messaging.ui.attachmentchooser.AttachmentGridView
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:id="@+id/grid"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:padding="6dp"
+    android:columnWidth="@dimen/attachment_grid_image_cell_size"
+    android:numColumns="auto_fit"
+    android:verticalSpacing="6dp"
+    android:horizontalSpacing="6dp"
+    android:stretchMode="columnWidth"
+    android:gravity="center"
+    android:clipToPadding="false" />
diff --git a/res/layout/attachment_chooser_image.xml b/res/layout/attachment_chooser_image.xml
new file mode 100644
index 0000000..b635161
--- /dev/null
+++ b/res/layout/attachment_chooser_image.xml
@@ -0,0 +1,26 @@
+<?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.
+-->
+<com.android.messaging.ui.AsyncImageView
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    android:id="@+id/attachment_image_view"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:minWidth="@dimen/single_attachment_min_dimen"
+    android:minHeight="@dimen/single_attachment_min_dimen"
+    android:scaleType="centerCrop"
+    android:adjustViewBounds="true" />
diff --git a/res/layout/attachment_chooser_vcard.xml b/res/layout/attachment_chooser_vcard.xml
new file mode 100644
index 0000000..fb20f84
--- /dev/null
+++ b/res/layout/attachment_chooser_vcard.xml
@@ -0,0 +1,28 @@
+<?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:layout_width="wrap_content"
+    android:layout_height="wrap_content"
+    android:background="@color/attachment_chooser_vcard_background">
+
+    <com.android.messaging.ui.PersonItemView
+        android:id="@+id/vcard_attachment_view"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_gravity="center" />
+
+</FrameLayout>
diff --git a/res/layout/attachment_chooser_video.xml b/res/layout/attachment_chooser_video.xml
new file mode 100644
index 0000000..4ae4b0a
--- /dev/null
+++ b/res/layout/attachment_chooser_video.xml
@@ -0,0 +1,24 @@
+<?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.
+-->
+<com.android.messaging.ui.VideoThumbnailView
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    android:id="@+id/attachment_video_thumbnail"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    app:mode="imageThumbnail"
+    app:allowCrop="true" />
diff --git a/res/layout/attachment_grid_item_view.xml b/res/layout/attachment_grid_item_view.xml
new file mode 100644
index 0000000..639ea64
--- /dev/null
+++ b/res/layout/attachment_grid_item_view.xml
@@ -0,0 +1,43 @@
+<?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.
+-->
+<com.android.messaging.ui.attachmentchooser.AttachmentGridItemView
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="@dimen/attachment_grid_image_cell_size"
+    android:clickable="true">
+
+    <FrameLayout
+        android:id="@+id/attachment_container"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent" />
+
+    <View
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:background="?android:attr/selectableItemBackground" />
+
+    <CheckBox
+        android:id="@+id/checkbox"
+        style="@style/AttachmentGridItemViewCheckBoxStyle"
+        android:button="@drawable/gallery_checkbox_selector"
+        android:background="@null"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_gravity="top|end"
+        android:paddingTop="4dp"
+        android:contentDescription="@string/gallery_checkbox_content_description" />
+</com.android.messaging.ui.attachmentchooser.AttachmentGridItemView>
diff --git a/res/layout/attachment_more_text_view.xml b/res/layout/attachment_more_text_view.xml
new file mode 100644
index 0000000..1a99a63
--- /dev/null
+++ b/res/layout/attachment_more_text_view.xml
@@ -0,0 +1,22 @@
+<?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"
+    style="@style/AttachmentPreviewMoreItemsText"
+    android:layout_width="wrap_content"
+    android:layout_height="wrap_content"
+    android:gravity="center"
+    android:background="@drawable/attachment_more_items_background" />
\ No newline at end of file
diff --git a/res/layout/attachment_multiple_audio.xml b/res/layout/attachment_multiple_audio.xml
new file mode 100644
index 0000000..48440f0
--- /dev/null
+++ b/res/layout/attachment_multiple_audio.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.
+-->
+<FrameLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    android:id="@+id/audio_attachment_background"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:background="@drawable/attachment_audio_preview_background">
+
+    <com.android.messaging.ui.AudioAttachmentView
+        android:id="@+id/audio_attachment_view"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:gravity="center"
+        app:layoutMode="compact" />
+
+</FrameLayout>
diff --git a/res/layout/attachment_multiple_image.xml b/res/layout/attachment_multiple_image.xml
new file mode 100644
index 0000000..7d911ac
--- /dev/null
+++ b/res/layout/attachment_multiple_image.xml
@@ -0,0 +1,29 @@
+<?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.
+-->
+
+<com.android.messaging.ui.AsyncImageView xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    android:id="@+id/attachment_image_view"
+    android:layout_width="wrap_content"
+    android:layout_height="wrap_content"
+    android:maxWidth="@dimen/multiple_attachment_preview_width"
+    android:maxHeight="@dimen/multiple_attachment_preview_height"
+    android:scaleType="centerCrop"
+    android:adjustViewBounds="true"
+    app:fadeIn="false"
+    app:cornerRadius="@dimen/attachment_rounded_corner_radius"
+    app:placeholderDrawable="@drawable/attachment_image_placeholder_background" />
diff --git a/res/layout/attachment_multiple_vcard.xml b/res/layout/attachment_multiple_vcard.xml
new file mode 100644
index 0000000..e03d47b
--- /dev/null
+++ b/res/layout/attachment_multiple_vcard.xml
@@ -0,0 +1,28 @@
+<?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:layout_width="wrap_content"
+    android:layout_height="wrap_content"
+    android:background="@drawable/attachment_vcard_preview_background">
+
+    <com.android.messaging.ui.PersonItemView
+        android:id="@+id/vcard_attachment_view"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_gravity="center" />
+
+</FrameLayout>
diff --git a/res/layout/attachment_multiple_video.xml b/res/layout/attachment_multiple_video.xml
new file mode 100644
index 0000000..fdbc423
--- /dev/null
+++ b/res/layout/attachment_multiple_video.xml
@@ -0,0 +1,25 @@
+<?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.
+-->
+
+<com.android.messaging.ui.VideoThumbnailView
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    android:id="@+id/attachment_video_thumbnail"
+    android:layout_width="wrap_content"
+    android:layout_height="wrap_content"
+    app:mode="imageThumbnail"
+    app:allowCrop="true" />
diff --git a/res/layout/attachment_pending_item.xml b/res/layout/attachment_pending_item.xml
new file mode 100644
index 0000000..3e9bec7
--- /dev/null
+++ b/res/layout/attachment_pending_item.xml
@@ -0,0 +1,44 @@
+<?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.
+-->
+<LinearLayout
+        xmlns:android="http://schemas.android.com/apk/res/android"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:orientation="vertical">
+
+    <ImageView
+        xmlns:android="http://schemas.android.com/apk/res/android"
+        android:id="@+id/pending_item_view"
+        android:layout_width="@dimen/pending_attachment_size"
+        android:layout_height="@dimen/pending_attachment_size"
+        android:scaleType="center"
+        android:background="@android:color/white"
+        android:src="@drawable/ic_attachment_dark"
+        android:importantForAccessibility="no"
+        android:contentDescription="@null"/>
+
+    <TextView
+            android:id="@+id/caption"
+            android:layout_width="wrap_content"
+            android:layout_height="match_parent"
+            android:maxLines="3"
+            android:ellipsize="end"
+            android:padding="8dp"
+            android:background="@color/message_bubble_color_outgoing"
+            style="@style/ConversationMessage" />
+
+</LinearLayout>
diff --git a/res/layout/attachment_preview.xml b/res/layout/attachment_preview.xml
new file mode 100644
index 0000000..36ea038
--- /dev/null
+++ b/res/layout/attachment_preview.xml
@@ -0,0 +1,44 @@
+<?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.
+-->
+<com.android.messaging.ui.AttachmentPreview
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="wrap_content"
+    android:layout_height="match_parent"
+    android:scrollbars="none">
+
+    <FrameLayout
+        android:id="@+id/attachment_content"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_gravity="right">
+        <FrameLayout
+            android:id="@+id/attachment_view"
+            style="@style/AttachmentPreviewAttachmentStyle"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:layout_marginTop="10dp" />
+
+        <ImageButton
+            android:id="@+id/close_button"
+            style="@style/AttachmentPreviewCloseButtonStyle"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:background="@null"
+            android:src="@drawable/ic_remove_light"
+            android:contentDescription="@null" />
+    </FrameLayout>
+</com.android.messaging.ui.AttachmentPreview>
\ No newline at end of file
diff --git a/res/layout/attachment_single_audio.xml b/res/layout/attachment_single_audio.xml
new file mode 100644
index 0000000..3ad02a8
--- /dev/null
+++ b/res/layout/attachment_single_audio.xml
@@ -0,0 +1,29 @@
+<?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:id="@+id/audio_attachment_background"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content"
+    android:background="@drawable/attachment_audio_preview_background"
+    style="@style/AudioAttachmentViewStyle">
+
+    <com.android.messaging.ui.AudioAttachmentView
+        android:id="@+id/audio_attachment_view"
+        android:layout_width="match_parent"
+        android:layout_height="70dp" />
+
+</FrameLayout>
diff --git a/res/layout/attachment_single_image.xml b/res/layout/attachment_single_image.xml
new file mode 100644
index 0000000..7338368
--- /dev/null
+++ b/res/layout/attachment_single_image.xml
@@ -0,0 +1,46 @@
+<?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.
+-->
+<LinearLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    android:layout_width="wrap_content"
+    android:layout_height="wrap_content"
+    android:orientation="vertical">
+
+    <com.android.messaging.ui.AsyncImageView
+        android:id="@+id/attachment_image_view"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:minWidth="@dimen/single_attachment_min_dimen"
+        android:minHeight="@dimen/single_attachment_min_dimen"
+        android:maxHeight="@dimen/single_attachment_max_height"
+        android:scaleType="fitCenter"
+        android:adjustViewBounds="true"
+        app:fadeIn="false"
+        app:cornerRadius="@dimen/attachment_rounded_corner_radius" />
+
+    <TextView
+        android:id="@+id/caption"
+        android:layout_width="wrap_content"
+        android:layout_height="match_parent"
+        android:maxLines="3"
+        android:ellipsize="end"
+        android:padding="8dp"
+        android:background="@color/message_bubble_color_outgoing"
+        style="@style/ConversationMessage" />
+
+</LinearLayout>
diff --git a/res/layout/attachment_single_vcard.xml b/res/layout/attachment_single_vcard.xml
new file mode 100644
index 0000000..6016593
--- /dev/null
+++ b/res/layout/attachment_single_vcard.xml
@@ -0,0 +1,30 @@
+<?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:layout_width="wrap_content"
+    android:layout_height="wrap_content"
+    android:background="@drawable/attachment_vcard_preview_background">
+
+    <com.android.messaging.ui.PersonItemView
+        android:id="@+id/vcard_attachment_view"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:paddingTop="@dimen/message_text_top_padding"
+        android:paddingBottom="@dimen/message_text_bottom_padding"
+        style="@style/VcardAttachmentSingleStyle" />
+
+</FrameLayout>
diff --git a/res/layout/attachment_single_video.xml b/res/layout/attachment_single_video.xml
new file mode 100644
index 0000000..fba594f
--- /dev/null
+++ b/res/layout/attachment_single_video.xml
@@ -0,0 +1,28 @@
+<?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.
+-->
+
+<com.android.messaging.ui.VideoThumbnailView
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    android:id="@+id/attachment_video_thumbnail"
+    android:layout_width="wrap_content"
+    android:layout_height="wrap_content"
+    android:minWidth="120dp"
+    android:minHeight="120dp"
+    android:maxHeight="@dimen/single_attachment_max_height"
+    app:allowCrop="true"
+    app:mode="imageThumbnail" />
diff --git a/res/layout/audio_attachment_view.xml b/res/layout/audio_attachment_view.xml
new file mode 100644
index 0000000..6fcf89c
--- /dev/null
+++ b/res/layout/audio_attachment_view.xml
@@ -0,0 +1,62 @@
+<?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.
+-->
+<!-- A reusable view that hosts an inline audio player. The view is used by both the media picker
+     and the conversation to show an audio attachment -->
+<merge
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:orientation="horizontal">
+
+    <com.android.messaging.ui.AudioAttachmentPlayPauseButton
+        android:id="@+id/play_pause_button"
+        style="@style/AudioAttachmentViewPlayPauseButtonStyle"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_gravity="center">
+        <ImageView
+            android:id="@+id/play_button"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:src="@drawable/ic_audio_play"
+            android:contentDescription="@string/audio_play_content_description"/>
+
+        <ImageView
+            android:id="@+id/pause_button"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:src="@drawable/ic_audio_pause"
+            android:contentDescription="@string/audio_pause_content_description"/>
+    </com.android.messaging.ui.AudioAttachmentPlayPauseButton>
+
+    <com.android.messaging.ui.mediapicker.PausableChronometer
+        android:id="@+id/timer"
+        style="@style/AudioAttachmentTimerText"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_gravity="center" />
+
+    <com.android.messaging.ui.AudioPlaybackProgressBar
+        android:id="@+id/progress"
+        style="@android:style/Widget.ProgressBar.Horizontal"
+        android:layout_width="0dp"
+        android:layout_weight="1"
+        android:layout_height="@dimen/audio_progress_bar_height"
+        android:layout_gravity="center" />
+
+</merge>
diff --git a/res/layout/blocked_participant_list_item_view.xml b/res/layout/blocked_participant_list_item_view.xml
new file mode 100644
index 0000000..7ac0ec9
--- /dev/null
+++ b/res/layout/blocked_participant_list_item_view.xml
@@ -0,0 +1,51 @@
+<?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.
+-->
+<com.android.messaging.ui.BlockedParticipantListItemView
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    android:layout_width="fill_parent"
+    android:layout_height="wrap_content"
+    android:orientation="horizontal"
+    android:padding="@dimen/blocked_participant_list_item_view_padding">
+    <com.android.messaging.ui.ContactIconView
+        android:id="@+id/contact_icon"
+        android:layout_width="@dimen/contact_list_icon_size"
+        android:layout_height="@dimen/contact_list_icon_size"
+        android:importantForAccessibility="no"
+        app:iconSize="normal"
+        android:layout_gravity="center_vertical"/>
+    <TextView
+        android:id="@+id/name"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:singleLine="true"
+        android:maxLines="1"
+        android:ellipsize="end"
+        style="@style/ParticipantListItem"
+        android:layout_gravity="center_vertical"
+        android:padding="@dimen/blocked_participant_list_item_view_padding"/>
+    <TextView
+        android:id="@+id/tap_to_unblock"
+        android:layout_width="fill_parent"
+        android:layout_height="wrap_content"
+        android:singleLine="true"
+        android:textColor="@color/unblock_item_text_color"
+        android:text="@string/tap_to_unblock_message"
+        android:layout_gravity="center_vertical"
+        android:gravity="right"
+        android:padding="@dimen/blocked_participant_list_item_view_padding"/>
+</com.android.messaging.ui.BlockedParticipantListItemView>
diff --git a/res/layout/blocked_participants_activity.xml b/res/layout/blocked_participants_activity.xml
new file mode 100644
index 0000000..e00f20f
--- /dev/null
+++ b/res/layout/blocked_participants_activity.xml
@@ -0,0 +1,23 @@
+<?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.
+-->
+<fragment
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    class="com.android.messaging.ui.BlockedParticipantsFragment"
+    android:id="@+id/blocked_participants_fragment"
+    android:theme="@style/Theme.AppCompat.Light.DarkActionBar"
+    android:layout_width="fill_parent"
+    android:layout_height="match_parent" />
\ No newline at end of file
diff --git a/res/layout/blocked_participants_fragment.xml b/res/layout/blocked_participants_fragment.xml
new file mode 100644
index 0000000..7bb3c6a
--- /dev/null
+++ b/res/layout/blocked_participants_fragment.xml
@@ -0,0 +1,23 @@
+<?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.
+-->
+<ListView
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:id="@android:id/list"
+    android:layout_width="fill_parent"
+    android:layout_height="match_parent"
+    android:divider="@null"
+    android:dividerHeight="0px" />
\ No newline at end of file
diff --git a/res/layout/chips_alternates_dropdown_item.xml b/res/layout/chips_alternates_dropdown_item.xml
new file mode 100644
index 0000000..dad052c
--- /dev/null
+++ b/res/layout/chips_alternates_dropdown_item.xml
@@ -0,0 +1,71 @@
+<?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.
+-->
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    android:layout_width="match_parent"
+    android:layout_height="72dp"
+    android:background="@drawable/chips_dropdown_background"
+    android:padding="12dp">
+
+    <com.android.messaging.ui.ContactIconView
+        android:id="@android:id/icon"
+        style="@style/ChipIconStyle"
+        android:layout_width="40dp"
+        android:layout_height="40dp"
+        android:layout_gravity="center_vertical"
+        android:importantForAccessibility="no" />
+
+    <LinearLayout
+        android:layout_width="0dp"
+        android:layout_height="wrap_content"
+        android:layout_weight="1"
+        android:layout_gravity="center_vertical"
+        android:orientation="vertical">
+
+        <TextView
+            android:id="@android:id/title"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:ellipsize="middle"
+            android:singleLine="true"
+            android:textAlignment="viewStart"
+            android:textColor="@drawable/chips_dropdown_text_color"
+            android:textSize="16sp" />
+
+        <TextView
+            android:id="@android:id/text1"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:ellipsize="middle"
+            android:singleLine="true"
+            android:textAlignment="viewStart"
+            android:textColor="@drawable/chips_dropdown_text_color"
+            android:textSize="14sp"/>
+
+    </LinearLayout>
+
+    <ImageView
+        android:id="@android:id/icon1"
+        style="@style/ChipDeleteIconStyle"
+        android:layout_width="36dp"
+        android:layout_height="48dp"
+        android:layout_gravity="center_vertical"
+        android:paddingTop="10dp"
+        android:paddingBottom="10dp"
+        android:contentDescription="@string/chips_delete_content_description" />
+
+</LinearLayout>
\ No newline at end of file
diff --git a/res/layout/compose_message_view.xml b/res/layout/compose_message_view.xml
new file mode 100644
index 0000000..fd60e2a
--- /dev/null
+++ b/res/layout/compose_message_view.xml
@@ -0,0 +1,187 @@
+<?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.
+-->
+<com.android.messaging.ui.conversation.ComposeMessageView
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    android:id="@+id/message_compose_view_container"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content"
+    android:orientation="vertical" >
+
+    <!-- Note it may seem off to have the layout_weight="1" on the compose bar and attachment view
+     when it's the media picker that expands, but this is correct because weight also works when
+     there's not enough space.  Any views with positive weights will be shrunk to make space.
+     When the media picker goes full screen, it fills the parent, leaving no room for the compose
+     bar -->
+    <LinearLayout
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_weight="1"
+        android:clipChildren="false"
+        android:clipToPadding="false"
+        android:orientation="vertical">
+
+        <View
+            android:id="@+id/top_margin"
+            android:layout_width="match_parent"
+            android:layout_height="16dp" />
+
+        <include layout="@layout/attachment_preview"
+            android:id="@+id/attachment_draft_view"
+            style="@style/ComposeMessageViewDraftViewStyle"
+            android:layout_width="match_parent"
+            android:layout_height="0dp"
+            android:layout_marginBottom="4dp"
+            android:layout_weight="1"
+            android:visibility="gone" />
+
+        <RelativeLayout
+            android:id="@+id/subject_view"
+            style="@style/SubjectViewStyle"
+            android:paddingTop="@dimen/compose_message_subject_top_padding"
+            android:paddingBottom="@dimen/compose_message_subject_bottom_padding"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:visibility="gone"
+            android:clipChildren="false"
+            android:clipToPadding="false"
+            android:orientation="horizontal">
+
+            <com.android.messaging.ui.PlainTextEditText
+                android:background="@drawable/subject_editor_bubble"
+                android:id="@+id/compose_subject_text"
+                style="@style/ConversationComposeSubjectText"
+                android:hint="@string/compose_message_view_subject_hint_text"
+                android:layout_height="wrap_content"
+                android:layout_width="match_parent"
+                android:imeOptions="flagNoExtractUi" />
+
+            <ImageButton
+                android:id="@+id/delete_subject_button"
+                style="@style/AttachmentPreviewCloseButtonStyle"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:background="@null"
+                android:src="@drawable/ic_remove_light"
+                android:translationY="@dimen/compose_message_subject_cancel_top_offset"
+                android:contentDescription="@string/delete_subject_content_description" />
+
+        </RelativeLayout>
+
+        <!-- Holds all views that create the actual compose box -->
+        <LinearLayout
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:orientation="horizontal">
+
+            <!-- Contains compose message bubble and character counter for SMS which should be left
+            aligned -->
+            <LinearLayout
+                android:layout_width="0dp"
+                android:layout_weight="1"
+                android:layout_height="wrap_content"
+                android:orientation="vertical">
+
+                <!-- Contains media button and compose message bubble whose centers should be
+                vertically aligned -->
+                <LinearLayout
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:orientation="horizontal">
+
+                    <ImageButton
+                        android:id="@+id/attach_media_button"
+                        style="@style/ComposeMessageViewAttachMediaButtonStyle"
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:layout_gravity="center_vertical"
+                        android:src="@drawable/ic_attachment_dark"
+                        android:paddingTop="@dimen/compose_message_attachment_padding_topBottom"
+                        android:paddingBottom="@dimen/compose_message_attachment_padding_topBottom"
+                        android:contentDescription="@string/attachMediaButtonContentDescription" />
+
+                    <com.android.messaging.ui.PlainTextEditText
+                        android:id="@+id/compose_message_text"
+                        style="@style/ConversationComposeSendText"
+                        android:layout_height="wrap_content"
+                        android:layout_width="0dp"
+                        android:layout_weight="1"
+                        android:layout_gravity="center"
+                        android:background="@drawable/msg_bubble_input"
+                        android:hint="@string/compose_message_view_hint_text"
+                        android:imeOptions="actionSend|flagNoEnterAction|flagNoExtractUi" />
+
+                </LinearLayout>
+
+                <TextView
+                    android:id="@+id/char_counter"
+                    style="@style/ComposeMessageViewTextCounterStyle"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:singleLine="true"
+                    android:maxLines="1"
+                    android:visibility="invisible" />
+            </LinearLayout>
+
+            <LinearLayout
+                android:orientation="vertical"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content">
+
+                <FrameLayout
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    style="@style/ComposeMessageViewFrameLayoutStyle"
+                    android:layout_gravity="top" >
+                    <com.android.messaging.ui.conversation.SimIconView
+                        android:id="@+id/self_send_icon"
+                        android:layout_width="@dimen/conversation_message_contact_icon_size"
+                        android:layout_height="@dimen/conversation_message_contact_icon_size"
+                        android:importantForAccessibility="no"
+                        app:iconSize="normal"
+                        app:reveal="true"
+                        android:clickable="true" />
+                    <ImageButton
+                        android:id="@+id/send_message_button"
+                        android:layout_width="@dimen/conversation_message_contact_icon_size"
+                        android:layout_height="@dimen/conversation_message_contact_icon_size"
+                        android:src="@drawable/ic_send_light"
+                        android:background="@drawable/send_arrow_background"
+                        android:contentDescription="@string/sendButtonContentDescription"
+                        android:visibility="gone" />
+                </FrameLayout>
+
+                <TextView
+                    android:id="@+id/mms_indicator"
+                    style="@style/MmsIndicatorStyle"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:singleLine="true"
+                    android:maxLines="1"
+                    android:visibility="invisible"
+                    android:text="@string/mms_text" />
+            </LinearLayout>
+        </LinearLayout>
+    </LinearLayout>
+
+    <FrameLayout
+        android:id="@+id/mediapicker_container"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_weight="0" />
+
+</com.android.messaging.ui.conversation.ComposeMessageView>
diff --git a/res/layout/contact_list_item_view.xml b/res/layout/contact_list_item_view.xml
new file mode 100644
index 0000000..3015ae3
--- /dev/null
+++ b/res/layout/contact_list_item_view.xml
@@ -0,0 +1,97 @@
+<?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.
+-->
+<com.android.messaging.ui.contact.ContactListItemView
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    style="@style/ContactListItemViewStyle"
+    android:orientation="horizontal"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content"
+    android:paddingTop="8dp"
+    android:paddingBottom="8dp"
+    android:background="?android:attr/selectableItemBackground">
+
+    <TextView
+        style="@style/ContactListAlphabetHeader"
+        android:id="@+id/alphabet_header"
+        android:layout_height="wrap_content"
+        android:layout_width="56dp"
+        android:layout_gravity="center_vertical"
+        android:visibility="gone" />
+
+    <FrameLayout
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_gravity="center_vertical">
+
+        <com.android.messaging.ui.ContactIconView
+            android:id="@+id/contact_icon"
+            android:layout_width="@dimen/contact_list_icon_size"
+            android:layout_height="@dimen/contact_list_icon_size"
+            android:importantForAccessibility="no"
+            app:iconSize="normal"
+            android:clickable="true" />
+
+        <ImageView
+            android:id="@+id/contact_checkmark"
+            android:layout_width="@dimen/contact_list_icon_size"
+            android:layout_height="@dimen/contact_list_icon_size"
+            android:src="@drawable/ic_checkmark_circle_blue"
+            android:visibility="gone"
+            android:importantForAccessibility="no"
+        android:contentDescription="@null"/>
+
+    </FrameLayout>
+
+    <LinearLayout
+        android:orientation="vertical"
+        style="@style/ContactListItemLinearLayoutStyle"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_gravity="center_vertical" >
+        <TextView
+            android:id="@+id/contact_name"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:paddingBottom="4dp"
+            android:singleLine="true"
+            android:maxLines="1"
+            android:ellipsize="end"
+            style="@style/ContactListItem" />
+
+        <LinearLayout
+            android:orientation="horizontal"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content">
+            <TextView
+                android:id="@+id/contact_details"
+                android:layout_width="0dp"
+                android:layout_weight="1"
+                android:layout_height="wrap_content"
+                android:singleLine="true"
+                android:maxLines="1"
+                android:ellipsize="end"
+                style="@style/ContactListItemDetail" />
+
+            <TextView
+                android:id="@+id/contact_detail_type"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                style="@style/ContactListItemDetailType" />
+        </LinearLayout>
+    </LinearLayout>
+</com.android.messaging.ui.contact.ContactListItemView>
diff --git a/res/layout/contact_picker_fragment.xml b/res/layout/contact_picker_fragment.xml
new file mode 100644
index 0000000..c65f140
--- /dev/null
+++ b/res/layout/contact_picker_fragment.xml
@@ -0,0 +1,79 @@
+<?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.
+-->
+<LinearLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:orientation="vertical">
+
+    <android.support.v7.widget.Toolbar
+        android:id="@+id/toolbar"
+        android:layout_height="wrap_content"
+        android:layout_width="match_parent"
+        android:minHeight="?attr/actionBarSize"
+        android:background="@color/action_bar_background_color"
+        app:theme="@style/ThemeOverlay.AppCompat.ActionBar">
+
+        <com.android.messaging.ui.MaxHeightScrollView
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:layout_gravity="center_horizontal"
+            android:maxHeight="@dimen/compose_message_chips_view_max_height">
+
+            <com.android.messaging.ui.contact.ContactRecipientAutoCompleteView
+                android:id="@+id/recipient_text_view"
+                style="@style/RecipientEditTextView"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:layout_gravity="center_vertical"
+                android:minHeight="@dimen/compose_message_contacts_height"
+                android:popupBackground="@drawable/contact_popup_background"
+                android:dropDownWidth="match_parent"
+                android:hint="@string/recipient_hint"
+                app:avatarPosition="start"
+                app:chipHeight="@dimen/compose_message_chip_height"
+                app:chipPadding="@dimen/compose_message_chip_padding"
+                app:imageSpanAlignment="baseline"
+                app:unselectedChipTextColor="@color/chips_text_color"
+                app:unselectedChipBackgroundColor="@color/chips_background_color">
+
+                <!-- Put focus on the chips view by default so soft keyboard can be shown -->
+                <requestFocus />
+            </com.android.messaging.ui.contact.ContactRecipientAutoCompleteView>
+
+        </com.android.messaging.ui.MaxHeightScrollView>
+
+    </android.support.v7.widget.Toolbar>
+
+    <FrameLayout
+        android:layout_width="match_parent"
+        android:layout_height="0dp"
+        android:layout_weight="1">
+        <com.android.messaging.ui.CustomHeaderViewPager
+            android:id="@+id/contact_pager"
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"/>
+
+        <View
+            android:id="@+id/compose_contact_divider"
+            android:layout_width="match_parent"
+            android:layout_height="4dp"
+            android:layout_gravity="top"
+            android:background="@drawable/compose_chips_divider_gradient"/>
+    </FrameLayout>
+</LinearLayout>
diff --git a/res/layout/conversation_activity.xml b/res/layout/conversation_activity.xml
new file mode 100644
index 0000000..8879704
--- /dev/null
+++ b/res/layout/conversation_activity.xml
@@ -0,0 +1,33 @@
+<?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.
+-->
+<com.android.messaging.ui.ImeDetectFrameLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:tools="http://schemas.android.com/tools"
+    android:id="@+id/conversation_and_compose_container"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent">
+
+    <FrameLayout
+        android:id="@+id/conversation_fragment_container"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent" />
+
+    <FrameLayout
+        android:id="@+id/contact_picker_fragment_container"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent" />
+</com.android.messaging.ui.ImeDetectFrameLayout>
\ No newline at end of file
diff --git a/res/layout/conversation_fragment.xml b/res/layout/conversation_fragment.xml
new file mode 100644
index 0000000..028e66b
--- /dev/null
+++ b/res/layout/conversation_fragment.xml
@@ -0,0 +1,68 @@
+<?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.
+-->
+<LinearLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:orientation="vertical"
+    android:weightSum="1.0">
+
+    <LinearLayout
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:layout_weight="1"
+        android:orientation="vertical">
+        <!-- This FrameLayout will take all available height (excluding media picker)
+        but setting height to 0dp causes it not to shrink properly in KK, so a height of match_parent
+        works equally well -->
+        <FrameLayout
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            android:layout_weight="1" >
+            <!-- Message list -->
+            <android.support.v7.widget.RecyclerView
+                android:id="@android:id/list"
+                android:layout_width="match_parent"
+                android:layout_height="match_parent"
+                android:listSelector="@android:color/transparent"
+                android:paddingTop="@dimen/action_bar_height"
+                android:clipToPadding="false" />
+
+            <View
+                android:id="@+id/conversation_compose_divider"
+                android:layout_width="match_parent"
+                android:layout_height="4dp"
+                android:layout_gravity="bottom"
+                android:background="@drawable/conversation_compose_divider_gradient"
+                android:alpha="0"
+                android:importantForAccessibility="no" />
+
+            <include layout="@layout/sim_selector_view"
+                android:id="@+id/sim_selector"
+                android:layout_width="match_parent"
+                android:layout_height="match_parent"
+                android:visibility="gone" />
+        </FrameLayout>
+
+        <!-- Attachments to send, compose message view, media picker. -->
+        <include layout="@layout/compose_message_view"
+            android:id="@+id/message_compose_view_container"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"/>
+    </LinearLayout>
+
+</LinearLayout>
diff --git a/res/layout/conversation_list_activity.xml b/res/layout/conversation_list_activity.xml
new file mode 100644
index 0000000..48f3b15
--- /dev/null
+++ b/res/layout/conversation_list_activity.xml
@@ -0,0 +1,23 @@
+<?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.
+-->
+<fragment
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    class="com.android.messaging.ui.conversationlist.ConversationListFragment"
+    android:id="@+id/conversation_list_fragment"
+    android:theme="@style/Theme.AppCompat.Light.DarkActionBar"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent" />
\ No newline at end of file
diff --git a/res/layout/conversation_list_fragment.xml b/res/layout/conversation_list_fragment.xml
new file mode 100644
index 0000000..bf5d401
--- /dev/null
+++ b/res/layout/conversation_list_fragment.xml
@@ -0,0 +1,53 @@
+<?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"
+    xmlns:tools="http://schemas.android.com/tools"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent" >
+
+    <android.support.v7.widget.RecyclerView
+        android:id="@android:id/list"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:paddingTop="@dimen/conversation_list_first_item_extra_padding"
+        android:clipToPadding="false"
+        android:listSelector="?android:attr/listSelector"
+        android:dividerHeight="0px" />
+
+    <include
+        layout="@layout/list_empty_view"
+        android:id="@+id/no_conversations_view"
+        android:visibility="gone"
+        android:layout_marginBottom="@dimen/conversation_list_empty_text_bottom_margin" />
+
+    <ImageView
+        style="@style/ConversationListFragmentStartNewButtonStyle"
+        android:id="@+id/start_new_conversation_button"
+        android:layout_width="@dimen/fab_size"
+        android:layout_height="@dimen/fab_size"
+        android:layout_gravity="bottom|end"
+        android:layout_marginBottom="@dimen/fab_bottom_margin"
+        android:paddingBottom="@dimen/fab_padding_bottom"
+        android:background="@drawable/fab_new_message_bg"
+        android:elevation="@dimen/fab_elevation"
+        android:scaleType="center"
+        android:src="@drawable/ic_add_white"
+        android:stateListAnimator="@animator/fab_anim"
+        android:contentDescription="@string/start_new_conversation"/>
+
+</FrameLayout>
diff --git a/res/layout/conversation_list_item_view.xml b/res/layout/conversation_list_item_view.xml
new file mode 100644
index 0000000..da1ca4e
--- /dev/null
+++ b/res/layout/conversation_list_item_view.xml
@@ -0,0 +1,190 @@
+<?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.
+-->
+<com.android.messaging.ui.conversationlist.ConversationListItemView
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content">
+
+    <!-- The background displayed when the conversation is swiped sideways -->
+    <LinearLayout
+        android:id="@+id/crossSwipeBackground"
+        android:orientation="horizontal"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:gravity="center_vertical|start"
+        android:baselineAligned="false"
+        android:background="@drawable/swipe_shadow"
+        android:visibility="gone"
+        android:padding="@dimen/conversation_list_item_view_padding">
+        <ImageView
+            android:id="@+id/crossSwipeArchiveIconLeft"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:gravity="center_vertical|left"
+            android:visibility="gone"
+            android:src="@drawable/ic_archive_small_dark"
+            android:importantForAccessibility="no"
+            android:contentDescription="@null"/>
+        <FrameLayout
+            android:layout_width="0dp"
+            android:layout_height="match_parent"
+            android:layout_weight="1" />
+        <ImageView
+            android:id="@+id/crossSwipeArchiveIconRight"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_gravity="center_vertical|right"
+            android:visibility="gone"
+            android:src="@drawable/ic_archive_small_dark"
+            android:importantForAccessibility="no"
+            android:contentDescription="@null"/>
+    </LinearLayout>
+
+    <FrameLayout
+        android:id="@+id/swipeableContainer"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:importantForAccessibility="no" >
+        <LinearLayout
+            android:id="@+id/swipeableContent"
+            android:orientation="horizontal"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:background="?android:attr/selectableItemBackground"
+            android:clipToPadding="false"
+            android:duplicateParentState="true"
+            android:padding="@dimen/conversation_list_item_view_padding">
+
+            <!-- Contact avatar on the left side of the view -->
+            <FrameLayout
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:background="@android:color/transparent">
+                <com.android.messaging.ui.ContactIconView
+                    android:id="@+id/conversation_icon"
+                    android:layout_width="@dimen/conversation_list_contact_icon_size"
+                    android:layout_height="@dimen/conversation_list_contact_icon_size"
+                    android:importantForAccessibility="no"
+                    android:contentDescription="@null"
+                    app:iconSize="large"
+                    android:clickable="true"
+                    android:background="@android:color/transparent" />
+                <ImageView
+                    android:id="@+id/conversation_checkmark"
+                    android:layout_width="@dimen/conversation_list_contact_icon_size"
+                    android:layout_height="@dimen/conversation_list_contact_icon_size"
+                    android:src="@drawable/ic_checkmark_circle_blue"
+                    android:visibility="gone"
+                    android:importantForAccessibility="no"
+                    android:background="@android:color/transparent" />
+                <ImageView
+                    android:id="@+id/conversation_failed_status_icon"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_gravity="bottom|end"
+                    android:src="@drawable/ic_failed_status_red"
+                    android:visibility="gone"
+                    android:importantForAccessibility="no"
+                    android:contentDescription="@null"
+                    android:background="@android:color/transparent" />
+            </FrameLayout>
+
+            <!-- The conversation name, message preview, etc -->
+            <LinearLayout
+                style="@style/ConversationListItemViewPaddingStyle"
+                android:orientation="vertical"
+                android:layout_width="0dp"
+                android:layout_height="wrap_content"
+                android:layout_weight="1"
+                android:layout_gravity="top"
+                android:background="@android:color/transparent">
+                <LinearLayout
+                    android:orientation="horizontal"
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:background="@android:color/transparent">
+                    <ImageView
+                        android:id="@+id/conversation_notification_bell"
+                        style="@style/ConversationListNotificationBellPaddingStyle"
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:src="@drawable/ic_notifications_off_small_light"
+                        android:visibility="gone"
+                        android:importantForAccessibility="no"
+                        android:contentDescription="@null"
+                        android:layout_gravity="center_vertical"
+                        android:background="@android:color/transparent" />
+                    <TextView
+                        android:id="@+id/conversation_name"
+                        style="@style/ConversationListItemViewConversationNameStyle"
+                        android:layout_width="match_parent"
+                        android:layout_height="wrap_content"
+                        android:singleLine="true"
+                        android:layout_gravity="center_vertical"
+                        android:paddingBottom="2dp" />
+                </LinearLayout>
+                <TextView
+                    android:id="@+id/conversation_subject"
+                    style="@style/ConversationListItemViewTextStyle"
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:singleLine="true"
+                    android:paddingBottom="3dp"
+                    android:ellipsize="end"
+                    android:visibility="gone" />
+                <TextView
+                    android:id="@+id/conversation_snippet"
+                    style="@style/ConversationListItemViewTextStyle"
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:paddingBottom="3dp"
+                    android:ellipsize="end" />
+                <TextView
+                    android:id="@+id/conversation_timestamp"
+                    style="@style/ConversationListItemViewTextStyle"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content" />
+            </LinearLayout>
+
+            <!-- The attachment preview on the right side of the view -->
+            <FrameLayout
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_gravity="top|end"
+                android:background="@android:color/transparent">
+                <com.android.messaging.ui.AsyncImageView
+                    android:id="@+id/conversation_image_preview"
+                    style="@style/ConversationListItemViewPaddingStyle"
+                    app:cornerRadius="@dimen/conversation_list_image_preview_corner_radius"
+                    android:layout_width="@dimen/conversation_list_image_preview_size"
+                    android:layout_height="@dimen/conversation_list_image_preview_size"
+                    android:visibility="gone"
+                    android:scaleType="centerCrop"
+                    android:contentDescription="@string/message_image_content_description"
+                    android:background="@android:color/transparent" />
+                <com.android.messaging.ui.AudioAttachmentView
+                    android:id="@+id/audio_attachment_view"
+                    android:layout_width="@dimen/conversation_list_image_preview_size"
+                    android:layout_height="@dimen/conversation_list_image_preview_size"
+                    app:layoutMode="subcompact"
+                    android:visibility="gone"
+                    android:background="@android:color/transparent" />
+            </FrameLayout>
+        </LinearLayout>
+    </FrameLayout>
+</com.android.messaging.ui.conversationlist.ConversationListItemView>
diff --git a/res/layout/conversation_message_view.xml b/res/layout/conversation_message_view.xml
new file mode 100644
index 0000000..daad600
--- /dev/null
+++ b/res/layout/conversation_message_view.xml
@@ -0,0 +1,171 @@
+<?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.
+-->
+<com.android.messaging.ui.conversation.ConversationMessageView
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    style="@style/ConversationMessageViewStyle"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content" >
+
+    <com.android.messaging.ui.ContactIconView
+        android:id="@+id/conversation_icon"
+        android:layout_width="@dimen/conversation_message_contact_icon_size"
+        android:layout_height="@dimen/conversation_message_contact_icon_size"
+        app:iconSize="normal"
+        android:clickable="true"
+        android:layout_gravity="center_vertical"
+        android:importantForAccessibility="no" />
+
+    <com.android.messaging.ui.conversation.ConversationMessageBubbleView
+        android:id="@+id/message_content"
+        android:orientation="vertical"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_gravity="center_vertical">
+
+        <LinearLayout
+            android:id="@+id/message_attachments"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:orientation="vertical"
+            android:visibility="gone" >
+
+            <!-- Video, audio and vcard attachments (if present) will be added here -->
+
+            <com.android.messaging.ui.MultiAttachmentLayout
+                android:id="@+id/multiple_attachments"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:visibility="gone" />
+
+            <com.android.messaging.ui.AsyncImageView
+                android:id="@+id/message_image"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:minWidth="@dimen/conversation_message_photo_min_size"
+                android:minHeight="@dimen/conversation_message_photo_min_size"
+                android:adjustViewBounds="true"
+                android:scaleType="fitCenter"
+                android:layout_gravity="center_vertical"
+                android:visibility="gone"
+                app:placeholderDrawable="@drawable/attachment_image_placeholder_background"
+                app:cornerRadius="@dimen/attachment_rounded_corner_radius"
+                android:contentDescription="@string/message_image_content_description" />
+
+        </LinearLayout>
+
+        <com.android.messaging.ui.conversation.MessageBubbleBackground
+            android:id="@+id/message_text_and_info"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:orientation="vertical">
+
+            <LinearLayout
+                android:id="@+id/message_title_layout"
+                android:orientation="vertical"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:visibility="gone"
+                android:importantForAccessibility="noHideDescendants" >
+
+                <TextView
+                    android:id="@+id/message_title"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    style="@style/ConversationMessageTitle" />
+
+                <TextView
+                    android:id="@+id/mms_info"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    style="@style/ConversationMessageInfo" />
+
+            </LinearLayout>
+
+            <LinearLayout
+                android:id="@+id/subject_container"
+                android:orientation="horizontal"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:importantForAccessibility="noHideDescendants" >
+
+                <TextView
+                    android:id="@+id/subject_label"
+                    android:text="@string/conversation_message_view_subject_text"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    style="@style/ConversationMessage" />
+
+                <TextView
+                    android:id="@+id/subject_text"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    style="@style/ConversationMessage" />
+
+            </LinearLayout>
+
+            <TextView
+                android:id="@+id/message_text"
+                style="@style/ConversationMessage"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:visibility="gone"
+                android:importantForAccessibility="no" />
+
+            <com.android.messaging.ui.LineWrapLayout
+                android:id="@+id/message_metadata"
+                android:orientation="horizontal"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:gravity="center_vertical"
+                android:importantForAccessibility="noHideDescendants" >
+
+                <TextView
+                    android:id="@+id/message_sender_name"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_marginRight="4dp"
+                    style="@style/ConversationMessageStatus"
+                    android:visibility="gone" />
+                <TextView
+                    android:id="@+id/message_status"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    style="@style/ConversationMessageStatus"
+                    android:visibility="gone" />
+                <TextView
+                    android:id="@+id/sim_name"
+                    style="@style/MessageSimIndicator"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_weight="1"
+                    android:visibility="gone" />
+                <ImageView
+                    android:id="@+id/smsDeliveredBadge"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_gravity="center"
+                    style="@style/SmsDeliverdBadge"
+                    android:src="@drawable/ic_sms_delivery_ok"
+                    android:visibility="gone" />
+            </com.android.messaging.ui.LineWrapLayout>
+
+        </com.android.messaging.ui.conversation.MessageBubbleBackground>
+
+    </com.android.messaging.ui.conversation.ConversationMessageBubbleView>
+
+</com.android.messaging.ui.conversation.ConversationMessageView>
diff --git a/res/layout/copy_contact_dialog_view.xml b/res/layout/copy_contact_dialog_view.xml
new file mode 100644
index 0000000..15e07f7
--- /dev/null
+++ b/res/layout/copy_contact_dialog_view.xml
@@ -0,0 +1,24 @@
+<?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"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    android:layout_width="wrap_content"
+    android:layout_height="wrap_content"
+    style="@style/CopyContactDialogTextStyle"
+    android:ellipsize="end"
+    android:paddingTop="@dimen/copy_contact_dialog_top_padding"/>
\ No newline at end of file
diff --git a/res/layout/custom_header_view_pager.xml b/res/layout/custom_header_view_pager.xml
new file mode 100644
index 0000000..9552cd6
--- /dev/null
+++ b/res/layout/custom_header_view_pager.xml
@@ -0,0 +1,45 @@
+<?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.
+-->
+<merge xmlns:android="http://schemas.android.com/apk/res/android">
+
+    <com.android.messaging.ui.ViewPagerTabs
+        android:id="@+id/tab_strip"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_gravity="center"
+        android:textAllCaps="true"
+        android:orientation="horizontal"
+        style="@style/PagerTabHeader" />
+
+    <FrameLayout
+        android:layout_width="match_parent"
+        android:layout_height="0dp"
+        android:layout_weight="1">
+
+        <android.support.v4.view.ViewPager
+            android:id="@+id/pager"
+            android:layout_width="match_parent"
+            android:layout_height="match_parent" />
+
+        <View
+            android:layout_width="match_parent"
+            android:layout_height="2dp"
+            android:layout_gravity="top"
+            android:background="@drawable/compose_chips_divider_gradient"/>
+
+    </FrameLayout>
+</merge>
\ No newline at end of file
diff --git a/res/layout/debug_mmsconfig_activity.xml b/res/layout/debug_mmsconfig_activity.xml
new file mode 100644
index 0000000..4056317
--- /dev/null
+++ b/res/layout/debug_mmsconfig_activity.xml
@@ -0,0 +1,22 @@
+<?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.
+-->
+<fragment
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    class="com.android.messaging.ui.debug.DebugMmsConfigFragment"
+    android:id="@+id/debug_mmsconfig_fragment"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent" />
\ No newline at end of file
diff --git a/res/layout/debug_mmsconfig_fragment.xml b/res/layout/debug_mmsconfig_fragment.xml
new file mode 100644
index 0000000..be61710
--- /dev/null
+++ b/res/layout/debug_mmsconfig_fragment.xml
@@ -0,0 +1,23 @@
+<?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.
+-->
+<ListView
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:id="@android:id/list"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:divider="@null"
+    android:dividerHeight="0px" />
\ No newline at end of file
diff --git a/res/layout/debug_mmsconfig_item_view.xml b/res/layout/debug_mmsconfig_item_view.xml
new file mode 100644
index 0000000..a825ee5
--- /dev/null
+++ b/res/layout/debug_mmsconfig_item_view.xml
@@ -0,0 +1,46 @@
+<?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.
+-->
+<com.android.messaging.ui.debug.DebugMmsConfigItemView
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:orientation="horizontal"
+    android:layout_width="match_parent"
+    android:layout_height="56dp"
+    android:background="@android:color/background_light"
+    android:gravity="center_vertical"
+    android:clickable="true"
+    style="@style/DebugMmsConfigItemStyle" >
+    <TextView
+        android:id="@+id/title"
+        android:layout_width="0dp"
+        android:layout_weight="1"
+        android:layout_height="match_parent"
+        android:singleLine="true"
+        android:maxLines="1"
+        android:gravity="center_vertical"/>
+    <Switch
+        android:id="@+id/switch_button"
+        android:layout_width="wrap_content"
+        android:layout_height="match_parent"
+        android:visibility="gone" />
+    <TextView
+        android:id="@+id/text_value"
+        android:layout_width="wrap_content"
+        android:layout_height="match_parent"
+        android:singleLine="true"
+        android:gravity="center_vertical"
+        android:visibility="gone"/>
+</com.android.messaging.ui.debug.DebugMmsConfigItemView>
diff --git a/res/layout/debug_sms_mms_from_dump_file_dialog.xml b/res/layout/debug_sms_mms_from_dump_file_dialog.xml
new file mode 100644
index 0000000..342f489
--- /dev/null
+++ b/res/layout/debug_sms_mms_from_dump_file_dialog.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.
+-->
+<FrameLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:padding="6dp"
+    android:background="@color/conversation_background"
+    >
+
+    <ListView android:id="@+id/dump_file_list"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:layout_weight="1"
+        android:drawSelectorOnTop="false"
+        android:longClickable="false"/>
+
+</FrameLayout>
diff --git a/res/layout/enter_phone_number_view.xml b/res/layout/enter_phone_number_view.xml
new file mode 100644
index 0000000..825ac51
--- /dev/null
+++ b/res/layout/enter_phone_number_view.xml
@@ -0,0 +1,29 @@
+<?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.
+-->
+<EditText
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:orientation="vertical"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content"
+    android:paddingTop="16dp"
+    android:paddingLeft="24dp"
+    android:paddingRight="24dp"
+    android:singleLine="true"
+    android:maxLines="1"
+    android:hint="@string/enter_phone_number_hint"
+    android:inputType="number|phone"
+    />
diff --git a/res/layout/fastscroll_preview.xml b/res/layout/fastscroll_preview.xml
new file mode 100644
index 0000000..ab72744
--- /dev/null
+++ b/res/layout/fastscroll_preview.xml
@@ -0,0 +1,25 @@
+<?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:layout_width="wrap_content"
+    android:layout_height="wrap_content"
+    android:gravity="center"
+    android:paddingLeft="@dimen/fastscroll_preview_padding"
+    android:paddingRight="@dimen/fastscroll_preview_padding"
+    android:textColor="@color/fastscroll_preview_text_color"
+    android:textSize="@dimen/fastscroll_preview_text_size" />
diff --git a/res/layout/fastscroll_thumb.xml b/res/layout/fastscroll_thumb.xml
new file mode 100644
index 0000000..6f57056
--- /dev/null
+++ b/res/layout/fastscroll_thumb.xml
@@ -0,0 +1,19 @@
+<?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.
+-->
+<ImageView
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:scaleType="fitXY" />
\ No newline at end of file
diff --git a/res/layout/fastscroll_track.xml b/res/layout/fastscroll_track.xml
new file mode 100644
index 0000000..6a35e94
--- /dev/null
+++ b/res/layout/fastscroll_track.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.
+-->
+<ImageView
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:scaleType="fitXY"
+    android:src="@drawable/fastscroll_track" />
diff --git a/res/layout/frequent_contacts_list_view.xml b/res/layout/frequent_contacts_list_view.xml
new file mode 100644
index 0000000..9cb0c3a
--- /dev/null
+++ b/res/layout/frequent_contacts_list_view.xml
@@ -0,0 +1,38 @@
+<?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:layout_width="match_parent"
+    android:layout_height="match_parent">
+
+    <ListView
+        android:id="@+id/frequent_contacts_list"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:paddingTop="8dp"
+        android:paddingBottom="8dp"
+        android:clipToPadding="false"
+        android:divider="@null"
+        android:dividerHeight="0px"
+        android:fastScrollEnabled="true" />
+
+    <include
+        layout="@layout/list_empty_view"
+        android:id="@+id/empty_view"
+        android:visibility="gone" />
+
+</FrameLayout>
\ No newline at end of file
diff --git a/res/layout/gallery_grid_item_view.xml b/res/layout/gallery_grid_item_view.xml
new file mode 100644
index 0000000..8b7ee58
--- /dev/null
+++ b/res/layout/gallery_grid_item_view.xml
@@ -0,0 +1,46 @@
+<?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.
+-->
+<com.android.messaging.ui.mediapicker.GalleryGridItemView
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="@dimen/gallery_image_cell_size"
+    android:background="@color/gallery_image_default_background"
+    android:clickable="true">
+
+    <com.android.messaging.ui.AsyncImageView
+        android:id="@+id/image"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:scaleType="centerCrop" />
+
+    <View
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:background="@drawable/gallery_image_background_selector" />
+
+    <CheckBox
+        android:id="@+id/checkbox"
+        style="@style/GalleryGridItemViewCheckBoxStyle"
+        android:button="@drawable/gallery_checkbox_selector"
+        android:background="@null"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_gravity="top|end"
+        android:paddingTop="4dp"
+        android:visibility="gone"
+        android:contentDescription="@string/gallery_checkbox_content_description" />
+</com.android.messaging.ui.mediapicker.GalleryGridItemView>
diff --git a/res/layout/group_mms_setting_dialog.xml b/res/layout/group_mms_setting_dialog.xml
new file mode 100644
index 0000000..efc3b00
--- /dev/null
+++ b/res/layout/group_mms_setting_dialog.xml
@@ -0,0 +1,37 @@
+<?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.
+-->
+<RadioGroup
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content"
+    android:orientation="vertical">
+
+    <RadioButton
+        android:id="@+id/disable_group_mms_button"
+        style="@style/GroupMmsSettingItem"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:text="@string/disable_group_mms"/>
+
+    <RadioButton
+        android:id="@+id/enable_group_mms_button"
+        style="@style/GroupMmsSettingItem"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:text="@string/enable_group_mms"/>
+
+</RadioGroup>
diff --git a/res/layout/license_activity.xml b/res/layout/license_activity.xml
new file mode 100644
index 0000000..1475ac2
--- /dev/null
+++ b/res/layout/license_activity.xml
@@ -0,0 +1,22 @@
+<?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.
+-->
+<WebView
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:id="@+id/content"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content">
+</WebView>
\ No newline at end of file
diff --git a/res/layout/list_empty_view.xml b/res/layout/list_empty_view.xml
new file mode 100644
index 0000000..aa4b4fb
--- /dev/null
+++ b/res/layout/list_empty_view.xml
@@ -0,0 +1,42 @@
+<?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.
+-->
+<com.android.messaging.ui.ListEmptyView
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:orientation="vertical"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content"
+    android:layout_gravity="center_vertical">
+
+    <ImageView
+        android:id="@+id/empty_image_hint"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_gravity="center"
+        android:importantForAccessibility="no"
+        android:contentDescription="@null"/>
+
+    <TextView
+        android:id="@+id/empty_text_hint"
+        android:gravity="center_horizontal"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_gravity="center"
+        android:layout_marginLeft="@dimen/list_empty_text_left_right_margin"
+        android:layout_marginRight="@dimen/list_empty_text_left_right_margin"
+        android:layout_marginTop="@dimen/list_empty_text_top_margin"
+        style="@style/ListEmptyText"/>
+</com.android.messaging.ui.ListEmptyView>
diff --git a/res/layout/mediapicker_audio_chooser.xml b/res/layout/mediapicker_audio_chooser.xml
new file mode 100644
index 0000000..795d2f8
--- /dev/null
+++ b/res/layout/mediapicker_audio_chooser.xml
@@ -0,0 +1,96 @@
+<?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.
+-->
+<com.android.messaging.ui.mediapicker.AudioRecordView
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:background="@android:color/white"
+    android:importantForAccessibility="no" >
+
+    <FrameLayout
+        android:id="@+id/mediapicker_enabled"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent" >
+
+        <TextView
+            android:id="@+id/hint_text"
+            style="@style/AudioPickerHintText"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_gravity="top|center"
+            android:layout_marginTop="16dp"
+            android:text="@string/audio_picker_hint_text"
+            android:importantForAccessibility="no" />
+
+        <com.android.messaging.ui.mediapicker.PausableChronometer
+            android:id="@+id/timer_text"
+            style="@style/AudioPickerTimerText"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_gravity="top|center"
+            android:layout_marginTop="16dp"
+            android:visibility="gone" />
+
+        <com.android.messaging.ui.mediapicker.SoundLevels
+            android:id="@+id/sound_levels"
+            android:layout_width="260dp"
+            android:layout_height="260dp"
+            android:layout_gravity="center"
+            android:focusableInTouchMode="false"
+            app:minLevelRadius="55dp"
+            app:maxLevelRadius="130dp"
+            app:primaryColor="@color/audio_picker_level_primary_color" />
+
+        <!-- View to make the touachable area larger for accessibility's two-finger touch -->
+        <FrameLayout
+            android:id="@+id/record_button"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_gravity="center"
+            android:padding="30dp"
+            android:focusable="true"
+            android:focusableInTouchMode="true"
+            android:contentDescription="@string/audio_record_view_content_description" >
+
+            <ImageView
+                android:id="@+id/record_button_visual"
+                android:layout_width="70dp"
+                android:layout_height="70dp"
+                android:layout_margin="30dp"
+                android:layout_gravity="center"
+                android:scaleType="center"
+                android:src="@drawable/ic_mp_audio_mic"
+                android:background="@drawable/audio_record_control_button_background"
+                android:importantForAccessibility="no"
+                android:contentDescription="@null" />
+        </FrameLayout>
+
+    </FrameLayout>
+
+    <!-- This view will hide all other views if the required permission is not granted -->
+    <TextView
+        android:id="@+id/missing_permission_view"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:text="@string/enable_permission_procedure"
+        android:contentDescription="@string/enable_permission_procedure_description"
+        android:background="@android:color/white"
+        android:gravity="center"
+        android:visibility="gone" />
+
+</com.android.messaging.ui.mediapicker.AudioRecordView>
diff --git a/res/layout/mediapicker_camera_chooser.xml b/res/layout/mediapicker_camera_chooser.xml
new file mode 100644
index 0000000..27d26bd
--- /dev/null
+++ b/res/layout/mediapicker_camera_chooser.xml
@@ -0,0 +1,150 @@
+<?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.
+-->
+
+<com.android.messaging.ui.mediapicker.CameraMediaChooserView
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:background="@android:color/black">
+
+    <FrameLayout
+        android:id="@+id/mediapicker_enabled"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content" >
+
+        <!-- Default to using the hardware rendered camera preview, we will fall back to
+        SoftwareCameraPreview in CameraMediaChooserView if needed -->
+        <com.android.messaging.ui.mediapicker.HardwareCameraPreview
+            android:id="@+id/camera_preview"
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            android:layout_gravity="center" />
+
+        <com.android.messaging.ui.mediapicker.camerafocus.RenderOverlay
+            android:id="@+id/focus_visual"
+            android:layout_width="match_parent"
+            android:layout_height="match_parent" />
+
+        <View
+            android:id="@+id/camera_shutter_visual"
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            android:background="@android:color/white"
+            android:visibility="gone" />
+
+        <!-- Need a background on this view in order for the ripple effect to have a place to draw -->
+        <FrameLayout
+            android:id="@+id/camera_button_container"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:background="@android:color/transparent"
+            android:paddingTop="20dp"
+            android:layout_gravity="bottom">
+
+            <FrameLayout
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_gravity="start|center_vertical"
+                style="@style/CameraChooserFrameStyle">
+
+                <ImageButton
+                    android:id="@+id/camera_swap_mode_button"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:minWidth="48dp"
+                    android:minHeight="48dp"
+                    android:background="@drawable/transparent_button_background"
+                    android:src="@drawable/ic_mp_video_small_light"
+                    android:contentDescription="@string/camera_switch_to_video_mode"/>
+
+                <Chronometer
+                    android:id="@+id/camera_video_counter"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:textColor="@android:color/white"
+                    android:textSize="18sp"
+                    android:padding="16dp"
+                    android:visibility="gone" />
+
+            </FrameLayout>
+
+            <ImageButton
+                android:id="@+id/camera_capture_button"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_gravity="center"
+                android:minWidth="96dp"
+                android:minHeight="96dp"
+                android:background="@drawable/transparent_button_background"
+                android:src="@drawable/ic_checkmark_large_light"
+                android:contentDescription="@string/camera_take_picture"/>
+
+            <FrameLayout
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_gravity="end|center_vertical"
+                android:paddingEnd="16dp">
+
+                <ImageButton
+                    android:id="@+id/camera_fullScreen_button"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:minWidth="48dp"
+                    android:minHeight="48dp"
+                    android:background="@drawable/transparent_button_background"
+                    android:src="@drawable/ic_mp_full_screen_light"
+                    android:contentDescription="@string/camera_switch_full_screen" />
+
+                <ImageButton
+                    android:id="@+id/camera_swapCamera_button"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:minWidth="48dp"
+                    android:minHeight="48dp"
+                    android:background="@drawable/transparent_button_background"
+                    android:visibility="gone"
+                    android:contentDescription="@string/camera_switch_camera_facing"/>
+
+                <ImageButton
+                    android:id="@+id/camera_cancel_button"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:minWidth="48dp"
+                    android:minHeight="48dp"
+                    android:background="@drawable/transparent_button_background"
+                    android:src="@drawable/ic_remove_small_light"
+                    android:visibility="gone"
+                    android:contentDescription="@string/camera_cancel_recording" />
+
+            </FrameLayout>
+
+        </FrameLayout>
+
+    </FrameLayout>
+
+    <!-- This view will hide all other views if the required permission is not granted -->
+    <TextView
+        android:id="@+id/missing_permission_view"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:text="@string/enable_permission_procedure"
+        android:contentDescription="@string/enable_permission_procedure_description"
+        android:background="@android:color/white"
+        android:gravity="center"
+        android:visibility="gone" />
+
+</com.android.messaging.ui.mediapicker.CameraMediaChooserView>
diff --git a/res/layout/mediapicker_fragment.xml b/res/layout/mediapicker_fragment.xml
new file mode 100644
index 0000000..2e414bd
--- /dev/null
+++ b/res/layout/mediapicker_fragment.xml
@@ -0,0 +1,34 @@
+<?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.
+-->
+
+<com.android.messaging.ui.mediapicker.MediaPickerPanel
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content">
+
+    <com.android.messaging.ui.PagingAwareViewPager
+        android:id="@+id/mediapicker_view_pager"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:minHeight="@dimen/mediapicker_default_chooser_height" />
+    <LinearLayout
+        android:id="@+id/mediapicker_tabstrip"
+        android:layout_width="match_parent"
+        android:layout_height="48dp"
+        android:orientation="horizontal"
+        android:gravity="center" />
+</com.android.messaging.ui.mediapicker.MediaPickerPanel>
diff --git a/res/layout/mediapicker_image_chooser.xml b/res/layout/mediapicker_image_chooser.xml
new file mode 100644
index 0000000..b4f3c01
--- /dev/null
+++ b/res/layout/mediapicker_image_chooser.xml
@@ -0,0 +1,44 @@
+<?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:layout_width="match_parent"
+        android:layout_height="match_parent">
+    <com.android.messaging.ui.mediapicker.GalleryGridView
+        android:id="@+id/gallery_grid_view"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:padding="6dp"
+        android:columnWidth="@dimen/gallery_image_cell_size"
+        android:numColumns="auto_fit"
+        android:verticalSpacing="6dp"
+        android:horizontalSpacing="6dp"
+        android:stretchMode="columnWidth"
+        android:gravity="center"
+        android:clipToPadding="false"
+        android:background="@android:color/white" />
+    <!-- This view will hide all other views if the required permission is not granted -->
+    <TextView
+        android:id="@+id/missing_permission_view"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:text="@string/enable_permission_procedure"
+        android:contentDescription="@string/enable_permission_procedure_description"
+        android:background="@android:color/white"
+        android:gravity="center"
+        android:visibility="gone" />
+</FrameLayout>
\ No newline at end of file
diff --git a/res/layout/mediapicker_location_chooser.xml b/res/layout/mediapicker_location_chooser.xml
new file mode 100644
index 0000000..9135299
--- /dev/null
+++ b/res/layout/mediapicker_location_chooser.xml
@@ -0,0 +1,22 @@
+<?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.
+-->
+<fragment
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:id="@+id/place_picker_fragment"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:name="com.google.android.location.places.ui.placepicker.PlacePickerFragment" />
diff --git a/res/layout/mediapicker_location_container.xml b/res/layout/mediapicker_location_container.xml
new file mode 100644
index 0000000..6f476d3
--- /dev/null
+++ b/res/layout/mediapicker_location_container.xml
@@ -0,0 +1,31 @@
+<?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:id="@+id/place_picker_container"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    >
+    <!-- This view will be hidden by the PlacePickerFragment if the required permission is granted -->
+    <TextView
+        android:id="@+id/missing_permission_view"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:gravity="center"
+        android:text="@string/enable_permission_procedure"
+        android:contentDescription="@string/enable_permission_procedure_description" />
+    </FrameLayout>
diff --git a/res/layout/mediapicker_tab_button.xml b/res/layout/mediapicker_tab_button.xml
new file mode 100644
index 0000000..353c871
--- /dev/null
+++ b/res/layout/mediapicker_tab_button.xml
@@ -0,0 +1,24 @@
+<?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.
+-->
+
+<!-- android:contentDescription is set in code -->
+<ImageButton xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="48dp"
+    android:layout_height="48dp"
+    android:background="@drawable/mediapicker_tab_button_background"
+    android:contentDescription="@null">
+</ImageButton>
\ No newline at end of file
diff --git a/res/layout/message_audio_attachment.xml b/res/layout/message_audio_attachment.xml
new file mode 100644
index 0000000..0854269
--- /dev/null
+++ b/res/layout/message_audio_attachment.xml
@@ -0,0 +1,22 @@
+<?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.
+-->
+<com.android.messaging.ui.AudioAttachmentView
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="wrap_content"
+    android:layout_height="70dp"
+    android:importantForAccessibility="no"
+    style="@style/AudioAttachmentViewStyle" />
diff --git a/res/layout/message_vcard_attachment.xml b/res/layout/message_vcard_attachment.xml
new file mode 100644
index 0000000..0da6e2d
--- /dev/null
+++ b/res/layout/message_vcard_attachment.xml
@@ -0,0 +1,23 @@
+<?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.
+-->
+<com.android.messaging.ui.PersonItemView
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="wrap_content"
+    android:layout_height="wrap_content"
+    android:paddingTop="@dimen/message_text_top_padding"
+    android:paddingBottom="@dimen/message_text_bottom_padding"
+    style="@style/MessageVcardAttachmentStyle" />
diff --git a/res/layout/message_video_attachment.xml b/res/layout/message_video_attachment.xml
new file mode 100644
index 0000000..8aa2061
--- /dev/null
+++ b/res/layout/message_video_attachment.xml
@@ -0,0 +1,25 @@
+<?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.
+-->
+<com.android.messaging.ui.VideoThumbnailView
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    android:layout_width="wrap_content"
+    android:layout_height="wrap_content"
+    android:layout_gravity="center_vertical"
+    android:minWidth="@dimen/video_message_min_size"
+    android:minHeight="@dimen/video_message_min_size"
+    app:mode="imageThumbnail" />
diff --git a/res/layout/mms_config_debug_fragment.xml b/res/layout/mms_config_debug_fragment.xml
new file mode 100644
index 0000000..27528f9
--- /dev/null
+++ b/res/layout/mms_config_debug_fragment.xml
@@ -0,0 +1,53 @@
+<?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.
+-->
+<LinearLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:orientation="vertical">
+
+    <LinearLayout
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:orientation="horizontal"
+        android:layout_margin="16dp">
+        <TextView
+            android:id="@+id/sim_title"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:text="@string/debug_sub_id_spinner_text" />
+        <Spinner
+            android:id="@+id/sim_selector"
+            android:layout_width="0dp"
+            android:layout_weight="1"
+            android:layout_height="wrap_content" />
+    </LinearLayout>
+
+    <View
+        android:layout_width="match_parent"
+        android:layout_height="1dp"
+        android:background="#555555" />
+
+    <ListView
+        android:id="@android:id/list"
+        android:layout_width="match_parent"
+        android:layout_height="0dp"
+        android:layout_weight="1"
+        android:divider="@null"
+        android:dividerHeight="0px" />
+
+</LinearLayout>
\ No newline at end of file
diff --git a/res/layout/open_source_licenses.xml b/res/layout/open_source_licenses.xml
new file mode 100644
index 0000000..89995eb
--- /dev/null
+++ b/res/layout/open_source_licenses.xml
@@ -0,0 +1,22 @@
+<?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.
+-->
+
+<WebView xmlns:android="http://schemas.android.com/apk/res/android"
+    android:id="@+id/osl_web_view"
+    android:layout_height="wrap_content"
+    android:layout_width="match_parent"
+    />
diff --git a/res/layout/people_and_options_activity.xml b/res/layout/people_and_options_activity.xml
new file mode 100644
index 0000000..af879a0
--- /dev/null
+++ b/res/layout/people_and_options_activity.xml
@@ -0,0 +1,23 @@
+<?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.
+-->
+<fragment
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    class="com.android.messaging.ui.conversationsettings.PeopleAndOptionsFragment"
+    android:id="@+id/people_and_options_fragment"
+    android:theme="@style/Theme.AppCompat.Light.DarkActionBar"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent" />
\ No newline at end of file
diff --git a/res/layout/people_and_options_fragment.xml b/res/layout/people_and_options_fragment.xml
new file mode 100644
index 0000000..be61710
--- /dev/null
+++ b/res/layout/people_and_options_fragment.xml
@@ -0,0 +1,23 @@
+<?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.
+-->
+<ListView
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:id="@android:id/list"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:divider="@null"
+    android:dividerHeight="0px" />
\ No newline at end of file
diff --git a/res/layout/people_and_options_section_header.xml b/res/layout/people_and_options_section_header.xml
new file mode 100644
index 0000000..44b10c1
--- /dev/null
+++ b/res/layout/people_and_options_section_header.xml
@@ -0,0 +1,38 @@
+<?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.
+-->
+<LinearLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:id="@+id/people_and_options_header"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content"
+    android:orientation="vertical">
+
+    <View
+        android:id="@+id/divider"
+        android:layout_width="match_parent"
+        android:layout_height="1dp"
+        android:background="@color/people_and_options_list_divider"/>
+
+    <TextView
+        android:id="@+id/header_text"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:padding="16dp"
+        android:text="@string/participant_list_title"
+        style="@style/PeopleAndOptionsSectionHeader" />
+
+</LinearLayout>
\ No newline at end of file
diff --git a/res/layout/people_list_item_view.xml b/res/layout/people_list_item_view.xml
new file mode 100644
index 0000000..e4c07e4
--- /dev/null
+++ b/res/layout/people_list_item_view.xml
@@ -0,0 +1,26 @@
+<?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.
+-->
+<com.android.messaging.ui.PersonItemView
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    android:orientation="horizontal"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content"
+    android:paddingTop="8dp"
+    android:paddingBottom="8dp"
+    android:background="?android:attr/selectableItemBackground"
+    style="@style/PeopleListItemViewStyle" />
diff --git a/res/layout/people_options_item_view.xml b/res/layout/people_options_item_view.xml
new file mode 100644
index 0000000..fbb9592
--- /dev/null
+++ b/res/layout/people_options_item_view.xml
@@ -0,0 +1,64 @@
+<?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.
+-->
+<com.android.messaging.ui.conversationsettings.PeopleOptionsItemView
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:orientation="horizontal"
+    android:layout_width="match_parent"
+    android:layout_height="56dp"
+    android:gravity="center_vertical"
+    android:background="?android:attr/selectableItemBackground"
+    android:clickable="true"
+    style="@style/PeopleAndOptionsItemStyle">
+
+    <LinearLayout
+        android:layout_width="0dp"
+        android:layout_weight="1"
+        android:layout_height="match_parent"
+        android:orientation="vertical"
+        android:gravity="center_vertical">
+
+        <TextView
+            android:id="@+id/title"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:singleLine="true"
+            android:maxLines="1"
+            android:ellipsize="end"
+            style="@style/ParticipantListItem"
+            android:layout_gravity="center_vertical" />
+
+        <TextView
+            android:id="@+id/subtitle"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:singleLine="true"
+            android:maxLines="1"
+            android:ellipsize="end"
+            style="@style/ParticipantListItemDetail"
+            android:layout_gravity="center_vertical" />
+
+    </LinearLayout>
+
+    <android.support.v7.widget.SwitchCompat
+        android:id="@+id/switch_button"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:focusable="false"
+        android:clickable="false"
+        android:visibility="gone" />
+
+</com.android.messaging.ui.conversationsettings.PeopleOptionsItemView>
diff --git a/res/layout/permission_check_activity.xml b/res/layout/permission_check_activity.xml
new file mode 100644
index 0000000..57f665c
--- /dev/null
+++ b/res/layout/permission_check_activity.xml
@@ -0,0 +1,80 @@
+<?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.
+-->
+<LinearLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:background="@color/permission_check_activity_background"
+    android:orientation="vertical" >
+    <TextView
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:text="@string/required_permissions_promo"
+        android:paddingTop="96dp"
+        style="@style/PromoScreenTextStyle.CenterAligned" />
+    <TextView
+        android:id="@+id/enable_permission_procedure"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:paddingTop="16dp"
+        android:text="@string/enable_permission_procedure"
+        android:contentDescription="@string/enable_permission_procedure_description"
+        style="@style/PromoScreenTextStyle.CenterAligned"
+        android:visibility="invisible"/>
+    <ImageView
+        android:layout_width="match_parent"
+        android:layout_height="0dp"
+        android:layout_weight="1"
+        android:paddingTop="40dp"
+        android:src="@drawable/permissions"
+        android:scaleType="centerInside"
+        android:importantForAccessibility="no" />
+    <View
+        android:layout_width="match_parent"
+        android:layout_height="1dp"
+        android:background="@android:color/white" />
+    <!-- Buttons -->
+    <LinearLayout
+        android:layout_width="match_parent"
+        android:layout_height="48dp"
+        android:orientation="horizontal" >
+        <TextView
+            android:id="@+id/exit"
+            android:layout_width="0dp"
+            android:layout_height="match_parent"
+            android:layout_weight="1"
+            android:text="@string/exit"
+            style="@style/PromoScreenButtonStyle" />
+        <TextView
+            android:id="@+id/next"
+            android:layout_width="0dp"
+            android:layout_height="match_parent"
+            android:layout_weight="1"
+            android:text="@string/next_with_arrow"
+            android:contentDescription="@string/next"
+            style="@style/PromoScreenButtonStyle" />
+        <TextView
+            android:id="@+id/settings"
+            android:layout_width="0dp"
+            android:layout_height="match_parent"
+            android:layout_weight="1"
+            android:text="@string/settings_with_arrow"
+            android:contentDescription="@string/settings"
+            style="@style/PromoScreenButtonStyle"
+            android:visibility="gone"/>
+        </LinearLayout>
+</LinearLayout>
diff --git a/res/layout/person_item_view.xml b/res/layout/person_item_view.xml
new file mode 100644
index 0000000..9645024
--- /dev/null
+++ b/res/layout/person_item_view.xml
@@ -0,0 +1,60 @@
+<?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.
+-->
+<merge
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content"
+    android:orientation="horizontal">
+
+    <com.android.messaging.ui.ContactIconView
+        android:id="@+id/contact_icon"
+        android:layout_width="@dimen/contact_list_icon_size"
+        android:layout_height="@dimen/contact_list_icon_size"
+        android:importantForAccessibility="no"
+        app:iconSize="normal"
+        android:layout_gravity="center_vertical" />
+
+    <LinearLayout
+        android:id="@+id/details_container"
+        android:orientation="vertical"
+        style="@style/ContactListItemLinearLayoutStyle"
+        android:layout_width="0dp"
+        android:layout_height="wrap_content"
+        android:layout_weight="1"
+        android:layout_gravity="center_vertical"
+        android:background="@android:color/transparent">
+
+        <TextView
+            android:id="@+id/name"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:singleLine="true"
+            android:maxLines="1"
+            android:ellipsize="end"
+            style="@style/ParticipantListItem" />
+
+        <TextView
+            android:id="@+id/details"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:maxLines="2"
+            android:ellipsize="end"
+            style="@style/ContactListItemDetail" />
+
+    </LinearLayout>
+</merge>
diff --git a/res/layout/place_card.xml b/res/layout/place_card.xml
new file mode 100644
index 0000000..93b9e8c
--- /dev/null
+++ b/res/layout/place_card.xml
@@ -0,0 +1,54 @@
+<?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.
+-->
+
+<merge xmlns:android="http://schemas.android.com/apk/res/android"
+   android:layout_width="wrap_content"
+   android:layout_height="wrap_content">
+
+    <com.android.messaging.ui.AsyncImageView
+        android:id="@+id/map_image"
+        android:layout_gravity="center_horizontal"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_weight="1"
+        android:scaleType="fitCenter"
+        android:adjustViewBounds="true" />
+
+    <TextView
+        android:id="@+id/place_title"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:maxLines="1"
+        android:ellipsize="end"
+        android:textSize="16sp"
+        android:textStyle="bold" />
+
+    <TextView
+        android:id="@+id/place_subtitle"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:maxLines="2"
+        android:ellipsize="end"
+        android:textSize="14sp" />
+
+    <TextView
+        android:id="@+id/place_notes"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:textSize="14sp" />
+
+</merge>
\ No newline at end of file
diff --git a/res/layout/settings_fragment.xml b/res/layout/settings_fragment.xml
new file mode 100644
index 0000000..b62b245
--- /dev/null
+++ b/res/layout/settings_fragment.xml
@@ -0,0 +1,21 @@
+<?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.
+-->
+<ListView
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:id="@android:id/list"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent" />
\ No newline at end of file
diff --git a/res/layout/settings_item_view.xml b/res/layout/settings_item_view.xml
new file mode 100644
index 0000000..a434c11
--- /dev/null
+++ b/res/layout/settings_item_view.xml
@@ -0,0 +1,44 @@
+<?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.
+-->
+<LinearLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:orientation="vertical"
+    android:layout_width="match_parent"
+    android:layout_height="@dimen/settings_list_item_height"
+    android:gravity="center_vertical"
+    android:paddingLeft="16dp"
+    android:paddingRight="16dp"
+    android:background="?android:attr/selectableItemBackground" >
+
+    <TextView
+        android:id="@+id/title"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:singleLine="true"
+        android:maxLines="1"
+        android:ellipsize="end"
+        style="@style/SettingsListItem" />
+
+    <TextView
+        android:id="@+id/subtitle"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:maxLines="2"
+        android:ellipsize="end"
+        style="@style/SettingsListItemDetail" />
+
+</LinearLayout>
diff --git a/res/layout/share_intent_activity.xml b/res/layout/share_intent_activity.xml
new file mode 100644
index 0000000..d1e59ff
--- /dev/null
+++ b/res/layout/share_intent_activity.xml
@@ -0,0 +1,21 @@
+<?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.
+-->
+<fragment xmlns:android="http://schemas.android.com/apk/res/android"
+    class="com.android.messaging.ui.conversationlist.ShareIntentFragment"
+    android:id="@+id/share_intent_fragment"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent" />
diff --git a/res/layout/share_intent_conversation_list_view.xml b/res/layout/share_intent_conversation_list_view.xml
new file mode 100644
index 0000000..3da3c6b
--- /dev/null
+++ b/res/layout/share_intent_conversation_list_view.xml
@@ -0,0 +1,44 @@
+<?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.
+-->
+
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="wrap_content"
+    android:layout_height="wrap_content"
+    android:paddingTop="8dp"
+    android:orientation="vertical">
+  <FrameLayout
+      android:layout_width="match_parent"
+      android:layout_height="0dp"
+      android:layout_weight="1">
+      <android.support.v7.widget.RecyclerView
+          android:id="@android:id/list"
+          android:layout_width="match_parent"
+          android:layout_height="wrap_content"
+          android:paddingTop="@dimen/conversation_list_first_item_extra_padding"
+          android:clipToPadding="false"
+          android:listSelector="?android:attr/listSelector"
+          android:dividerHeight="0px" />
+      <include
+          layout="@layout/list_empty_view"
+          android:id="@+id/no_conversations_view"
+          android:visibility="gone"/>
+  </FrameLayout>
+  <View
+      android:layout_width="match_parent"
+      android:layout_height="1dp"
+      android:background="#d2d2d2"/>
+</LinearLayout>
diff --git a/res/layout/sim_selector_item_view.xml b/res/layout/sim_selector_item_view.xml
new file mode 100644
index 0000000..a20c4a9
--- /dev/null
+++ b/res/layout/sim_selector_item_view.xml
@@ -0,0 +1,65 @@
+<?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.
+-->
+<com.android.messaging.ui.conversation.SimSelectorItemView
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content"
+    android:orientation="horizontal"
+    android:background="?android:attr/selectableItemBackground"
+    android:padding="12dp"
+    android:clipToPadding="false">
+
+    <LinearLayout
+        android:id="@+id/details_container"
+        android:orientation="vertical"
+        style="@style/SimSelectorItemLinearLayoutStyle"
+        android:layout_width="0dp"
+        android:layout_weight="1"
+        android:layout_height="wrap_content"
+        android:layout_gravity="center_vertical" >
+
+        <TextView
+            android:id="@+id/name"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:singleLine="true"
+            android:maxLines="1"
+            android:ellipsize="end"
+            style="@style/SimSelectorItem" />
+
+        <TextView
+            android:id="@+id/details"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:singleLine="true"
+            android:maxLines="1"
+            android:ellipsize="end"
+            style="@style/SimSelectorItemDetail" />
+
+    </LinearLayout>
+
+    <com.android.messaging.ui.conversation.SimIconView
+        android:id="@+id/sim_icon"
+        android:layout_width="@dimen/sim_selector_icon_size"
+        android:layout_height="@dimen/sim_selector_icon_size"
+        android:importantForAccessibility="no"
+        android:layout_gravity="center_vertical"
+        android:elevation="3dp"
+        app:iconSize="normal" />
+
+</com.android.messaging.ui.conversation.SimSelectorItemView>
diff --git a/res/layout/sim_selector_view.xml b/res/layout/sim_selector_view.xml
new file mode 100644
index 0000000..816a2cc
--- /dev/null
+++ b/res/layout/sim_selector_view.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.
+-->
+<com.android.messaging.ui.conversation.SimSelectorView
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:background="@drawable/sim_selector_background_gradient">
+
+    <ListView
+        android:id="@+id/sim_list"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_gravity="bottom"
+        android:divider="@null"
+        android:dividerHeight="0px"
+        android:visibility="gone" />
+
+</com.android.messaging.ui.conversation.SimSelectorView>
diff --git a/res/layout/sms_free_storage_action_item_view.xml b/res/layout/sms_free_storage_action_item_view.xml
new file mode 100644
index 0000000..fd71904
--- /dev/null
+++ b/res/layout/sms_free_storage_action_item_view.xml
@@ -0,0 +1,23 @@
+<?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/action"
+    android:padding="8dp"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    style="@style/LowStorageActionItemStyle" />
diff --git a/res/layout/sms_mms_dump_file_list_item.xml b/res/layout/sms_mms_dump_file_list_item.xml
new file mode 100644
index 0000000..a939db2
--- /dev/null
+++ b/res/layout/sms_mms_dump_file_list_item.xml
@@ -0,0 +1,30 @@
+<?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/file"
+    android:paddingLeft="8dip"
+    android:paddingRight="8dip"
+    android:paddingTop="10dip"
+    android:paddingBottom="10dip"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:layout_alignParentLeft="true"
+    android:textSize="16sp"
+    android:textColor="@color/compose_send_text_color"
+    android:singleLine="false"
+    style="@style/ConversationComposeSendText" />
diff --git a/res/layout/sms_storage_low_warning_dialog.xml b/res/layout/sms_storage_low_warning_dialog.xml
new file mode 100644
index 0000000..965cab6
--- /dev/null
+++ b/res/layout/sms_storage_low_warning_dialog.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.
+-->
+<FrameLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:padding="6dp"
+    android:background="@android:color/background_light">
+
+    <ListView android:id="@+id/free_storage_action_list"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:layout_weight="1"
+        android:drawSelectorOnTop="false"
+        android:listSelector="?android:attr/selectableItemBackground"
+        android:longClickable="false"/>
+
+</FrameLayout>
diff --git a/res/layout/snack_bar.xml b/res/layout/snack_bar.xml
new file mode 100644
index 0000000..1cdabc3
--- /dev/null
+++ b/res/layout/snack_bar.xml
@@ -0,0 +1,64 @@
+<?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.
+-->
+<LinearLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:id="@+id/snackbarContainer"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content"
+    android:orientation="horizontal">
+
+    <!--
+        First child is also a LinearLayout to preserve it's styles from getting
+        overridden by the LayoutParams set by the WindowManager.
+        Also, it is the view being animated within the root view.
+    -->
+
+   <LinearLayout
+        android:id="@+id/snack_bar"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:orientation="horizontal"
+        android:background="#323232" >
+
+        <FrameLayout
+            android:id="@+id/snack_bar_message_wrapper"
+            style="@style/SnackBarMessageWrapper"
+            android:layout_marginTop="@dimen/snack_bar_top_bottom_margin"
+            android:layout_marginBottom="@dimen/snack_bar_top_bottom_margin"
+            android:layout_width="0dp"
+            android:layout_height="wrap_content"
+            android:layout_weight="1" >
+            <TextView
+                android:id="@+id/snack_bar_message"
+                style="@style/SnackBarText"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content" />
+        </FrameLayout>
+
+        <TextView
+            android:id="@+id/snack_bar_action"
+            style="@style/SnackBarText"
+            android:paddingLeft="@dimen/snack_bar_left_right_margin"
+            android:paddingRight="@dimen/snack_bar_left_right_margin"
+            android:layout_width="wrap_content"
+            android:layout_height="match_parent"
+            android:gravity="center_vertical"
+            android:textColor="#EEFF41"
+            android:textAllCaps="true" />
+    </LinearLayout>
+
+</LinearLayout>
\ No newline at end of file
diff --git a/res/layout/test_activity.xml b/res/layout/test_activity.xml
new file mode 100644
index 0000000..a34b17a
--- /dev/null
+++ b/res/layout/test_activity.xml
@@ -0,0 +1,28 @@
+<?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:id="@+id/test_container"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    >
+
+    <FrameLayout
+        android:id="@+id/test_content"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"/>
+
+</FrameLayout>
diff --git a/res/layout/vcard_detail_activity.xml b/res/layout/vcard_detail_activity.xml
new file mode 100644
index 0000000..aa4c3b9
--- /dev/null
+++ b/res/layout/vcard_detail_activity.xml
@@ -0,0 +1,23 @@
+<?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.
+-->
+<fragment
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    class="com.android.messaging.ui.VCardDetailFragment"
+    android:id="@+id/vcard_detail_fragment"
+    android:theme="@style/Theme.AppCompat.Light.DarkActionBar"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent" />
\ No newline at end of file
diff --git a/res/layout/vcard_detail_fragment.xml b/res/layout/vcard_detail_fragment.xml
new file mode 100644
index 0000000..8689df0
--- /dev/null
+++ b/res/layout/vcard_detail_fragment.xml
@@ -0,0 +1,28 @@
+<?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:id="@+id/list_layout_parent"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent">
+
+    <ExpandableListView
+        android:id="@+id/list"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:drawSelectorOnTop="false" />
+
+</FrameLayout>
\ No newline at end of file
diff --git a/res/layout/video_thumbnail_view.xml b/res/layout/video_thumbnail_view.xml
new file mode 100644
index 0000000..7c009cb
--- /dev/null
+++ b/res/layout/video_thumbnail_view.xml
@@ -0,0 +1,38 @@
+<?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.
+-->
+
+<merge xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent">
+
+    <com.android.messaging.ui.AsyncImageView
+        android:id="@+id/video_thumbnail_image"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        app:cornerRadius="@dimen/attachment_rounded_corner_radius" />
+
+    <ImageButton
+        android:id="@+id/video_thumbnail_play_button"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_gravity="center"
+        android:background="@drawable/transparent_button_background"
+        android:src="@drawable/ic_video_play_light"
+        android:contentDescription="@string/video_thumbnail_view_play_button_content_description" />
+
+</merge>
\ No newline at end of file
diff --git a/res/layout/viewgroup_vertical_explode_animation_popup.xml b/res/layout/viewgroup_vertical_explode_animation_popup.xml
new file mode 100644
index 0000000..8a8aa60
--- /dev/null
+++ b/res/layout/viewgroup_vertical_explode_animation_popup.xml
@@ -0,0 +1,30 @@
+<?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.
+-->
+<view
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    class="com.android.messaging.ui.animation.ViewGroupItemVerticalExplodeAnimation$VerticalExplodePopupRootView"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:background="#55000000">
+
+    <ImageView
+        android:id="@+id/explode_view"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:importantForAccessibility="no" />
+
+</view>
diff --git a/res/layout/widget_conversation.xml b/res/layout/widget_conversation.xml
new file mode 100644
index 0000000..a9cda98
--- /dev/null
+++ b/res/layout/widget_conversation.xml
@@ -0,0 +1,110 @@
+<?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.
+-->
+
+<RelativeLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:padding="@dimen/widget_margin"
+    android:background="@android:color/transparent" >
+    <LinearLayout
+        android:id="@+id/widget_header"
+        android:layout_width="match_parent"
+        android:layout_height="48dp"
+        android:orientation="horizontal"
+        android:paddingLeft="10dip"
+        android:paddingRight="10dip"
+        android:layout_alignParentTop="true">
+        <TextView
+            android:id="@+id/widget_label"
+            style="@style/WidgetConversationTitle"
+            android:layout_height="wrap_content"
+            android:layout_width="0dip"
+            android:layout_weight = "1"
+            android:layout_gravity="center_vertical"
+            android:freezesText="true" />
+        <ImageView
+            android:id="@+id/launcher_icon"
+            android:src="@drawable/ic_launcher"
+            android:layout_height="wrap_content"
+            android:layout_width="0dip"
+            android:layout_weight = "1"
+            android:scaleType="fitStart"
+            android:paddingTop="12dip"
+            android:paddingBottom="12dip"
+            android:visibility="gone"
+            android:importantForAccessibility="no" />
+        <ImageButton
+            android:id="@+id/widget_goto_conversation_list"
+            style="@style/WidgetHeaderImage"
+            android:layout_width="@dimen/widget_header_new_conv_button_width"
+            android:layout_height="match_parent"
+            android:src="@drawable/ic_widget_list"
+            android:background="?android:attr/selectableItemBackground"
+            android:contentDescription="@string/widget_conversation_list_content_description"
+            android:layout_gravity="center_vertical" />
+    </LinearLayout>
+    <ListView
+        android:id="@+id/message_list"
+        android:layout_below="@+id/top_line"
+        android:layout_above="@+id/bottom_line"
+        android:layout_marginTop="-2dp"
+        android:layout_width="match_parent"
+        android:layout_height="0dip"
+        android:layout_weight="1"
+        android:drawSelectorOnTop="true"
+        android:transcriptMode="alwaysScroll"
+        android:stackFromBottom="true"
+        android:overScrollMode="never"
+        android:divider="@null" />
+    <TextView
+        android:id="@+id/widget_configuration"
+        style="@style/WidgetConversationTitle"
+        android:layout_below="@+id/top_line"
+        android:layout_above="@+id/bottom_line"
+        android:layout_width="match_parent"
+        android:layout_height="0dip"
+        android:layout_weight="1"
+        android:orientation="horizontal"
+        android:gravity="center_vertical"
+        android:visibility="gone"
+        android:singleLine="false"
+        android:paddingRight="20dp"
+        android:paddingLeft="20dp"
+        android:paddingBottom="20dp"
+        android:text="@string/tap_to_configure" />
+    <ImageView
+        android:id="@id/top_line"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:background="@drawable/widget_hr"
+        android:importantForAccessibility="no"
+        android:contentDescription="@null"
+        android:layout_marginTop="-2dp"
+        android:layout_below="@id/widget_header"
+        />
+    <ImageView
+        android:id="@id/bottom_line"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:background="@drawable/widget_hr"
+        android:importantForAccessibility="no"
+        android:contentDescription="@null"
+        android:layout_marginTop="-24dp"
+        android:layout_alignParentBottom="true"
+        />
+</RelativeLayout>
diff --git a/res/layout/widget_conversation_list.xml b/res/layout/widget_conversation_list.xml
new file mode 100644
index 0000000..822fe55
--- /dev/null
+++ b/res/layout/widget_conversation_list.xml
@@ -0,0 +1,65 @@
+<?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.
+-->
+
+<LinearLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:padding="@dimen/widget_margin"
+    android:orientation="vertical">
+    <LinearLayout
+        android:id="@+id/widget_header"
+        android:layout_width="match_parent"
+        android:layout_height="@dimen/widget_header_height"
+        android:orientation="horizontal"
+        android:paddingLeft="8dip"
+        android:background="@drawable/widget_top_background"
+        android:gravity="center_vertical">
+        <TextView
+            android:id="@+id/widget_label"
+            style="@style/WidgetTitle"
+            android:layout_height="wrap_content"
+            android:layout_width="0dip"
+            android:layout_weight = "1"
+            android:contentDescription="@string/widget_title_content_description"
+            android:freezesText="true" />
+        <ImageButton
+            android:id="@+id/widget_compose"
+            style="@style/WidgetHeaderImage"
+            android:layout_width="@dimen/widget_header_new_conv_button_width"
+            android:layout_height="match_parent"
+            android:src="@drawable/ic_add_white"
+            android:background="?android:attr/selectableItemBackground"
+            android:contentDescription="@string/widget_new_conversation_content_description"
+            android:paddingRight="8dip"
+            android:paddingBottom="4dip" />
+    </LinearLayout>
+    <ImageView
+        android:layout_width="match_parent"
+        android:layout_height="1dp"
+        android:background="#aaaaaa"
+        android:importantForAccessibility="no"
+        android:contentDescription="@null" />
+    <ListView
+        android:id="@+id/conversation_list"
+        android:layout_width="match_parent"
+        android:layout_height="0dip"
+        android:layout_weight="1"
+        android:cacheColorHint="#00000000"
+        android:divider="@android:drawable/divider_horizontal_bright"
+        android:background="@drawable/widget_bottom_background" />
+</LinearLayout>
diff --git a/res/layout/widget_conversation_list_item.xml b/res/layout/widget_conversation_list_item.xml
new file mode 100644
index 0000000..e0115a2
--- /dev/null
+++ b/res/layout/widget_conversation_list_item.xml
@@ -0,0 +1,144 @@
+<?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.
+-->
+
+<RelativeLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:id="@+id/widget_conversation_list_item"
+    android:layout_width="match_parent"
+    style="@style/WidgetConversationListItemStyle"
+    android:paddingLeft="8dip"
+    android:paddingRight="8dip" >
+
+    <FrameLayout
+        android:id="@+id/avatarFrame"
+        android:layout_centerVertical="true"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content">
+        <ImageView
+            android:id="@+id/avatarView"
+            style="@style/WidgetConversationListItemAvatar"
+            android:layout_width="@dimen/contact_icon_view_normal_size"
+            android:layout_height="@dimen/contact_icon_view_normal_size"
+            android:layout_centerVertical="true"
+            android:scaleType="fitXY"
+            android:importantForAccessibility="no"
+            android:contentDescription="@null" />
+        <ImageView
+            android:id="@+id/conversation_failed_status_icon"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            style="@style/WidgetConversationItemFailed"
+            android:src="@drawable/ic_failed_status_red"
+            android:visibility="gone"
+            android:importantForAccessibility="no"
+            android:contentDescription="@null"/>
+    </FrameLayout>
+
+    <LinearLayout
+        android:layout_centerVertical="true"
+        android:orientation="vertical"
+        style="@style/WidgetConversationListItemBody"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content" >
+
+        <RelativeLayout
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content" >
+
+            <LinearLayout
+                android:orientation="horizontal"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:layout_marginTop="6dip"
+                android:layout_alignParentTop="true"
+                android:gravity="center_vertical"
+                android:background="@android:color/transparent">
+                <ImageView
+                    android:id="@+id/conversation_notification_bell"
+                    style="@style/ConversationListNotificationBellPaddingStyle"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:src="@drawable/ic_notifications_off_small_light"
+                    android:visibility="gone"
+                    android:importantForAccessibility="no"
+                    android:contentDescription="@null"
+                    android:layout_gravity="center_vertical"
+                    android:background="@android:color/transparent" />
+
+                <TextView android:id="@+id/from"
+                    style="@style/WidgetConversationListItemFrom"
+                    android:layout_width="0dp"
+                    android:layout_height="wrap_content"
+                    android:layout_weight="1"
+                    android:textAppearance="?android:attr/textAppearanceMediumInverse"
+                    android:singleLine="true"
+                    android:textSize="18sp"
+                    android:textColor="@color/widget_text_color"
+                    android:ellipsize="marquee"  />
+
+                <TextView android:id="@+id/date"
+                    style="@style/WidgetConversationListItemDate"
+                    android:paddingTop="4dp"
+                    android:textSize="12sp"
+                    android:layout_height="wrap_content"
+                    android:layout_width="wrap_content"
+                    android:textAppearance="?android:attr/textAppearanceSmallInverse"
+                    android:singleLine="true"
+                    android:textColor="@color/widget_text_color" />
+            </LinearLayout>
+        </RelativeLayout>
+
+        <TextView android:id="@+id/snippet"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:textAppearance="?android:attr/textAppearanceSmallInverse"
+            android:maxLines="2"
+            android:textSize="13sp"
+            android:layout_marginBottom="5dip"
+            android:layout_alignParentBottom="true"
+            android:textColor="@color/widget_text_color"
+            android:ellipsize="end" />
+
+        <LinearLayout android:id="@+id/errorBlock"
+            android:orientation="vertical"
+            android:layout_alignParentBottom="true"
+            android:visibility="gone"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content" >
+
+            <TextView android:id="@+id/errorSnippet"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:textAppearance="?android:attr/textAppearanceSmallInverse"
+                android:maxLines="1"
+                android:textSize="13sp"
+                android:textColor="@color/widget_text_color"
+                android:ellipsize="end" />
+
+            <TextView android:id="@+id/errorText"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:textAppearance="?android:attr/textAppearanceSmallInverse"
+                android:maxLines="2"
+                android:textSize="13sp"
+                android:layout_marginBottom="5dip"
+                android:textColor="@color/conversation_list_error"
+                android:ellipsize="end" />
+
+        </LinearLayout>
+    </LinearLayout>
+</RelativeLayout>
diff --git a/res/layout/widget_loading.xml b/res/layout/widget_loading.xml
new file mode 100644
index 0000000..8282b5d
--- /dev/null
+++ b/res/layout/widget_loading.xml
@@ -0,0 +1,31 @@
+<?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:id="@+id/widget_loading"
+    android:layout_width="match_parent"
+    android:layout_height="64sp" >
+    <TextView
+        android:id="@+id/loading_text"
+        style="@style/WidgetLoading"
+        android:layout_height="match_parent"
+        android:layout_width="match_parent"
+        android:gravity="center"
+        android:textColor="@android:color/black"
+        android:textSize="12sp" />
+</FrameLayout>
\ No newline at end of file
diff --git a/res/layout/widget_message_item_incoming.xml b/res/layout/widget_message_item_incoming.xml
new file mode 100644
index 0000000..3a1bc00
--- /dev/null
+++ b/res/layout/widget_message_item_incoming.xml
@@ -0,0 +1,119 @@
+<?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.
+-->
+
+<RelativeLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:id="@+id/widget_message_item_incoming"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content"
+    android:paddingBottom="8dp"
+    android:paddingLeft="8dip"
+    android:paddingRight="8dip" >
+
+    <FrameLayout
+        android:id="@+id/avatarFrame"
+        android:layout_gravity="top"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content">
+        <ImageView
+            android:id="@+id/avatarShadow"
+            style="@style/WidgetConversationItemIncomingAvatarShadow"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_centerVertical="true"
+            android:src="@drawable/ic_widget_avatar_shadow"
+            android:layout_marginTop="-4dp"
+            android:importantForAccessibility="no"
+            android:contentDescription="@null" />
+        <ImageView
+            android:id="@+id/avatarView"
+            style="@style/WidgetConversationItemAvatarIncoming"
+            android:layout_width="@dimen/contact_icon_view_normal_size"
+            android:layout_height="@dimen/contact_icon_view_normal_size"
+            android:layout_centerVertical="true"
+            android:scaleType="fitXY"
+            android:importantForAccessibility="no"
+            android:contentDescription="@null" />
+        <ImageView
+            android:id="@+id/conversation_failed_status_icon"
+            style="@style/WidgetConversationItemFailed"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:src="@drawable/ic_failed_status_red"
+            android:visibility="gone"
+            android:importantForAccessibility="no"
+            android:contentDescription="@null"/>
+    </FrameLayout>
+
+    <LinearLayout
+        android:layout_gravity="top"
+        android:orientation="vertical"
+        style="@style/WidgetConversationItemBodyIncoming"
+        android:background="@drawable/widget_msg_bubble_incoming"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content" >
+
+        <TextView android:id="@+id/message"
+            style="@style/WidgetConversationItemWidget"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:textAppearance="?android:attr/textAppearanceSmallInverse"
+            android:textSize="16sp"
+            android:paddingTop="6dp"
+            android:paddingLeft="6dp"
+            android:paddingRight="6dp"
+            android:layout_marginBottom="3dip"
+            android:layout_alignParentBottom="true"
+            android:textColor="@color/widget_incoming_text_color"
+            android:ellipsize="end" />
+
+        <TextView android:id="@+id/date"
+            style="@style/WidgetConversationItemDate"
+            android:paddingLeft="6dp"
+            android:paddingRight="6dp"
+            android:layout_marginBottom="9dip"
+            android:textSize="12sp"
+            android:layout_height="wrap_content"
+            android:layout_width="wrap_content"
+            android:textAppearance="?android:attr/textAppearanceSmallInverse"
+            android:singleLine="true"
+            android:textColor="@color/timestamp_text_incoming" />
+
+        <FrameLayout
+            android:id="@+id/attachmentFrame"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content">
+            <ImageView
+                android:id="@+id/attachment"
+                style="@style/WidgetConversationItemAttachment"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:importantForAccessibility="no"
+                android:adjustViewBounds="true"
+                android:contentDescription="@null"/>
+            <ImageView
+                android:id="@+id/playButton"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_gravity="center"
+                android:visibility="gone"
+                android:src="@drawable/ic_preview_play"
+                android:importantForAccessibility="no"
+                android:contentDescription="@null"/>
+        </FrameLayout>
+    </LinearLayout>
+</RelativeLayout>
diff --git a/res/layout/widget_message_item_outgoing.xml b/res/layout/widget_message_item_outgoing.xml
new file mode 100644
index 0000000..472b5a2
--- /dev/null
+++ b/res/layout/widget_message_item_outgoing.xml
@@ -0,0 +1,120 @@
+<?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.
+-->
+
+<RelativeLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:id="@+id/widget_message_item_outgoing"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content"
+    android:paddingBottom="8dp"
+    android:paddingLeft="8dip"
+    android:paddingRight="8dip" >
+
+    <FrameLayout
+        android:id="@+id/avatarFrame"
+        android:layout_gravity="top"
+        style="@style/WidgetConversationItemAvatarOutgoing"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content">
+        <ImageView
+            android:id="@+id/avatarShadow"
+            style="@style/WidgetConversationItemOutgoingAvatarShadow"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_centerVertical="true"
+            android:src="@drawable/ic_widget_avatar_shadow"
+            android:layout_marginTop="-4dp"
+            android:importantForAccessibility="no"
+            android:contentDescription="@null" />
+        <ImageView
+            android:id="@+id/avatarView"
+            android:layout_width="@dimen/contact_icon_view_normal_size"
+            android:layout_height="@dimen/contact_icon_view_normal_size"
+            android:layout_centerVertical="true"
+            android:scaleType="fitXY"
+            android:importantForAccessibility="no"
+            android:contentDescription="@null" />
+        <ImageView
+            android:id="@+id/conversation_failed_status_icon"
+            style="@style/WidgetConversationItemFailed"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:src="@drawable/ic_failed_status_red"
+            android:visibility="gone"
+            android:importantForAccessibility="no"
+            android:contentDescription="@null"/>
+    </FrameLayout>
+
+    <LinearLayout
+        android:layout_gravity="top"
+        android:orientation="vertical"
+        style="@style/WidgetConversationItemBodyOutgoing"
+        android:background="@drawable/widget_msg_bubble_outgoing"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content" >
+
+        <TextView android:id="@+id/message"
+            style="@style/WidgetConversationItemWidget"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:textAppearance="?android:attr/textAppearanceSmallInverse"
+            android:textSize="16sp"
+            android:paddingTop="6dp"
+            android:paddingLeft="6dp"
+            android:paddingRight="6dp"
+            android:layout_marginBottom="3dip"
+            android:layout_alignParentBottom="true"
+            android:textColor="@color/widget_outgoing_text_color"
+            android:ellipsize="end" />
+
+        <TextView android:id="@+id/date"
+            style="@style/WidgetConversationItemDate"
+            android:paddingLeft="6dp"
+            android:paddingRight="6dp"
+            android:layout_marginBottom="9dip"
+            android:textSize="12sp"
+            android:layout_height="wrap_content"
+            android:layout_width="wrap_content"
+            android:textAppearance="?android:attr/textAppearanceSmallInverse"
+            android:singleLine="true"
+            android:textColor="@color/timestamp_text_outgoing" />
+
+        <FrameLayout
+            android:id="@+id/attachmentFrame"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content">
+            <ImageView
+                android:id="@+id/attachment"
+                style="@style/WidgetConversationItemAttachment"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:importantForAccessibility="no"
+                android:adjustViewBounds="true"
+                android:contentDescription="@null"/>
+            <ImageView
+                android:id="@+id/playButton"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_gravity="center"
+                android:visibility="gone"
+                android:src="@drawable/ic_preview_play"
+                android:importantForAccessibility="no"
+                android:contentDescription="@null"/>
+        </FrameLayout>
+
+    </LinearLayout>
+</RelativeLayout>
diff --git a/res/layout/widget_missing_permission.xml b/res/layout/widget_missing_permission.xml
new file mode 100644
index 0000000..712ad02
--- /dev/null
+++ b/res/layout/widget_missing_permission.xml
@@ -0,0 +1,26 @@
+<?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:layout_height="match_parent"
+    android:layout_width="match_parent"
+    android:text="@string/required_permissions_promo"
+    android:gravity="center"
+    style="@android:style/TextAppearance.Medium"
+    android:background="@color/action_bar_background_color"
+    android:freezesText="true" />