diff options
16 files changed, 268 insertions, 132 deletions
diff --git a/packages/SystemUI/res/drawable/recents_tv_background_gradient.xml b/packages/SystemUI/res/drawable/recents_tv_background_gradient.xml index e98d43f595ae..1e52a91b8944 100644 --- a/packages/SystemUI/res/drawable/recents_tv_background_gradient.xml +++ b/packages/SystemUI/res/drawable/recents_tv_background_gradient.xml @@ -16,7 +16,7 @@ <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle"> <gradient - android:startColor="#99000000" - android:endColor="#E6000000" + android:startColor="#4C000000" + android:endColor="#72000000" android:angle="90"/> </shape>
\ No newline at end of file diff --git a/packages/SystemUI/res/layout/recents_on_tv.xml b/packages/SystemUI/res/layout-television/recents_on_tv.xml index 28ea66d8345d..280fd204bda6 100644 --- a/packages/SystemUI/res/layout/recents_on_tv.xml +++ b/packages/SystemUI/res/layout-television/recents_on_tv.xml @@ -19,7 +19,8 @@ android:layout_width="match_parent" android:layout_height="match_parent" android:clipChildren="false" - android:clipToPadding="false"> + android:clipToPadding="false" + android:background="@drawable/recents_tv_background_gradient"> <com.android.systemui.recents.tv.views.TaskStackHorizontalGridView android:id="@+id/task_list" android:layout_width="wrap_content" diff --git a/packages/SystemUI/res/layout-television/recents_tv_card_dismiss.xml b/packages/SystemUI/res/layout-television/recents_tv_card_dismiss.xml new file mode 100644 index 000000000000..186a0589e6d0 --- /dev/null +++ b/packages/SystemUI/res/layout-television/recents_tv_card_dismiss.xml @@ -0,0 +1,43 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- 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. +--> +<LinearLayout + xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:tools="http://schemas.android.com/tools" + android:id="@+id/card_dismiss" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="vertical" + android:layout_gravity="center_horizontal" + android:alpha="0.0" + tools:showIn="@layout/recents_tv_task_card_view"> + <ImageView + android:id="@+id/card_dismiss_icon" + android:layout_width="@dimen/recents_tv_dismiss_icon_size" + android:layout_height="@dimen/recents_tv_dismiss_icon_size" + android:layout_gravity="center_horizontal" + android:layout_marginTop="@dimen/recents_tv_dismiss_icon_top_margin" + android:layout_marginBottom="@dimen/recents_tv_dismiss_icon_bottom_margin" + android:src="@drawable/ic_cancel_white_24dp"/> + <TextView + android:id="@+id/card_dismiss_text" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:textSize="@dimen/recents_tv_dismiss_text_size" + android:fontFamily="@string/font_roboto_light" + android:textColor="@color/recents_tv_dismiss_text_color" + android:text="@string/recents_tv_dismiss" + android:layout_gravity="center_horizontal"/> +</LinearLayout>
\ No newline at end of file diff --git a/packages/SystemUI/res/layout-television/recents_tv_card_info_field.xml b/packages/SystemUI/res/layout-television/recents_tv_card_info_field.xml new file mode 100644 index 000000000000..20397c353d03 --- /dev/null +++ b/packages/SystemUI/res/layout-television/recents_tv_card_info_field.xml @@ -0,0 +1,47 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- 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. +--> +<LinearLayout + xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:tools="http://schemas.android.com/tools" + android:id="@+id/card_info_field" + android:layout_width="match_parent" + android:layout_height="wrap_content" + tools:showIn="@layout/recents_tv_task_card_view_fallback_banner"> + <ImageView + android:id="@+id/card_extra_badge" + android:layout_width="@dimen/recents_tv_card_extra_badge_size" + android:layout_height="@dimen/recents_tv_card_extra_badge_size" + android:layout_marginBottom="@dimen/recents_tv_icon_padding_bottom" + android:scaleType="fitCenter" + android:layout_centerVertical="true" + android:layout_alignParentEnd="true"/> + <TextView + android:id="@+id/card_title_text" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:includeFontPadding="true" + android:singleLine="true" + android:shadowColor="@color/recents_tv_text_shadow_color" + android:shadowRadius="5" + android:shadowDx="0" + android:shadowDy="0" + android:textColor="@color/recents_tv_card_title_text_color" + android:fontFamily="@string/font_roboto_regular" + android:textSize="@dimen/recents_tv_title_text_size" + android:paddingStart="@dimen/recents_tv_text_padding_start" + android:layout_marginBottom="@dimen/recents_tv_text_padding_bottom" + android:ellipsize="end"/> +</LinearLayout>
\ No newline at end of file diff --git a/packages/SystemUI/res/layout-television/recents_tv_task_card_view.xml b/packages/SystemUI/res/layout-television/recents_tv_task_card_view.xml new file mode 100644 index 000000000000..9b89aa0a90f1 --- /dev/null +++ b/packages/SystemUI/res/layout-television/recents_tv_task_card_view.xml @@ -0,0 +1,46 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- 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. +--> +<com.android.systemui.recents.tv.views.TaskCardView + xmlns:android="http://schemas.android.com/apk/res/android" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:focusable="true" + android:focusableInTouchMode="true" + android:layout_gravity="center" + android:layout_centerInParent="true" + android:clipToPadding="false" + android:orientation="vertical" > + <include layout="@layout/recents_tv_card_info_field"/> + <LinearLayout + android:id="@+id/card_view_thumbnail" + android:layout_width="@dimen/recents_tv_card_width" + android:layout_height="@dimen/recents_tv_screenshot_height" + android:gravity="center" + android:orientation="vertical" + android:background="@color/recents_tv_card_background_color" + android:layout_centerHorizontal="true" > + + <ImageView + android:id="@+id/card_view_banner_icon" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:layout_centerHorizontal="true" + android:scaleType="centerCrop" + android:gravity="center" /> + + </LinearLayout> + <include layout="@layout/recents_tv_card_dismiss"/> +</com.android.systemui.recents.tv.views.TaskCardView>
\ No newline at end of file diff --git a/packages/SystemUI/res/layout/recents_tv_task_card_view.xml b/packages/SystemUI/res/layout/recents_tv_task_card_view.xml deleted file mode 100644 index 766ef602293a..000000000000 --- a/packages/SystemUI/res/layout/recents_tv_task_card_view.xml +++ /dev/null @@ -1,97 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- 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. ---> -<com.android.systemui.recents.tv.views.TaskCardView - xmlns:android="http://schemas.android.com/apk/res/android" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:focusable="true" - android:focusableInTouchMode="true" - android:layout_gravity="center" - android:layout_centerInParent="true" - android:orientation="vertical" - android:layoutDirection="ltr"> - - <LinearLayout - android:id="@+id/recents_tv_card" - android:layout_width="@dimen/recents_tv_card_width" - android:layout_height="wrap_content" - android:layout_centerInParent="true" - android:layout_gravity="center" - android:orientation="vertical" > - <LinearLayout - android:id="@+id/card_info_field" - android:layout_width="match_parent" - android:layout_height="wrap_content"> - <ImageView - android:id="@+id/card_extra_badge" - android:layout_width="@dimen/recents_tv_card_extra_badge_size" - android:layout_height="@dimen/recents_tv_card_extra_badge_size" - android:layout_marginBottom="@dimen/recents_tv_icon_padding_bottom" - android:layout_marginEnd="@dimen/recents_tv_icon_padding_end" - android:scaleType="fitCenter" - android:layout_centerVertical="true" - android:layout_alignParentRight="true" /> - <TextView - android:id="@+id/card_title_text" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:layout_alignParentTop="false" - android:includeFontPadding="true" - android:minLines="1" - android:maxLines="1" - android:textColor="@color/recents_tv_card_title_text_color" - android:fontFamily="@string/font_roboto_regular" - android:textSize="@dimen/recents_tv_title_text_size" - android:layout_marginBottom="@dimen/recents_tv_text_padding_bottom" - android:ellipsize="end"/> - </LinearLayout> - <ImageView - android:id="@+id/card_view_thumbnail" - android:layout_width="match_parent" - android:layout_height="@dimen/recents_tv_screenshot_height" - android:scaleType="centerCrop" - android:gravity="center" - android:layout_alignParentTop="true" - android:layout_centerHorizontal="true" - android:layout_below="@id/card_title_text" /> - </LinearLayout> - <LinearLayout - android:id="@+id/card_dismiss" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:orientation="vertical" - android:layout_gravity="center_horizontal" - android:layout_below="@id/recents_tv_card" - android:alpha="0.0"> - <ImageView - android:id="@+id/card_dismiss_icon" - android:layout_width="@dimen/recents_tv_dismiss_icon_size" - android:layout_height="@dimen/recents_tv_dismiss_icon_size" - android:layout_gravity="center_horizontal" - android:layout_marginTop="@dimen/recents_tv_dismiss_icon_top_margin" - android:layout_marginBottom="@dimen/recents_tv_dismiss_icon_bottom_margin" - android:src="@drawable/ic_cancel_white_24dp" /> - <TextView - android:id="@+id/card_dismiss_text" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:textSize="@dimen/recents_tv_dismiss_text_size" - android:fontFamily="@string/font_roboto_light" - android:textColor="@color/recents_tv_dismiss_text_color" - android:text="@string/recents_tv_dismiss" - android:layout_gravity="center_horizontal" /> - </LinearLayout> -</com.android.systemui.recents.tv.views.TaskCardView>
\ No newline at end of file diff --git a/packages/SystemUI/res/values/colors_tv.xml b/packages/SystemUI/res/values/colors_tv.xml index 4126d3cdad68..3817da017426 100644 --- a/packages/SystemUI/res/values/colors_tv.xml +++ b/packages/SystemUI/res/values/colors_tv.xml @@ -17,7 +17,8 @@ */ --> <resources> - <color name="recents_tv_card_background_color">#FF37474F</color> + <color name="recents_tv_card_background_color">#FF263238</color> <color name="recents_tv_card_title_text_color">#CCEEEEEE</color> <color name="recents_tv_dismiss_text_color">#7FEEEEEE</color> + <color name="recents_tv_text_shadow_color">#7F000000</color> </resources>
\ No newline at end of file diff --git a/packages/SystemUI/res/values/dimens_tv.xml b/packages/SystemUI/res/values/dimens_tv.xml index f536f86a40a0..16d27f220775 100644 --- a/packages/SystemUI/res/values/dimens_tv.xml +++ b/packages/SystemUI/res/values/dimens_tv.xml @@ -21,11 +21,13 @@ <dimen name="recents_tv_card_width">240dip</dimen> <dimen name="recents_tv_screenshot_height">135dip</dimen> <dimen name="recents_tv_card_extra_badge_size">20dip</dimen> - <dimen name="recents_tv_banner_width">114dip</dimen> - <dimen name="recents_tv_banner_height">64dip</dimen> + <dimen name="recents_tv_banner_width">130dip</dimen> + <dimen name="recents_tv_banner_height">72dip</dimen> + <dimen name="recents_tv_fallback_icon_width">40dip</dimen> + <dimen name="recents_tv_fallback_icon_height">40dip</dimen> <dimen name="recents_tv_banner_margin_top">16dip</dimen> <dimen name="recents_tv_icon_padding_bottom">8dip</dimen> - <dimen name="recents_tv_icon_padding_end">12dip</dimen> + <dimen name="recents_tv_text_padding_start">12dip</dimen> <dimen name="recents_tv_text_padding_bottom">12dip</dimen> <!-- Padding for grid view in recents view on tv --> diff --git a/packages/SystemUI/src/com/android/systemui/recents/tv/animations/DismissAnimationsHolder.java b/packages/SystemUI/src/com/android/systemui/recents/tv/animations/DismissAnimationsHolder.java index 3e668afbb47e..ae8d800cea3b 100644 --- a/packages/SystemUI/src/com/android/systemui/recents/tv/animations/DismissAnimationsHolder.java +++ b/packages/SystemUI/src/com/android/systemui/recents/tv/animations/DismissAnimationsHolder.java @@ -18,6 +18,7 @@ package com.android.systemui.recents.tv.animations; import android.animation.Animator; import android.content.res.Resources; +import android.view.View; import android.widget.LinearLayout; import com.android.systemui.Interpolators; import com.android.systemui.recents.tv.views.TaskCardView; @@ -26,15 +27,16 @@ import com.android.systemui.R; public class DismissAnimationsHolder { private LinearLayout mDismissArea; - private LinearLayout mRecentsTvCard; + private LinearLayout mInfoField; + private View mThumbnailView; private int mCardYDelta; private long mShortDuration; private long mLongDuration; public DismissAnimationsHolder(TaskCardView taskCardView) { - mRecentsTvCard = (LinearLayout) taskCardView.findViewById(R.id.recents_tv_card); + mInfoField = (LinearLayout) taskCardView.findViewById(R.id.card_info_field); mDismissArea = (LinearLayout) taskCardView.findViewById(R.id.card_dismiss); - + mThumbnailView = taskCardView.findViewById(R.id.card_view_thumbnail); Resources res = taskCardView.getResources(); mCardYDelta = res.getDimensionPixelOffset(R.dimen.recents_tv_dismiss_shift_down); mShortDuration = res.getInteger(R.integer.dismiss_short_duration); @@ -47,7 +49,13 @@ public class DismissAnimationsHolder { .setInterpolator(Interpolators.FAST_OUT_SLOW_IN) .alpha(1.0f); - mRecentsTvCard.animate() + mInfoField.animate() + .setDuration(mShortDuration) + .setInterpolator(Interpolators.FAST_OUT_SLOW_IN) + .translationYBy(mCardYDelta) + .alpha(0.5f); + + mThumbnailView.animate() .setDuration(mShortDuration) .setInterpolator(Interpolators.FAST_OUT_SLOW_IN) .translationYBy(mCardYDelta) @@ -60,7 +68,13 @@ public class DismissAnimationsHolder { .setInterpolator(Interpolators.FAST_OUT_SLOW_IN) .alpha(0.0f); - mRecentsTvCard.animate() + mInfoField.animate() + .setDuration(mShortDuration) + .setInterpolator(Interpolators.FAST_OUT_SLOW_IN) + .translationYBy(-mCardYDelta) + .alpha(1.0f); + + mThumbnailView.animate() .setDuration(mShortDuration) .setInterpolator(Interpolators.FAST_OUT_SLOW_IN) .translationYBy(-mCardYDelta) @@ -73,17 +87,25 @@ public class DismissAnimationsHolder { .setInterpolator(Interpolators.FAST_OUT_SLOW_IN) .alpha(0.0f); - mRecentsTvCard.animate() + mInfoField.animate() .setDuration(mLongDuration) .setInterpolator(Interpolators.FAST_OUT_SLOW_IN) .translationYBy(mCardYDelta) .alpha(0.0f) .setListener(listener); + + mThumbnailView.animate() + .setDuration(mLongDuration) + .setInterpolator(Interpolators.FAST_OUT_SLOW_IN) + .translationYBy(mCardYDelta) + .alpha(0.0f); } public void reset() { - mRecentsTvCard.setAlpha(1.0f); - mRecentsTvCard.setTranslationY(0); - mRecentsTvCard.animate().setListener(null); + mInfoField.setAlpha(1.0f); + mInfoField.setTranslationY(0); + mInfoField.animate().setListener(null); + mThumbnailView.setAlpha(1.0f); + mThumbnailView.setTranslationY(0); } } diff --git a/packages/SystemUI/src/com/android/systemui/recents/tv/animations/HomeRecentsEnterExitAnimationHolder.java b/packages/SystemUI/src/com/android/systemui/recents/tv/animations/HomeRecentsEnterExitAnimationHolder.java index 278de870e5a5..497a0a3d3ab8 100644 --- a/packages/SystemUI/src/com/android/systemui/recents/tv/animations/HomeRecentsEnterExitAnimationHolder.java +++ b/packages/SystemUI/src/com/android/systemui/recents/tv/animations/HomeRecentsEnterExitAnimationHolder.java @@ -46,7 +46,6 @@ public class HomeRecentsEnterExitAnimationHolder { for(int i = 0; i < mGridView.getChildCount(); i++) { TaskCardView view = (TaskCardView) mGridView.getChildAt(i); view.setTranslationX(-mTranslationX); - view.setAlpha(0.0f); view.animate() .alpha(1.0f) .translationX(0) @@ -76,7 +75,7 @@ public class HomeRecentsEnterExitAnimationHolder { public void setEnterFromHomeStartingAnimationValues() { for(int i = 0; i < mGridView.getChildCount(); i++) { TaskCardView view = (TaskCardView) mGridView.getChildAt(i); - view.setTranslationX(-mTranslationX); + view.setTranslationX(0); view.setAlpha(0.0f); } } diff --git a/packages/SystemUI/src/com/android/systemui/recents/tv/animations/ViewFocusAnimator.java b/packages/SystemUI/src/com/android/systemui/recents/tv/animations/ViewFocusAnimator.java index 888561c2172b..9edd5af487cc 100644 --- a/packages/SystemUI/src/com/android/systemui/recents/tv/animations/ViewFocusAnimator.java +++ b/packages/SystemUI/src/com/android/systemui/recents/tv/animations/ViewFocusAnimator.java @@ -26,6 +26,7 @@ import android.view.animation.AccelerateDecelerateInterpolator; import android.view.animation.Interpolator; import com.android.systemui.R; +import com.android.systemui.recents.tv.views.TaskCardView; public class ViewFocusAnimator implements View.OnFocusChangeListener { private final float mUnselectedScale; @@ -94,10 +95,13 @@ public class ViewFocusAnimator implements View.OnFocusChangeListener { mTargetView.setScaleX(scale); mTargetView.setScaleY(scale); - mTargetView.setZ(z); mTargetView.setPadding((int) spacing, mTargetView.getPaddingTop(), (int) spacing, mTargetView.getPaddingBottom()); + + if (mTargetView instanceof TaskCardView) { + ((TaskCardView) mTargetView).getThumbnailView().setZ(z); + } } public float getFocusProgress() { diff --git a/packages/SystemUI/src/com/android/systemui/recents/tv/views/RecentsTvTransitionHelper.java b/packages/SystemUI/src/com/android/systemui/recents/tv/views/RecentsTvTransitionHelper.java index fb1127ed1859..5b94ebe4e239 100644 --- a/packages/SystemUI/src/com/android/systemui/recents/tv/views/RecentsTvTransitionHelper.java +++ b/packages/SystemUI/src/com/android/systemui/recents/tv/views/RecentsTvTransitionHelper.java @@ -16,7 +16,6 @@ package com.android.systemui.recents.tv.views; import android.annotation.Nullable; -import android.app.Activity; import android.app.ActivityOptions; import android.content.Context; import android.graphics.Bitmap; diff --git a/packages/SystemUI/src/com/android/systemui/recents/tv/views/RecentsTvView.java b/packages/SystemUI/src/com/android/systemui/recents/tv/views/RecentsTvView.java index b876fc701372..594f6bc14dd8 100644 --- a/packages/SystemUI/src/com/android/systemui/recents/tv/views/RecentsTvView.java +++ b/packages/SystemUI/src/com/android/systemui/recents/tv/views/RecentsTvView.java @@ -18,7 +18,6 @@ package com.android.systemui.recents.tv.views; import android.content.Context; import android.graphics.Rect; import android.os.Handler; -import android.support.v7.widget.DefaultItemAnimator; import android.support.v7.widget.RecyclerView; import android.util.AttributeSet; import android.util.Log; @@ -35,7 +34,6 @@ import com.android.systemui.recents.RecentsConfiguration; import com.android.systemui.recents.events.EventBus; import com.android.systemui.recents.events.activity.CancelEnterRecentsWindowAnimationEvent; import com.android.systemui.recents.events.activity.DismissRecentsToHomeAnimationStarted; -import com.android.systemui.recents.events.activity.ExitRecentsWindowFirstAnimationFrameEvent; import com.android.systemui.recents.events.activity.LaunchTvTaskEvent; import com.android.systemui.recents.events.component.RecentsVisibilityChangedEvent; import com.android.systemui.recents.misc.SystemServicesProxy; diff --git a/packages/SystemUI/src/com/android/systemui/recents/tv/views/TaskCardView.java b/packages/SystemUI/src/com/android/systemui/recents/tv/views/TaskCardView.java index d3bc4b6ea888..a72a7e611ae7 100644 --- a/packages/SystemUI/src/com/android/systemui/recents/tv/views/TaskCardView.java +++ b/packages/SystemUI/src/com/android/systemui/recents/tv/views/TaskCardView.java @@ -17,10 +17,15 @@ package com.android.systemui.recents.tv.views; import android.animation.Animator; import android.content.Context; +import android.content.pm.PackageManager; +import android.content.res.Configuration; import android.content.res.Resources; +import android.graphics.Bitmap; import android.graphics.Point; import android.graphics.Rect; +import android.graphics.drawable.Drawable; import android.util.AttributeSet; +import android.util.Log; import android.util.TypedValue; import android.view.Display; import android.view.KeyEvent; @@ -38,7 +43,8 @@ import com.android.systemui.recents.model.Task; public class TaskCardView extends LinearLayout { - private ImageView mThumbnailView; + private static final String TAG = "TaskCardView"; + private View mThumbnailView; private TextView mTitleTextView; private ImageView mBadgeView; private Task mTask; @@ -58,26 +64,28 @@ public class TaskCardView extends LinearLayout { public TaskCardView(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); - mViewFocusAnimator = new ViewFocusAnimator(this); mDismissState = false; + Configuration config = getResources().getConfiguration(); + setLayoutDirection(config.getLayoutDirection()); } @Override protected void onFinishInflate() { super.onFinishInflate(); - mThumbnailView = (ImageView) findViewById(R.id.card_view_thumbnail); + mThumbnailView = findViewById(R.id.card_view_thumbnail); mTitleTextView = (TextView) findViewById(R.id.card_title_text); mBadgeView = (ImageView) findViewById(R.id.card_extra_badge); mDismissAnimationsHolder = new DismissAnimationsHolder(this); View title = findViewById(R.id.card_info_field); mRecentsRowFocusAnimationHolder = new RecentsRowFocusAnimationHolder(this, title); + mViewFocusAnimator = new ViewFocusAnimator(this); } public void init(Task task) { mTask = task; - mThumbnailView.setImageBitmap(task.thumbnail); mTitleTextView.setText(task.title); mBadgeView.setImageDrawable(task.icon); + setThumbnailView(); } public Task getTask() { @@ -238,4 +246,64 @@ public class TaskCardView extends LinearLayout { mRecentsRowFocusAnimationHolder.reset(); mDismissAnimationsHolder.reset(); } + + private void setThumbnailView() { + ImageView screenshotView = (ImageView) findViewById(R.id.card_view_banner_icon); + PackageManager pm = getContext().getPackageManager(); + if (mTask.thumbnail != null) { + setAsScreenShotView(mTask.thumbnail, screenshotView); + } else { + try { + Drawable banner = null; + if (mTask.key != null) { + banner = pm.getActivityBanner(mTask.key.baseIntent); + } + if (banner != null) { + setAsBannerView(banner, screenshotView); + } else { + setAsIconView(mTask.icon, screenshotView); + } + } catch (PackageManager.NameNotFoundException e) { + Log.e(TAG, "Package not found : " + e); + setAsIconView(mTask.icon, screenshotView); + } + } + } + + private void setAsScreenShotView(Bitmap screenshot, ImageView screenshotView) { + LayoutParams lp = (LayoutParams) screenshotView.getLayoutParams(); + lp.width = getResources() + .getDimensionPixelSize(R.dimen.recents_tv_card_width); + lp.height = getResources() + .getDimensionPixelSize(R.dimen.recents_tv_screenshot_height); + + screenshotView.setLayoutParams(lp); + screenshotView.setImageBitmap(screenshot); + } + + private void setAsBannerView(Drawable banner, ImageView bannerView) { + LayoutParams lp = (LayoutParams) bannerView.getLayoutParams(); + lp.width = getResources() + .getDimensionPixelSize(R.dimen.recents_tv_banner_width); + lp.height = getResources() + .getDimensionPixelSize(R.dimen.recents_tv_banner_height); + + bannerView.setLayoutParams(lp); + bannerView.setImageDrawable(banner); + } + + private void setAsIconView(Drawable icon, ImageView iconView) { + LayoutParams lp = (LayoutParams) iconView.getLayoutParams(); + lp.width = getResources() + .getDimensionPixelSize(R.dimen.recents_tv_fallback_icon_width); + lp.height = getResources() + .getDimensionPixelSize(R.dimen.recents_tv_fallback_icon_height); + + iconView.setLayoutParams(lp); + iconView.setImageDrawable(icon); + } + + public View getThumbnailView() { + return mThumbnailView; + } } diff --git a/packages/SystemUI/src/com/android/systemui/recents/tv/views/TaskStackHorizontalGridView.java b/packages/SystemUI/src/com/android/systemui/recents/tv/views/TaskStackHorizontalGridView.java index 77ab8c1c1f8c..9f52abdad287 100644 --- a/packages/SystemUI/src/com/android/systemui/recents/tv/views/TaskStackHorizontalGridView.java +++ b/packages/SystemUI/src/com/android/systemui/recents/tv/views/TaskStackHorizontalGridView.java @@ -33,9 +33,6 @@ import com.android.systemui.recents.model.TaskStack; import com.android.systemui.recents.model.TaskStack.TaskStackCallbacks; import com.android.systemui.recents.views.AnimationProps; -import java.util.ArrayList; -import java.util.List; - /** * Horizontal Grid View Implementation to show the Task Stack for TV. */ diff --git a/packages/SystemUI/src/com/android/systemui/recents/tv/views/TaskStackHorizontalViewAdapter.java b/packages/SystemUI/src/com/android/systemui/recents/tv/views/TaskStackHorizontalViewAdapter.java index eff184507740..eb3b02d155eb 100644 --- a/packages/SystemUI/src/com/android/systemui/recents/tv/views/TaskStackHorizontalViewAdapter.java +++ b/packages/SystemUI/src/com/android/systemui/recents/tv/views/TaskStackHorizontalViewAdapter.java @@ -27,7 +27,6 @@ import com.android.systemui.R; import com.android.systemui.recents.events.EventBus; import com.android.systemui.recents.events.activity.LaunchTvTaskEvent; import com.android.systemui.recents.events.ui.DeleteTaskDataEvent; -import com.android.systemui.recents.events.ui.TaskViewDismissedEvent; import com.android.systemui.recents.model.Task; import com.android.systemui.recents.views.AnimationProps; @@ -47,6 +46,7 @@ public class TaskStackHorizontalViewAdapter extends public class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener{ private TaskCardView mTaskCardView; private Task mTask; + private boolean mShouldReset; public ViewHolder(View v) { super(v); if(v instanceof TaskCardView) { @@ -69,7 +69,6 @@ public class TaskStackHorizontalViewAdapter extends } else { EventBus.getDefault().send(new LaunchTvTaskEvent(mTaskCardView, mTask, null, INVALID_STACK_ID)); - ((Activity) (v.getContext())).finish(); } } catch (Exception e) { Log.e(TAG, v.getContext() @@ -89,6 +88,7 @@ public class TaskStackHorizontalViewAdapter extends public void onAnimationEnd(Animator animation) { removeAt(position); EventBus.getDefault().send(new DeleteTaskDataEvent(task)); + mShouldReset = true; } @Override @@ -114,9 +114,9 @@ public class TaskStackHorizontalViewAdapter extends @Override public TaskStackHorizontalViewAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { - View view = LayoutInflater.from(parent.getContext()) - .inflate(R.layout.recents_tv_task_card_view, parent, false); - ViewHolder viewHolder = new ViewHolder(view); + LayoutInflater inflater = LayoutInflater.from(parent.getContext()); + ViewHolder viewHolder = new ViewHolder( + inflater.inflate(R.layout.recents_tv_task_card_view, parent, false)); return viewHolder; } @@ -127,7 +127,12 @@ public class TaskStackHorizontalViewAdapter extends @Override public void onViewDetachedFromWindow(ViewHolder holder) { - holder.mTaskCardView.reset(); + // We only want to reset on view detach if this is the last task being dismissed. + // This is so that we do not reset when shifting to apps etc, as it is not needed. + if (holder.mShouldReset) { + holder.mTaskCardView.reset(); + holder.mShouldReset = false; + } } @Override @@ -157,6 +162,7 @@ public class TaskStackHorizontalViewAdapter extends return (position >= 0) ? position : 0; } + public void setTaskStackHorizontalGridView(TaskStackHorizontalGridView gridView) { mGridView = gridView; } |