Merge "Add a dimmed dismiss icon below task card view" into nyc-dev

This commit is contained in:
Sid Soundararajan
2016-04-15 20:19:50 +00:00
committed by Android (Google) Code Review
10 changed files with 102 additions and 58 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 557 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 377 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 755 B

View File

@ -0,0 +1,19 @@
<?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.
-->
<transition xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/ic_dismiss_outline" />
<item android:drawable="@drawable/ic_cancel_white_24dp" />
</transition>

View File

@ -1,43 +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.
-->
<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>

View File

@ -42,5 +42,23 @@
android:gravity="center" />
</LinearLayout>
<include layout="@layout/recents_tv_card_dismiss"/>
<ImageView
android:id="@+id/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:alpha="@integer/dismiss_unselected_alpha"
android:src="@drawable/recents_tv_dismiss_icon" />
<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:alpha="0.0"
android:layout_gravity="center_horizontal" />
</com.android.systemui.recents.tv.views.TaskCardView>

View File

@ -46,7 +46,7 @@
<!-- Values for card dismiss state -->
<dimen name="recents_tv_dismiss_shift_down">48dip</dimen>
<dimen name="recents_tv_dismiss_top_margin">356dip</dimen>
<dimen name="recents_tv_dismiss_icon_size">24dip</dimen>
<dimen name="recents_tv_dismiss_icon_size">19dip</dimen>
<dimen name="recents_tv_dismiss_icon_top_margin">38dip</dimen>
<dimen name="recents_tv_dismiss_icon_bottom_margin">1dip</dimen>
<dimen name="recents_tv_dismiss_text_size">12sp</dimen>

View File

@ -16,4 +16,5 @@ limitations under the License.
<resources xmlns:android="http://schemas.android.com/apk/res/android">
<item format="float" type="integer" name="unselected_scale">1.0</item>
<item format="float" type="integer" name="selected_scale">1.259</item>
<item format="float" type="integer" name="dismiss_unselected_alpha">0.1</item>
</resources>

View File

@ -15,38 +15,64 @@
*/
package com.android.systemui.recents.tv.animations;
import android.animation.Animator;
import android.animation.Animator.AnimatorListener;
import android.content.res.Resources;
import android.graphics.drawable.TransitionDrawable;
import android.util.TypedValue;
import android.view.View;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
import com.android.systemui.Interpolators;
import com.android.systemui.recents.tv.views.TaskCardView;
import com.android.systemui.R;
public class DismissAnimationsHolder {
private LinearLayout mDismissArea;
private LinearLayout mInfoField;
private View mThumbnailView;
private int mDismissEnterYDelta;
private int mDismissStartYDelta;
private ImageView mCardDismissIcon;
private TransitionDrawable mDismissDrawable;
private TextView mDismissText;
private float mDismissUnselectedAlpha;
private long mShortDuration;
private long mLongDuration;
public DismissAnimationsHolder(TaskCardView taskCardView) {
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);
mCardDismissIcon = (ImageView) taskCardView.findViewById(R.id.dismiss_icon);
mDismissDrawable = (TransitionDrawable) mCardDismissIcon.getDrawable();
mDismissDrawable.setCrossFadeEnabled(true);
mDismissText = (TextView) taskCardView.findViewById(R.id.card_dismiss_text);
Resources res = taskCardView.getResources();
mDismissEnterYDelta = res.getDimensionPixelOffset(R.dimen.recents_tv_dismiss_shift_down);
mDismissStartYDelta = mDismissEnterYDelta * 2;
mShortDuration = res.getInteger(R.integer.dismiss_short_duration);
mLongDuration = res.getInteger(R.integer.dismiss_long_duration);
mDismissUnselectedAlpha = res.getFloat(R.integer.dismiss_unselected_alpha);
}
public void startEnterAnimation() {
mDismissArea.animate()
mCardDismissIcon.animate()
.setDuration(mShortDuration)
.setInterpolator(Interpolators.FAST_OUT_SLOW_IN)
.alpha(1.0f)
.withStartAction(new Runnable() {
@Override
public void run() {
mDismissDrawable.startTransition(0);
}
});
mDismissText.animate()
.setDuration(mShortDuration)
.setInterpolator(Interpolators.FAST_OUT_SLOW_IN)
.alpha(1.0f);
@ -65,7 +91,18 @@ public class DismissAnimationsHolder {
}
public void startExitAnimation() {
mDismissArea.animate()
mCardDismissIcon.animate()
.setDuration(mShortDuration)
.setInterpolator(Interpolators.FAST_OUT_SLOW_IN)
.alpha(mDismissUnselectedAlpha)
.withEndAction(new Runnable() {
@Override
public void run() {
mDismissDrawable.reverseTransition(0);
}
});
mDismissText.animate()
.setDuration(mShortDuration)
.setInterpolator(Interpolators.FAST_OUT_SLOW_IN)
.alpha(0.0f);
@ -83,8 +120,19 @@ public class DismissAnimationsHolder {
.alpha(1.0f);
}
public void startDismissAnimation(Animator.AnimatorListener listener) {
mDismissArea.animate()
public void startDismissAnimation(AnimatorListener listener) {
mCardDismissIcon.animate()
.setDuration(mShortDuration)
.setInterpolator(Interpolators.FAST_OUT_SLOW_IN)
.alpha(0.0f)
.withEndAction(new Runnable() {
@Override
public void run() {
mDismissDrawable.reverseTransition(0);
}
});
mDismissText.animate()
.setDuration(mShortDuration)
.setInterpolator(Interpolators.FAST_OUT_SLOW_IN)
.alpha(0.0f);
@ -109,5 +157,7 @@ public class DismissAnimationsHolder {
mInfoField.animate().setListener(null);
mThumbnailView.setAlpha(1.0f);
mThumbnailView.setTranslationY(0);
mCardDismissIcon.setAlpha(mDismissUnselectedAlpha);
mDismissText.setAlpha(0.0f);
}
}

View File

@ -39,12 +39,12 @@ public class ViewFocusAnimator implements View.OnFocusChangeListener {
private final int mAnimDuration;
private final Interpolator mFocusInterpolator;
protected View mTargetView;
protected TaskCardView mTargetView;
private float mFocusProgress;
ObjectAnimator mFocusAnimation;
public ViewFocusAnimator(View view) {
public ViewFocusAnimator(TaskCardView view) {
mTargetView = view;
final Resources res = view.getResources();
@ -99,9 +99,8 @@ public class ViewFocusAnimator implements View.OnFocusChangeListener {
mTargetView.setPadding((int) spacing, mTargetView.getPaddingTop(),
(int) spacing, mTargetView.getPaddingBottom());
if (mTargetView instanceof TaskCardView) {
((TaskCardView) mTargetView).getThumbnailView().setZ(z);
}
mTargetView.getThumbnailView().setZ(z);
}
public float getFocusProgress() {