Merge "Add a dimmed dismiss icon below task card view" into nyc-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
e44ff8fd9f
BIN
packages/SystemUI/res/drawable-hdpi/ic_dismiss_outline.png
Executable file
BIN
packages/SystemUI/res/drawable-hdpi/ic_dismiss_outline.png
Executable file
Binary file not shown.
|
After Width: | Height: | Size: 557 B |
BIN
packages/SystemUI/res/drawable-mdpi/ic_dismiss_outline.png
Executable file
BIN
packages/SystemUI/res/drawable-mdpi/ic_dismiss_outline.png
Executable file
Binary file not shown.
|
After Width: | Height: | Size: 377 B |
BIN
packages/SystemUI/res/drawable-xhdpi/ic_dismiss_outline.png
Executable file
BIN
packages/SystemUI/res/drawable-xhdpi/ic_dismiss_outline.png
Executable file
Binary file not shown.
|
After Width: | Height: | Size: 755 B |
19
packages/SystemUI/res/drawable/recents_tv_dismiss_icon.xml
Normal file
19
packages/SystemUI/res/drawable/recents_tv_dismiss_icon.xml
Normal 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>
|
||||||
@@ -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>
|
|
||||||
@@ -42,5 +42,23 @@
|
|||||||
android:gravity="center" />
|
android:gravity="center" />
|
||||||
|
|
||||||
</LinearLayout>
|
</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>
|
</com.android.systemui.recents.tv.views.TaskCardView>
|
||||||
@@ -46,7 +46,7 @@
|
|||||||
<!-- Values for card dismiss state -->
|
<!-- Values for card dismiss state -->
|
||||||
<dimen name="recents_tv_dismiss_shift_down">48dip</dimen>
|
<dimen name="recents_tv_dismiss_shift_down">48dip</dimen>
|
||||||
<dimen name="recents_tv_dismiss_top_margin">356dip</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_top_margin">38dip</dimen>
|
||||||
<dimen name="recents_tv_dismiss_icon_bottom_margin">1dip</dimen>
|
<dimen name="recents_tv_dismiss_icon_bottom_margin">1dip</dimen>
|
||||||
<dimen name="recents_tv_dismiss_text_size">12sp</dimen>
|
<dimen name="recents_tv_dismiss_text_size">12sp</dimen>
|
||||||
|
|||||||
@@ -16,4 +16,5 @@ limitations under the License.
|
|||||||
<resources xmlns:android="http://schemas.android.com/apk/res/android">
|
<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="unselected_scale">1.0</item>
|
||||||
<item format="float" type="integer" name="selected_scale">1.259</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>
|
</resources>
|
||||||
|
|||||||
@@ -15,38 +15,64 @@
|
|||||||
*/
|
*/
|
||||||
package com.android.systemui.recents.tv.animations;
|
package com.android.systemui.recents.tv.animations;
|
||||||
|
|
||||||
|
import android.animation.Animator.AnimatorListener;
|
||||||
import android.animation.Animator;
|
|
||||||
import android.content.res.Resources;
|
import android.content.res.Resources;
|
||||||
|
import android.graphics.drawable.TransitionDrawable;
|
||||||
|
import android.util.TypedValue;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
|
import android.widget.ImageView;
|
||||||
import android.widget.LinearLayout;
|
import android.widget.LinearLayout;
|
||||||
|
import android.widget.TextView;
|
||||||
import com.android.systemui.Interpolators;
|
import com.android.systemui.Interpolators;
|
||||||
import com.android.systemui.recents.tv.views.TaskCardView;
|
import com.android.systemui.recents.tv.views.TaskCardView;
|
||||||
|
|
||||||
import com.android.systemui.R;
|
import com.android.systemui.R;
|
||||||
|
|
||||||
public class DismissAnimationsHolder {
|
public class DismissAnimationsHolder {
|
||||||
private LinearLayout mDismissArea;
|
|
||||||
private LinearLayout mInfoField;
|
private LinearLayout mInfoField;
|
||||||
private View mThumbnailView;
|
private View mThumbnailView;
|
||||||
|
|
||||||
private int mDismissEnterYDelta;
|
private int mDismissEnterYDelta;
|
||||||
private int mDismissStartYDelta;
|
private int mDismissStartYDelta;
|
||||||
|
|
||||||
|
private ImageView mCardDismissIcon;
|
||||||
|
private TransitionDrawable mDismissDrawable;
|
||||||
|
private TextView mDismissText;
|
||||||
|
|
||||||
|
private float mDismissUnselectedAlpha;
|
||||||
private long mShortDuration;
|
private long mShortDuration;
|
||||||
private long mLongDuration;
|
private long mLongDuration;
|
||||||
|
|
||||||
public DismissAnimationsHolder(TaskCardView taskCardView) {
|
public DismissAnimationsHolder(TaskCardView taskCardView) {
|
||||||
|
|
||||||
mInfoField = (LinearLayout) taskCardView.findViewById(R.id.card_info_field);
|
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);
|
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();
|
Resources res = taskCardView.getResources();
|
||||||
mDismissEnterYDelta = res.getDimensionPixelOffset(R.dimen.recents_tv_dismiss_shift_down);
|
mDismissEnterYDelta = res.getDimensionPixelOffset(R.dimen.recents_tv_dismiss_shift_down);
|
||||||
mDismissStartYDelta = mDismissEnterYDelta * 2;
|
mDismissStartYDelta = mDismissEnterYDelta * 2;
|
||||||
mShortDuration = res.getInteger(R.integer.dismiss_short_duration);
|
mShortDuration = res.getInteger(R.integer.dismiss_short_duration);
|
||||||
mLongDuration = res.getInteger(R.integer.dismiss_long_duration);
|
mLongDuration = res.getInteger(R.integer.dismiss_long_duration);
|
||||||
|
mDismissUnselectedAlpha = res.getFloat(R.integer.dismiss_unselected_alpha);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void startEnterAnimation() {
|
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)
|
.setDuration(mShortDuration)
|
||||||
.setInterpolator(Interpolators.FAST_OUT_SLOW_IN)
|
.setInterpolator(Interpolators.FAST_OUT_SLOW_IN)
|
||||||
.alpha(1.0f);
|
.alpha(1.0f);
|
||||||
@@ -65,7 +91,18 @@ public class DismissAnimationsHolder {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void startExitAnimation() {
|
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)
|
.setDuration(mShortDuration)
|
||||||
.setInterpolator(Interpolators.FAST_OUT_SLOW_IN)
|
.setInterpolator(Interpolators.FAST_OUT_SLOW_IN)
|
||||||
.alpha(0.0f);
|
.alpha(0.0f);
|
||||||
@@ -83,8 +120,19 @@ public class DismissAnimationsHolder {
|
|||||||
.alpha(1.0f);
|
.alpha(1.0f);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void startDismissAnimation(Animator.AnimatorListener listener) {
|
public void startDismissAnimation(AnimatorListener listener) {
|
||||||
mDismissArea.animate()
|
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)
|
.setDuration(mShortDuration)
|
||||||
.setInterpolator(Interpolators.FAST_OUT_SLOW_IN)
|
.setInterpolator(Interpolators.FAST_OUT_SLOW_IN)
|
||||||
.alpha(0.0f);
|
.alpha(0.0f);
|
||||||
@@ -109,5 +157,7 @@ public class DismissAnimationsHolder {
|
|||||||
mInfoField.animate().setListener(null);
|
mInfoField.animate().setListener(null);
|
||||||
mThumbnailView.setAlpha(1.0f);
|
mThumbnailView.setAlpha(1.0f);
|
||||||
mThumbnailView.setTranslationY(0);
|
mThumbnailView.setTranslationY(0);
|
||||||
|
mCardDismissIcon.setAlpha(mDismissUnselectedAlpha);
|
||||||
|
mDismissText.setAlpha(0.0f);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -39,12 +39,12 @@ public class ViewFocusAnimator implements View.OnFocusChangeListener {
|
|||||||
private final int mAnimDuration;
|
private final int mAnimDuration;
|
||||||
private final Interpolator mFocusInterpolator;
|
private final Interpolator mFocusInterpolator;
|
||||||
|
|
||||||
protected View mTargetView;
|
protected TaskCardView mTargetView;
|
||||||
private float mFocusProgress;
|
private float mFocusProgress;
|
||||||
|
|
||||||
ObjectAnimator mFocusAnimation;
|
ObjectAnimator mFocusAnimation;
|
||||||
|
|
||||||
public ViewFocusAnimator(View view) {
|
public ViewFocusAnimator(TaskCardView view) {
|
||||||
mTargetView = view;
|
mTargetView = view;
|
||||||
final Resources res = view.getResources();
|
final Resources res = view.getResources();
|
||||||
|
|
||||||
@@ -99,9 +99,8 @@ public class ViewFocusAnimator implements View.OnFocusChangeListener {
|
|||||||
mTargetView.setPadding((int) spacing, mTargetView.getPaddingTop(),
|
mTargetView.setPadding((int) spacing, mTargetView.getPaddingTop(),
|
||||||
(int) spacing, mTargetView.getPaddingBottom());
|
(int) spacing, mTargetView.getPaddingBottom());
|
||||||
|
|
||||||
if (mTargetView instanceof TaskCardView) {
|
|
||||||
((TaskCardView) mTargetView).getThumbnailView().setZ(z);
|
mTargetView.getThumbnailView().setZ(z);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public float getFocusProgress() {
|
public float getFocusProgress() {
|
||||||
|
|||||||
Reference in New Issue
Block a user