diff options
Diffstat (limited to 'java/com/android/incallui/contactgrid')
10 files changed, 404 insertions, 56 deletions
diff --git a/java/com/android/incallui/contactgrid/ContactGridManager.java b/java/com/android/incallui/contactgrid/ContactGridManager.java index ddbceb052..b3b775be2 100644 --- a/java/com/android/incallui/contactgrid/ContactGridManager.java +++ b/java/com/android/incallui/contactgrid/ContactGridManager.java @@ -17,6 +17,8 @@ package com.android.incallui.contactgrid; import android.content.Context; +import android.graphics.drawable.Animatable; +import android.graphics.drawable.Drawable; import android.os.SystemClock; import android.support.annotation.NonNull; import android.support.annotation.Nullable; @@ -24,8 +26,6 @@ import android.telecom.TelecomManager; import android.text.TextUtils; import android.view.View; import android.view.accessibility.AccessibilityEvent; -import android.view.animation.Animation; -import android.view.animation.AnimationUtils; import android.widget.Chronometer; import android.widget.ImageView; import android.widget.TextView; @@ -319,15 +319,22 @@ public class ContactGridManager { bottomTextView.setText(info.label); bottomTextView.setAllCaps(info.isSpamIconVisible); workIconImageView.setVisibility(info.isWorkIconVisible ? View.VISIBLE : View.GONE); - boolean wasHdIconVisible = hdIconImageView.getVisibility() == View.VISIBLE; - hdIconImageView.setVisibility( - info.isHdIconVisible || info.isHdAttemptingIconVisible ? View.VISIBLE : View.GONE); - if (!wasHdIconVisible && info.isHdAttemptingIconVisible) { - Animation animation = AnimationUtils.loadAnimation(context, R.anim.blinking); - hdIconImageView.startAnimation(animation); - } else if (wasHdIconVisible && !info.isHdAttemptingIconVisible) { - hdIconImageView.clearAnimation(); - hdIconImageView.setAlpha(1f); + if (hdIconImageView.getVisibility() == View.GONE) { + if (info.isHdAttemptingIconVisible) { + hdIconImageView.setVisibility(View.VISIBLE); + hdIconImageView.setActivated(false); + Drawable drawableCurrent = hdIconImageView.getDrawable().getCurrent(); + if (drawableCurrent instanceof Animatable && !((Animatable) drawableCurrent).isRunning()) { + ((Animatable) drawableCurrent).start(); + } + } else if (info.isHdIconVisible) { + hdIconImageView.setVisibility(View.VISIBLE); + hdIconImageView.setActivated(true); + } + } else if (info.isHdIconVisible) { + hdIconImageView.setActivated(true); + } else if (!info.isHdAttemptingIconVisible) { + hdIconImageView.setVisibility(View.GONE); } forwardIconImageView.setVisibility(info.isForwardIconVisible ? View.VISIBLE : View.GONE); spamIconImageView.setVisibility(info.isSpamIconVisible ? View.VISIBLE : View.GONE); diff --git a/java/com/android/incallui/contactgrid/TopRow.java b/java/com/android/incallui/contactgrid/TopRow.java index 80fa215c7..8c3d6b004 100644 --- a/java/com/android/incallui/contactgrid/TopRow.java +++ b/java/com/android/incallui/contactgrid/TopRow.java @@ -30,11 +30,11 @@ import com.android.incallui.videotech.utils.VideoUtils; * Gets the content of the top row. For example: * * <ul> - * <li>Captain Holt ON HOLD - * <li>Calling... - * <li>[Wi-Fi icon] Calling via Starbucks Wi-Fi - * <li>[Wi-Fi icon] Starbucks Wi-Fi - * <li>Call from + * <li>Captain Holt ON HOLD + * <li>Calling... + * <li>[Wi-Fi icon] Calling via Starbucks Wi-Fi + * <li>[Wi-Fi icon] Starbucks Wi-Fi + * <li>Call from * </ul> */ public class TopRow { @@ -61,7 +61,7 @@ public class TopRow { boolean labelIsSingleLine = true; if (state.isWifi && icon == null) { - icon = context.getDrawable(R.drawable.quantum_ic_network_wifi_white_24); + icon = context.getDrawable(R.drawable.quantum_ic_network_wifi_vd_theme_24); } if (state.state == State.INCOMING || state.state == State.CALL_WAITING) { diff --git a/java/com/android/incallui/contactgrid/res/anim/hd_scale_interpolator.xml b/java/com/android/incallui/contactgrid/res/anim/hd_scale_interpolator.xml new file mode 100644 index 000000000..2fa92dbba --- /dev/null +++ b/java/com/android/incallui/contactgrid/res/anim/hd_scale_interpolator.xml @@ -0,0 +1,22 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + ~ Copyright (C) 2017 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 + --> + +<pathInterpolator xmlns:android="http://schemas.android.com/apk/res/android" + android:controlX1="0.5" + android:controlY1="0" + android:controlX2="1" + android:controlY2="1"/> diff --git a/java/com/android/incallui/contactgrid/res/anim/hd_scale_interpolator2.xml b/java/com/android/incallui/contactgrid/res/anim/hd_scale_interpolator2.xml new file mode 100644 index 000000000..c312affef --- /dev/null +++ b/java/com/android/incallui/contactgrid/res/anim/hd_scale_interpolator2.xml @@ -0,0 +1,22 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + ~ Copyright (C) 2017 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 + --> + +<pathInterpolator xmlns:android="http://schemas.android.com/apk/res/android" + android:controlX1="0.5" + android:controlY1="0" + android:controlX2="0.5" + android:controlY2="1"/> diff --git a/java/com/android/incallui/contactgrid/res/anim/trim_end_interpolator.xml b/java/com/android/incallui/contactgrid/res/anim/trim_end_interpolator.xml new file mode 100644 index 000000000..20ada92b7 --- /dev/null +++ b/java/com/android/incallui/contactgrid/res/anim/trim_end_interpolator.xml @@ -0,0 +1,19 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + ~ Copyright (C) 2017 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 + --> + +<pathInterpolator xmlns:android="http://schemas.android.com/apk/res/android" + android:pathData="C0.2,0 0.1,1 0.5, 1 L 1,1" />
\ No newline at end of file diff --git a/java/com/android/incallui/contactgrid/res/anim/trim_start_interpolator.xml b/java/com/android/incallui/contactgrid/res/anim/trim_start_interpolator.xml new file mode 100644 index 000000000..1b640ec02 --- /dev/null +++ b/java/com/android/incallui/contactgrid/res/anim/trim_start_interpolator.xml @@ -0,0 +1,19 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + ~ Copyright (C) 2017 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 + --> + +<pathInterpolator xmlns:android="http://schemas.android.com/apk/res/android" + android:pathData="L0.5,0 C 0.7,0 0.6,1 1, 1" />
\ No newline at end of file diff --git a/java/com/android/incallui/contactgrid/res/drawable/asd_hd_icon.xml b/java/com/android/incallui/contactgrid/res/drawable/asd_hd_icon.xml new file mode 100644 index 000000000..415930e9a --- /dev/null +++ b/java/com/android/incallui/contactgrid/res/drawable/asd_hd_icon.xml @@ -0,0 +1,108 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + ~ Copyright (C) 2017 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 + --> + +<animated-selector xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:aapt="http://schemas.android.com/aapt"> + <item + android:id="@+id/hd_attempting" + android:drawable="@drawable/avd_hd_attempting" + android:state_activated="false"/> + <item + android:id="@+id/hd_enabled" + android:drawable="@drawable/quantum_ic_hd_vd_theme_24" + android:state_activated="true"/> + + <transition + android:fromId="@id/hd_attempting" + android:toId="@id/hd_enabled"> + <animated-vector android:drawable="@drawable/vd_hd_attempting"> + <target android:name="hdMask"> + <aapt:attr name="android:animation"> + <objectAnimator + android:duration="150" + android:propertyName="pathData" + android:startOffset="45" + android:valueFrom="M12, 12 m 0, -9 a 9,9 0 1,1 0,18 a 9,9 0 1,1 0,-18" + android:valueTo="M12, 12 m 0, -18 a 18,18 0 1,1 0,36 a 18,18 0 1,1 0,-36" + android:valueType="pathType"/> + </aapt:attr> + </target> + + <target android:name="hdRoot"> + <aapt:attr name="android:animation"> + <set android:ordering="sequentially"> + <set> + <objectAnimator + android:duration="45" + android:interpolator="@anim/hd_scale_interpolator" + android:propertyName="scaleX" + android:valueFrom="1" + android:valueTo="0.9"/> + <objectAnimator + android:duration="45" + android:interpolator="@anim/hd_scale_interpolator" + android:propertyName="scaleY" + android:valueFrom="1" + android:valueTo="0.9"/> + </set> + <set> + <objectAnimator + android:duration="120" + android:interpolator="@anim/hd_scale_interpolator2" + android:propertyName="scaleX" + android:valueFrom="0.9" + android:valueTo="1.2"/> + <objectAnimator + android:duration="120" + android:interpolator="@anim/hd_scale_interpolator2" + android:propertyName="scaleY" + android:valueFrom="0.9" + android:valueTo="1.2"/> + </set> + <set> + <objectAnimator + android:duration="120" + android:interpolator="@anim/hd_scale_interpolator2" + android:propertyName="scaleX" + android:valueFrom="1.2" + android:valueTo="1"/> + <objectAnimator + android:duration="120" + android:interpolator="@anim/hd_scale_interpolator2" + android:propertyName="scaleY" + android:valueFrom="1.2" + android:valueTo="1"/> + </set> + </set> + </aapt:attr> + </target> + + <target android:name="root"> + <aapt:attr name="android:animation"> + <objectAnimator + android:duration="150" + android:interpolator="@android:interpolator/fast_out_slow_in" + android:propertyName="alpha" + android:startOffset="45" + android:valueFrom="0.5" + android:valueTo="1"/> + </aapt:attr> + </target> + </animated-vector> + </transition> + +</animated-selector>
\ No newline at end of file diff --git a/java/com/android/incallui/contactgrid/res/drawable/avd_hd_attempting.xml b/java/com/android/incallui/contactgrid/res/drawable/avd_hd_attempting.xml new file mode 100644 index 000000000..a0ac21399 --- /dev/null +++ b/java/com/android/incallui/contactgrid/res/drawable/avd_hd_attempting.xml @@ -0,0 +1,95 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + ~ Copyright (C) 2017 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 + --> + +<animated-vector xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:aapt="http://schemas.android.com/aapt" + android:drawable="@drawable/vd_hd_attempting"> + <target android:name="progressBar"> + <aapt:attr name="android:animation"> + <set> + <objectAnimator + android:duration="1333" + android:interpolator="@anim/trim_start_interpolator" + android:propertyName="trimPathStart" + android:repeatCount="-1" + android:valueFrom="0" + android:valueTo="0.75" + android:valueType="floatType"/> + <objectAnimator + android:duration="1333" + android:interpolator="@anim/trim_end_interpolator" + android:propertyName="trimPathEnd" + android:repeatCount="-1" + android:valueFrom="0" + android:valueTo="0.75" + android:valueType="floatType"/> + <objectAnimator + android:duration="1333" + android:interpolator="@android:anim/linear_interpolator" + android:propertyName="trimPathOffset" + android:repeatCount="-1" + android:valueFrom="0" + android:valueTo="0.25" + android:valueType="floatType"/> + </set> + </aapt:attr> + </target> + + <target android:name="progressRoot"> + <aapt:attr name="android:animation"> + <objectAnimator + android:duration="4444" + android:interpolator="@android:anim/linear_interpolator" + android:propertyName="rotation" + android:repeatCount="-1" + android:valueFrom="0" + android:valueTo="720" + android:valueType="floatType"/> + </aapt:attr> + </target> + + <target android:name="hdRoot"> + <aapt:attr name="android:animation"> + <set> + <objectAnimator + android:duration="150" + android:interpolator="@android:interpolator/linear_out_slow_in" + android:propertyName="scaleX" + android:valueFrom="0" + android:valueTo="1"/> + <objectAnimator + android:duration="150" + android:interpolator="@android:interpolator/linear_out_slow_in" + android:propertyName="scaleY" + android:valueFrom="0" + android:valueTo="1"/> + </set> + </aapt:attr> + </target> + + <target android:name="root"> + <aapt:attr name="android:animation"> + <objectAnimator + android:duration="150" + android:interpolator="@android:interpolator/linear" + android:propertyName="alpha" + android:valueFrom="0" + android:valueTo="0.5"/> + </aapt:attr> + </target> + +</animated-vector>
\ No newline at end of file diff --git a/java/com/android/incallui/contactgrid/res/drawable/vd_hd_attempting.xml b/java/com/android/incallui/contactgrid/res/drawable/vd_hd_attempting.xml new file mode 100644 index 000000000..3d9a5e439 --- /dev/null +++ b/java/com/android/incallui/contactgrid/res/drawable/vd_hd_attempting.xml @@ -0,0 +1,56 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + ~ Copyright (C) 2017 The Android Open Source Project + ~ + ~ Licensed under the Apache License, Version 2.0 (the "License"); + ~ you may not use this file except in compliance with the License. + ~ You may obtain a copy of the License at + ~ + ~ http://www.apache.org/licenses/LICENSE-2.0 + ~ + ~ Unless required by applicable law or agreed to in writing, software + ~ distributed under the License is distributed on an "AS IS" BASIS, + ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + ~ See the License for the specific language governing permissions and + ~ limitations under the License + --> + +<vector + xmlns:android="http://schemas.android.com/apk/res/android" + android:height="24dp" + android:name="root" + android:tint="?attr/colorControlNormal" + android:viewportHeight="24" + android:viewportWidth="24" + android:width="24dp"> + + <group + android:name="progressRoot" + android:translateX="12.0" + android:translateY="12.0"> + <path + android:fillColor="#00000000" + android:name="progressBar" + android:pathData="M0, 0 m 0, -11 a 11,11 0 1,1 0,22 a 11,11 0 1,1 0,-22" + android:strokeColor="@android:color/white" + android:strokeLineCap="square" + android:strokeLineJoin="miter" + android:strokeWidth="2" + android:trimPathEnd="0" + android:trimPathOffset="0" + android:trimPathStart="0"/> + </group> + <group + android:name="hdRoot" + android:pivotX="12" + android:pivotY="12"> + <clip-path + android:name="hdMask" + android:pathData="M12, 12 m 0, -9 a 9,9 0 1,1 0,18 a 9,9 0 1,1 0,-18"/> + <path + android:fillColor="@android:color/white" + android:name="hd" + android:pathData="M19,3L5,3c-1.11,0 -2,0.9 -2,2v14c0,1.1 0.89,2 2,2h14c1.1,0 2,-0.9 2,-2L21,5c0,-1.1 -0.9,-2 -2,-2zM11,15L9.5,15v-2h-2v2L6,15L6,9h1.5v2.5h2L9.5,9L11,9v6zM13,9h4c0.55,0 1,0.45 1,1v4c0,0.55 -0.45,1 -1,1h-4L13,9zM14.5,13.5h2v-3h-2v3z"/> + </group> + +</vector> diff --git a/java/com/android/incallui/contactgrid/res/layout/incall_contactgrid_bottom_row.xml b/java/com/android/incallui/contactgrid/res/layout/incall_contactgrid_bottom_row.xml index b6028ed9c..ac378484b 100644 --- a/java/com/android/incallui/contactgrid/res/layout/incall_contactgrid_bottom_row.xml +++ b/java/com/android/incallui/contactgrid/res/layout/incall_contactgrid_bottom_row.xml @@ -1,51 +1,51 @@ <?xml version="1.0" encoding="utf-8"?> <LinearLayout - xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:tools="http://schemas.android.com/tools" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:gravity="center_horizontal" - android:orientation="horizontal" - tools:showIn="@layout/incall_contact_grid"> + xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:tools="http://schemas.android.com/tools" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:animateLayoutChanges="true" + android:gravity="center_horizontal" + android:orientation="horizontal"> <ImageView - android:id="@id/contactgrid_workIcon" - android:src="@drawable/ic_work_profile" - style="@style/BottomRowIcon"/> + android:id="@id/contactgrid_workIcon" + style="@style/BottomRowIcon" + android:src="@drawable/quantum_ic_enterprise_vd_theme_24"/> <ImageView - android:id="@id/contactgrid_hdIcon" - android:src="@drawable/quantum_ic_hd_white_24" - style="@style/BottomRowIcon" - android:visibility="gone"/> + android:id="@+id/contactgrid_hdIcon" + style="@style/BottomRowIcon" + android:src="@drawable/asd_hd_icon" + android:visibility="gone"/> <ImageView - android:id="@id/contactgrid_forwardIcon" - android:src="@drawable/quantum_ic_forward_white_24" - style="@style/BottomRowIcon"/> + android:id="@id/contactgrid_forwardIcon" + style="@style/BottomRowIcon" + android:src="@drawable/quantum_ic_forward_vd_theme_24"/> <ImageView - android:id="@+id/contactgrid_spamIcon" - android:src="@drawable/quantum_ic_report_white_18" - style="@style/BottomRowIcon"/> + android:id="@+id/contactgrid_spamIcon" + style="@style/BottomRowIcon" + android:src="@drawable/quantum_ic_report_vd_theme_24"/> <ViewAnimator - android:id="@+id/contactgrid_bottom_text_switcher" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_marginBottom="2dp" - android:measureAllChildren="false"> - <TextView - android:id="@+id/contactgrid_bottom_text" + android:id="@+id/contactgrid_bottom_text_switcher" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:layout_gravity="center_horizontal" - android:singleLine="true" - android:textAppearance="@style/Dialer.Incall.TextAppearance" - tools:gravity="start" - tools:text="Mobile +1 (650) 253-0000"/> + android:layout_marginBottom="2dp" + android:measureAllChildren="false"> + <TextView + android:id="@+id/contactgrid_bottom_text" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_gravity="center_horizontal" + android:singleLine="true" + android:textAppearance="@style/Dialer.Incall.TextAppearance" + tools:gravity="start" + tools:text="Mobile +1 (650) 253-0000"/> <Chronometer - android:id="@+id/contactgrid_bottom_timer" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_gravity="center_horizontal" - android:singleLine="true" - android:textAppearance="@style/Dialer.Incall.TextAppearance" - tools:gravity="center"/> + android:id="@+id/contactgrid_bottom_timer" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_gravity="center_horizontal" + android:singleLine="true" + android:textAppearance="@style/Dialer.Incall.TextAppearance" + tools:gravity="center"/> </ViewAnimator> </LinearLayout> |