From df5bf6147ca8105f4617a815d4c7b92f818de3e8 Mon Sep 17 00:00:00 2001 From: Selim Cinek Date: Fri, 26 Feb 2016 09:56:31 -0800 Subject: [PATCH] Decorated media notifications now also animate their actions Bug: 24866646 Change-Id: I271be0d55270043dfc41c621911d802b37d4690f --- .../systemui/statusbar/TransformableView.java | 1 + .../NotificationMediaTemplateViewWrapper.java | 57 ++++++++++++++++++++++ .../notification/NotificationViewWrapper.java | 2 + 3 files changed, 60 insertions(+) create mode 100644 packages/SystemUI/src/com/android/systemui/statusbar/notification/NotificationMediaTemplateViewWrapper.java diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/TransformableView.java b/packages/SystemUI/src/com/android/systemui/statusbar/TransformableView.java index 009eed79c48a..dd7c4c7a6a03 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/TransformableView.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/TransformableView.java @@ -27,6 +27,7 @@ public interface TransformableView { int TRANSFORMING_VIEW_TEXT = 2; int TRANSFORMING_VIEW_IMAGE = 3; int TRANSFORMING_VIEW_PROGRESS = 4; + int TRANSFORMING_VIEW_ACTIONS = 5; /** * Get the current state of a view in a transform animation diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/NotificationMediaTemplateViewWrapper.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/NotificationMediaTemplateViewWrapper.java new file mode 100644 index 000000000000..30698e109178 --- /dev/null +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/NotificationMediaTemplateViewWrapper.java @@ -0,0 +1,57 @@ +/* + * Copyright (C) 2016 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License + */ + +package com.android.systemui.statusbar.notification; + +import android.content.Context; +import android.service.notification.StatusBarNotification; +import android.view.View; + +import com.android.systemui.statusbar.TransformableView; + +/** + * Wraps a notification containing a media template + */ +public class NotificationMediaTemplateViewWrapper extends NotificationTemplateViewWrapper { + + protected NotificationMediaTemplateViewWrapper(Context ctx, View view) { + super(ctx, view); + } + + View mActions; + + private void resolveViews(StatusBarNotification notification) { + mActions = mView.findViewById(com.android.internal.R.id.media_actions); + } + + @Override + public void notifyContentUpdated(StatusBarNotification notification) { + // Reinspect the notification. Before the super call, because the super call also updates + // the transformation types and we need to have our values set by then. + resolveViews(notification); + super.notifyContentUpdated(notification); + } + + @Override + protected void updateTransformedTypes() { + // This also clears the existing types + super.updateTransformedTypes(); + if (mActions != null) { + mTransformationHelper.addTransformedView(TransformableView.TRANSFORMING_VIEW_TEXT, + mActions); + } + } +} diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/NotificationViewWrapper.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/NotificationViewWrapper.java index c5e44a2b95c4..0df0d26aea10 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/NotificationViewWrapper.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/NotificationViewWrapper.java @@ -40,6 +40,8 @@ public abstract class NotificationViewWrapper implements TransformableView { return new NotificationBigPictureTemplateViewWrapper(ctx, v); } else if ("bigText".equals(v.getTag())) { return new NotificationBigTextTemplateViewWrapper(ctx, v); + } else if ("media".equals(v.getTag()) || "bigMediaNarrow".equals(v.getTag())) { + return new NotificationMediaTemplateViewWrapper(ctx, v); } return new NotificationTemplateViewWrapper(ctx, v); } else if (v instanceof NotificationHeaderView) { -- 2.11.0