Loading packages/SystemUI/res/drawable/qs_detail_background.xml 0 → 100644 +19 −0 Original line number Diff line number Diff line <!-- Copyright (C) 2014 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="@color/qs_detail_transition" /> <item android:drawable="@color/system_primary_color" /> </transition> No newline at end of file packages/SystemUI/res/layout/qs_detail.xml +1 −1 Original line number Diff line number Diff line Loading @@ -17,7 +17,7 @@ <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@color/system_primary_color" android:background="@drawable/qs_detail_background" android:padding="16dp" > <TextView Loading packages/SystemUI/res/values/colors.xml +1 −0 Original line number Diff line number Diff line Loading @@ -44,6 +44,7 @@ <color name="qs_tile_text">#B3FFFFFF</color><!-- 70% white --> <color name="qs_subhead">#99FFFFFF</color><!-- 60% white --> <color name="qs_detail_empty">#24B0BEC5</color><!-- 14% blue grey 200--> <color name="qs_detail_transition">#99FFFFFF</color> <color name="data_usage_secondary">#99FFFFFF</color><!-- 60% white --> <color name="data_usage_graph_track">#33FFFFFF</color><!-- 20% white --> <color name="data_usage_graph_warning">#FFFFFFFF</color> Loading packages/SystemUI/src/com/android/systemui/qs/CircularClipper.java→packages/SystemUI/src/com/android/systemui/qs/QSDetailClipper.java +21 −12 Original line number Diff line number Diff line Loading @@ -19,37 +19,40 @@ package com.android.systemui.qs; import android.animation.Animator; import android.animation.Animator.AnimatorListener; import android.animation.AnimatorListenerAdapter; import android.graphics.drawable.TransitionDrawable; import android.view.View; import android.view.ViewAnimationUtils; /** Helper for view-level circular clip animations. **/ public class CircularClipper { /** Helper for quick settings detail panel clip animations. **/ public class QSDetailClipper { private final View mTarget; private final View mDetail; private final TransitionDrawable mBackground; private Animator mAnimator; public CircularClipper(View target) { mTarget = target; public QSDetailClipper(View detail) { mDetail = detail; mBackground = (TransitionDrawable) detail.getBackground(); } public void animateCircularClip(int x, int y, boolean in, AnimatorListener listener) { if (mAnimator != null) { mAnimator.cancel(); } final int w = mTarget.getWidth() - x; final int h = mTarget.getHeight() - y; final int w = mDetail.getWidth() - x; final int h = mDetail.getHeight() - y; int r = (int) Math.ceil(Math.sqrt(x * x + y * y)); r = (int) Math.max(r, Math.ceil(Math.sqrt(w * w + y * y))); r = (int) Math.max(r, Math.ceil(Math.sqrt(w * w + h * h))); r = (int) Math.max(r, Math.ceil(Math.sqrt(x * x + h * h))); mAnimator = ViewAnimationUtils.createCircularReveal(mTarget, x, y, 0, r); mAnimator.removeAllListeners(); mAnimator = ViewAnimationUtils.createCircularReveal(mDetail, x, y, 0, r); mAnimator.setDuration((long)(mAnimator.getDuration() * 1.5)); if (listener != null) { mAnimator.addListener(listener); } if (in) { mBackground.startTransition((int)(mAnimator.getDuration() * 0.6)); mAnimator.addListener(mVisibleOnStart); mAnimator.start(); } else { Loading @@ -61,14 +64,20 @@ public class CircularClipper { private final AnimatorListenerAdapter mVisibleOnStart = new AnimatorListenerAdapter() { @Override public void onAnimationStart(Animator animation) { mTarget.setVisibility(View.VISIBLE); mDetail.setVisibility(View.VISIBLE); } public void onAnimationEnd(Animator animation) { mAnimator = null; } }; private final AnimatorListenerAdapter mGoneOnEnd = new AnimatorListenerAdapter() { @Override public void onAnimationEnd(Animator animation) { mTarget.setVisibility(View.GONE); mDetail.setVisibility(View.GONE); mBackground.resetTransition(); mAnimator = null; }; }; } packages/SystemUI/src/com/android/systemui/qs/QSPanel.java +2 −2 Original line number Diff line number Diff line Loading @@ -49,7 +49,7 @@ public class QSPanel extends ViewGroup { private final View mDetailSettingsButton; private final View mDetailDoneButton; private final View mBrightnessView; private final CircularClipper mClipper; private final QSDetailClipper mClipper; private final H mHandler = new H(); private int mColumns; Loading Loading @@ -85,7 +85,7 @@ public class QSPanel extends ViewGroup { R.layout.quick_settings_brightness_dialog, this, false); addView(mDetail); addView(mBrightnessView); mClipper = new CircularClipper(mDetail); mClipper = new QSDetailClipper(mDetail); updateResources(); mBrightnessController = new BrightnessController(getContext(), Loading Loading
packages/SystemUI/res/drawable/qs_detail_background.xml 0 → 100644 +19 −0 Original line number Diff line number Diff line <!-- Copyright (C) 2014 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="@color/qs_detail_transition" /> <item android:drawable="@color/system_primary_color" /> </transition> No newline at end of file
packages/SystemUI/res/layout/qs_detail.xml +1 −1 Original line number Diff line number Diff line Loading @@ -17,7 +17,7 @@ <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@color/system_primary_color" android:background="@drawable/qs_detail_background" android:padding="16dp" > <TextView Loading
packages/SystemUI/res/values/colors.xml +1 −0 Original line number Diff line number Diff line Loading @@ -44,6 +44,7 @@ <color name="qs_tile_text">#B3FFFFFF</color><!-- 70% white --> <color name="qs_subhead">#99FFFFFF</color><!-- 60% white --> <color name="qs_detail_empty">#24B0BEC5</color><!-- 14% blue grey 200--> <color name="qs_detail_transition">#99FFFFFF</color> <color name="data_usage_secondary">#99FFFFFF</color><!-- 60% white --> <color name="data_usage_graph_track">#33FFFFFF</color><!-- 20% white --> <color name="data_usage_graph_warning">#FFFFFFFF</color> Loading
packages/SystemUI/src/com/android/systemui/qs/CircularClipper.java→packages/SystemUI/src/com/android/systemui/qs/QSDetailClipper.java +21 −12 Original line number Diff line number Diff line Loading @@ -19,37 +19,40 @@ package com.android.systemui.qs; import android.animation.Animator; import android.animation.Animator.AnimatorListener; import android.animation.AnimatorListenerAdapter; import android.graphics.drawable.TransitionDrawable; import android.view.View; import android.view.ViewAnimationUtils; /** Helper for view-level circular clip animations. **/ public class CircularClipper { /** Helper for quick settings detail panel clip animations. **/ public class QSDetailClipper { private final View mTarget; private final View mDetail; private final TransitionDrawable mBackground; private Animator mAnimator; public CircularClipper(View target) { mTarget = target; public QSDetailClipper(View detail) { mDetail = detail; mBackground = (TransitionDrawable) detail.getBackground(); } public void animateCircularClip(int x, int y, boolean in, AnimatorListener listener) { if (mAnimator != null) { mAnimator.cancel(); } final int w = mTarget.getWidth() - x; final int h = mTarget.getHeight() - y; final int w = mDetail.getWidth() - x; final int h = mDetail.getHeight() - y; int r = (int) Math.ceil(Math.sqrt(x * x + y * y)); r = (int) Math.max(r, Math.ceil(Math.sqrt(w * w + y * y))); r = (int) Math.max(r, Math.ceil(Math.sqrt(w * w + h * h))); r = (int) Math.max(r, Math.ceil(Math.sqrt(x * x + h * h))); mAnimator = ViewAnimationUtils.createCircularReveal(mTarget, x, y, 0, r); mAnimator.removeAllListeners(); mAnimator = ViewAnimationUtils.createCircularReveal(mDetail, x, y, 0, r); mAnimator.setDuration((long)(mAnimator.getDuration() * 1.5)); if (listener != null) { mAnimator.addListener(listener); } if (in) { mBackground.startTransition((int)(mAnimator.getDuration() * 0.6)); mAnimator.addListener(mVisibleOnStart); mAnimator.start(); } else { Loading @@ -61,14 +64,20 @@ public class CircularClipper { private final AnimatorListenerAdapter mVisibleOnStart = new AnimatorListenerAdapter() { @Override public void onAnimationStart(Animator animation) { mTarget.setVisibility(View.VISIBLE); mDetail.setVisibility(View.VISIBLE); } public void onAnimationEnd(Animator animation) { mAnimator = null; } }; private final AnimatorListenerAdapter mGoneOnEnd = new AnimatorListenerAdapter() { @Override public void onAnimationEnd(Animator animation) { mTarget.setVisibility(View.GONE); mDetail.setVisibility(View.GONE); mBackground.resetTransition(); mAnimator = null; }; }; }
packages/SystemUI/src/com/android/systemui/qs/QSPanel.java +2 −2 Original line number Diff line number Diff line Loading @@ -49,7 +49,7 @@ public class QSPanel extends ViewGroup { private final View mDetailSettingsButton; private final View mDetailDoneButton; private final View mBrightnessView; private final CircularClipper mClipper; private final QSDetailClipper mClipper; private final H mHandler = new H(); private int mColumns; Loading Loading @@ -85,7 +85,7 @@ public class QSPanel extends ViewGroup { R.layout.quick_settings_brightness_dialog, this, false); addView(mDetail); addView(mBrightnessView); mClipper = new CircularClipper(mDetail); mClipper = new QSDetailClipper(mDetail); updateResources(); mBrightnessController = new BrightnessController(getContext(), Loading