Merge "Assistive chip: Adjusting chip UI" into ub-launcher3-rvc-dev
This commit is contained in:
commit
65a0cc72ae
|
@ -20,6 +20,7 @@
|
||||||
<dimen name="chip_hint_start_padding">10dp</dimen>
|
<dimen name="chip_hint_start_padding">10dp</dimen>
|
||||||
<dimen name="chip_hint_end_padding">12dp</dimen>
|
<dimen name="chip_hint_end_padding">12dp</dimen>
|
||||||
<dimen name="chip_hint_horizontal_margin">20dp</dimen>
|
<dimen name="chip_hint_horizontal_margin">20dp</dimen>
|
||||||
|
<dimen name="chip_hint_vertical_offset">16dp</dimen>
|
||||||
<dimen name="chip_hint_elevation">2dp</dimen>
|
<dimen name="chip_hint_elevation">2dp</dimen>
|
||||||
<dimen name="chip_icon_size">16dp</dimen>
|
<dimen name="chip_icon_size">16dp</dimen>
|
||||||
<dimen name="chip_text_height">26dp</dimen>
|
<dimen name="chip_text_height">26dp</dimen>
|
||||||
|
|
|
@ -174,11 +174,12 @@ public class TaskView extends FrameLayout implements PageCallbacks, Reusable {
|
||||||
|
|
||||||
// Order in which the footers appear. Lower order appear below higher order.
|
// Order in which the footers appear. Lower order appear below higher order.
|
||||||
public static final int INDEX_DIGITAL_WELLBEING_TOAST = 0;
|
public static final int INDEX_DIGITAL_WELLBEING_TOAST = 0;
|
||||||
public static final int INDEX_PROACTIVE_SUGGEST = 1;
|
|
||||||
private final FooterWrapper[] mFooters = new FooterWrapper[2];
|
private final FooterWrapper[] mFooters = new FooterWrapper[2];
|
||||||
private float mFooterVerticalOffset = 0;
|
private float mFooterVerticalOffset = 0;
|
||||||
private float mFooterAlpha = 1;
|
private float mFooterAlpha = 1;
|
||||||
private int mStackHeight;
|
private int mStackHeight;
|
||||||
|
private View mContextualChipWrapper;
|
||||||
|
private View mContextualChip;
|
||||||
|
|
||||||
public TaskView(Context context) {
|
public TaskView(Context context) {
|
||||||
this(context, null);
|
this(context, null);
|
||||||
|
@ -255,8 +256,14 @@ public class TaskView extends FrameLayout implements PageCallbacks, Reusable {
|
||||||
footer.animateHide();
|
footer.animateHide();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (mContextualChip != null) {
|
||||||
|
mContextualChip.animate().scaleX(0f).scaleY(0f).setDuration(300);
|
||||||
|
}
|
||||||
mIconView.animate().alpha(0.0f);
|
mIconView.animate().alpha(0.0f);
|
||||||
} else {
|
} else {
|
||||||
|
if (mContextualChip != null) {
|
||||||
|
mContextualChip.animate().scaleX(1f).scaleY(1f).setDuration(300);
|
||||||
|
}
|
||||||
mIconView.animate().alpha(1.0f);
|
mIconView.animate().alpha(1.0f);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -657,6 +664,51 @@ public class TaskView extends FrameLayout implements PageCallbacks, Reusable {
|
||||||
return oldFooter;
|
return oldFooter;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets the contextual chip.
|
||||||
|
*
|
||||||
|
* @param view Wrapper view containing contextual chip.
|
||||||
|
*/
|
||||||
|
public void setContextualChip(View view) {
|
||||||
|
if (mContextualChipWrapper != null) {
|
||||||
|
removeView(mContextualChipWrapper);
|
||||||
|
}
|
||||||
|
if (view != null) {
|
||||||
|
mContextualChipWrapper = view;
|
||||||
|
LayoutParams layoutParams = new LayoutParams(LayoutParams.MATCH_PARENT,
|
||||||
|
LayoutParams.WRAP_CONTENT);
|
||||||
|
layoutParams.gravity = BOTTOM | CENTER_HORIZONTAL;
|
||||||
|
layoutParams.bottomMargin = (int)
|
||||||
|
(((MarginLayoutParams) mSnapshotView.getLayoutParams()).bottomMargin
|
||||||
|
- getExpectedViewHeight(view) + getResources().getDimension(
|
||||||
|
R.dimen.chip_hint_vertical_offset));
|
||||||
|
mContextualChip = ((FrameLayout) mContextualChipWrapper).getChildAt(0);
|
||||||
|
mContextualChip.setScaleX(0f);
|
||||||
|
mContextualChip.setScaleY(0f);
|
||||||
|
addView(view, getChildCount(), layoutParams);
|
||||||
|
view.setAlpha(mFooterAlpha);
|
||||||
|
if (mContextualChip != null) {
|
||||||
|
mContextualChip.animate().scaleX(1f).scaleY(1f).setDuration(50);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Clears the contextual chip from TaskView.
|
||||||
|
*
|
||||||
|
* @return The contextual chip wrapper view to be recycled.
|
||||||
|
*/
|
||||||
|
public View clearContextualChip() {
|
||||||
|
if (mContextualChipWrapper != null) {
|
||||||
|
removeView(mContextualChipWrapper);
|
||||||
|
}
|
||||||
|
View oldContextualChipWrapper = mContextualChipWrapper;
|
||||||
|
mContextualChipWrapper = null;
|
||||||
|
mContextualChip = null;
|
||||||
|
return oldContextualChipWrapper;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onLayout(boolean changed, int left, int top, int right, int bottom) {
|
protected void onLayout(boolean changed, int left, int top, int right, int bottom) {
|
||||||
super.onLayout(changed, left, top, right, bottom);
|
super.onLayout(changed, left, top, right, bottom);
|
||||||
|
@ -750,14 +802,7 @@ public class TaskView extends FrameLayout implements PageCallbacks, Reusable {
|
||||||
mDelegate = mOldOutlineProvider == null
|
mDelegate = mOldOutlineProvider == null
|
||||||
? ViewOutlineProvider.BACKGROUND : mOldOutlineProvider;
|
? ViewOutlineProvider.BACKGROUND : mOldOutlineProvider;
|
||||||
|
|
||||||
int h = view.getLayoutParams().height;
|
mExpectedHeight = getExpectedViewHeight(view);
|
||||||
if (h > 0) {
|
|
||||||
mExpectedHeight = h;
|
|
||||||
} else {
|
|
||||||
int m = MeasureSpec.makeMeasureSpec(MeasureSpec.EXACTLY - 1, MeasureSpec.AT_MOST);
|
|
||||||
view.measure(m, m);
|
|
||||||
mExpectedHeight = view.getMeasuredHeight();
|
|
||||||
}
|
|
||||||
mOldPaddingBottom = view.getPaddingBottom();
|
mOldPaddingBottom = view.getPaddingBottom();
|
||||||
|
|
||||||
if (mOldOutlineProvider != null) {
|
if (mOldOutlineProvider != null) {
|
||||||
|
@ -819,6 +864,19 @@ public class TaskView extends FrameLayout implements PageCallbacks, Reusable {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private int getExpectedViewHeight(View view) {
|
||||||
|
int expectedHeight;
|
||||||
|
int h = view.getLayoutParams().height;
|
||||||
|
if (h > 0) {
|
||||||
|
expectedHeight = h;
|
||||||
|
} else {
|
||||||
|
int m = MeasureSpec.makeMeasureSpec(MeasureSpec.EXACTLY - 1, MeasureSpec.AT_MOST);
|
||||||
|
view.measure(m, m);
|
||||||
|
expectedHeight = view.getMeasuredHeight();
|
||||||
|
}
|
||||||
|
return expectedHeight;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onInitializeAccessibilityNodeInfo(AccessibilityNodeInfo info) {
|
public void onInitializeAccessibilityNodeInfo(AccessibilityNodeInfo info) {
|
||||||
super.onInitializeAccessibilityNodeInfo(info);
|
super.onInitializeAccessibilityNodeInfo(info);
|
||||||
|
|
Loading…
Reference in New Issue