1c0ae9e67ebe6f1298800feaed1b43e867139a904Chris Wren/*
2c0ae9e67ebe6f1298800feaed1b43e867139a904Chris Wren * Copyright (C) 2012 The Android Open Source Project
3c0ae9e67ebe6f1298800feaed1b43e867139a904Chris Wren *
4c0ae9e67ebe6f1298800feaed1b43e867139a904Chris Wren * Licensed under the Apache License, Version 2.0 (the "License");
5c0ae9e67ebe6f1298800feaed1b43e867139a904Chris Wren * you may not use this file except in compliance with the License.
6c0ae9e67ebe6f1298800feaed1b43e867139a904Chris Wren * You may obtain a copy of the License at
7c0ae9e67ebe6f1298800feaed1b43e867139a904Chris Wren *
8c0ae9e67ebe6f1298800feaed1b43e867139a904Chris Wren *      http://www.apache.org/licenses/LICENSE-2.0
9c0ae9e67ebe6f1298800feaed1b43e867139a904Chris Wren *
10c0ae9e67ebe6f1298800feaed1b43e867139a904Chris Wren * Unless required by applicable law or agreed to in writing, software
11c0ae9e67ebe6f1298800feaed1b43e867139a904Chris Wren * distributed under the License is distributed on an "AS IS" BASIS,
12c0ae9e67ebe6f1298800feaed1b43e867139a904Chris Wren * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13c0ae9e67ebe6f1298800feaed1b43e867139a904Chris Wren * See the License for the specific language governing permissions and
14c0ae9e67ebe6f1298800feaed1b43e867139a904Chris Wren * limitations under the License.
15c0ae9e67ebe6f1298800feaed1b43e867139a904Chris Wren */
16c0ae9e67ebe6f1298800feaed1b43e867139a904Chris Wren
175ecd81154fa039961f65bb4e36d18ac555b0d1d6Jim Millerpackage com.android.keyguard;
18c0ae9e67ebe6f1298800feaed1b43e867139a904Chris Wren
19c0ae9e67ebe6f1298800feaed1b43e867139a904Chris Wrenimport android.animation.Animator;
208bbafed48b9c39e3ff5683b7151541c21b3e8ffeJim Millerimport android.animation.AnimatorListenerAdapter;
21c0ae9e67ebe6f1298800feaed1b43e867139a904Chris Wrenimport android.animation.ObjectAnimator;
22c0ae9e67ebe6f1298800feaed1b43e867139a904Chris Wrenimport android.graphics.drawable.Drawable;
23c0ae9e67ebe6f1298800feaed1b43e867139a904Chris Wrenimport android.view.View;
24c0ae9e67ebe6f1298800feaed1b43e867139a904Chris Wren
25c0ae9e67ebe6f1298800feaed1b43e867139a904Chris Wren/**
26c0ae9e67ebe6f1298800feaed1b43e867139a904Chris Wren * Some common functions that are useful for KeyguardSecurityViews.
27c0ae9e67ebe6f1298800feaed1b43e867139a904Chris Wren */
28c0ae9e67ebe6f1298800feaed1b43e867139a904Chris Wrenpublic class KeyguardSecurityViewHelper {
29c0ae9e67ebe6f1298800feaed1b43e867139a904Chris Wren
30c0ae9e67ebe6f1298800feaed1b43e867139a904Chris Wren    public static void showBouncer(SecurityMessageDisplay securityMessageDisplay,
318bbafed48b9c39e3ff5683b7151541c21b3e8ffeJim Miller            final View ecaView, Drawable bouncerFrame, int duration) {
32c0ae9e67ebe6f1298800feaed1b43e867139a904Chris Wren        if (securityMessageDisplay != null) {
33c0ae9e67ebe6f1298800feaed1b43e867139a904Chris Wren            securityMessageDisplay.showBouncer(duration);
34c0ae9e67ebe6f1298800feaed1b43e867139a904Chris Wren        }
35c0ae9e67ebe6f1298800feaed1b43e867139a904Chris Wren        if (ecaView != null) {
36c0ae9e67ebe6f1298800feaed1b43e867139a904Chris Wren            if (duration > 0) {
37c0ae9e67ebe6f1298800feaed1b43e867139a904Chris Wren                Animator anim = ObjectAnimator.ofFloat(ecaView, "alpha", 0f);
38c0ae9e67ebe6f1298800feaed1b43e867139a904Chris Wren                anim.setDuration(duration);
398bbafed48b9c39e3ff5683b7151541c21b3e8ffeJim Miller                anim.addListener(new AnimatorListenerAdapter() {
408bbafed48b9c39e3ff5683b7151541c21b3e8ffeJim Miller                    private boolean mCanceled;
418bbafed48b9c39e3ff5683b7151541c21b3e8ffeJim Miller                    @Override
428bbafed48b9c39e3ff5683b7151541c21b3e8ffeJim Miller                    public void onAnimationCancel(Animator animation) {
438bbafed48b9c39e3ff5683b7151541c21b3e8ffeJim Miller                        // Fail safe and show the emergency button in onAnimationEnd()
448bbafed48b9c39e3ff5683b7151541c21b3e8ffeJim Miller                        mCanceled = true;
458bbafed48b9c39e3ff5683b7151541c21b3e8ffeJim Miller                        ecaView.setAlpha(1f);
468bbafed48b9c39e3ff5683b7151541c21b3e8ffeJim Miller                    }
478bbafed48b9c39e3ff5683b7151541c21b3e8ffeJim Miller                    @Override
488bbafed48b9c39e3ff5683b7151541c21b3e8ffeJim Miller                    public void onAnimationEnd(Animator animation) {
498bbafed48b9c39e3ff5683b7151541c21b3e8ffeJim Miller                        ecaView.setVisibility(mCanceled ? View.VISIBLE : View.INVISIBLE);
508bbafed48b9c39e3ff5683b7151541c21b3e8ffeJim Miller                    }
518bbafed48b9c39e3ff5683b7151541c21b3e8ffeJim Miller                });
52c0ae9e67ebe6f1298800feaed1b43e867139a904Chris Wren                anim.start();
53c0ae9e67ebe6f1298800feaed1b43e867139a904Chris Wren            } else {
54c0ae9e67ebe6f1298800feaed1b43e867139a904Chris Wren                ecaView.setAlpha(0f);
558bbafed48b9c39e3ff5683b7151541c21b3e8ffeJim Miller                ecaView.setVisibility(View.INVISIBLE);
56c0ae9e67ebe6f1298800feaed1b43e867139a904Chris Wren            }
57c0ae9e67ebe6f1298800feaed1b43e867139a904Chris Wren        }
58c0ae9e67ebe6f1298800feaed1b43e867139a904Chris Wren        if (bouncerFrame != null) {
59c0ae9e67ebe6f1298800feaed1b43e867139a904Chris Wren            if (duration > 0) {
6050bf54584239aa80781f32269396bd2059b2877dChris Wren                Animator anim = ObjectAnimator.ofInt(bouncerFrame, "alpha", 0, 255);
61c0ae9e67ebe6f1298800feaed1b43e867139a904Chris Wren                anim.setDuration(duration);
62c0ae9e67ebe6f1298800feaed1b43e867139a904Chris Wren                anim.start();
63c0ae9e67ebe6f1298800feaed1b43e867139a904Chris Wren            } else {
64c0ae9e67ebe6f1298800feaed1b43e867139a904Chris Wren                bouncerFrame.setAlpha(255);
65c0ae9e67ebe6f1298800feaed1b43e867139a904Chris Wren            }
66c0ae9e67ebe6f1298800feaed1b43e867139a904Chris Wren        }
67c0ae9e67ebe6f1298800feaed1b43e867139a904Chris Wren    }
68c0ae9e67ebe6f1298800feaed1b43e867139a904Chris Wren
69c0ae9e67ebe6f1298800feaed1b43e867139a904Chris Wren    public static void hideBouncer(SecurityMessageDisplay securityMessageDisplay,
70c0ae9e67ebe6f1298800feaed1b43e867139a904Chris Wren            View ecaView, Drawable bouncerFrame, int duration) {
71c0ae9e67ebe6f1298800feaed1b43e867139a904Chris Wren        if (securityMessageDisplay != null) {
72c0ae9e67ebe6f1298800feaed1b43e867139a904Chris Wren            securityMessageDisplay.hideBouncer(duration);
73c0ae9e67ebe6f1298800feaed1b43e867139a904Chris Wren        }
74c0ae9e67ebe6f1298800feaed1b43e867139a904Chris Wren        if (ecaView != null) {
758bbafed48b9c39e3ff5683b7151541c21b3e8ffeJim Miller            ecaView.setVisibility(View.VISIBLE);
76c0ae9e67ebe6f1298800feaed1b43e867139a904Chris Wren            if (duration > 0) {
77c0ae9e67ebe6f1298800feaed1b43e867139a904Chris Wren                Animator anim = ObjectAnimator.ofFloat(ecaView, "alpha", 1f);
78c0ae9e67ebe6f1298800feaed1b43e867139a904Chris Wren                anim.setDuration(duration);
79c0ae9e67ebe6f1298800feaed1b43e867139a904Chris Wren                anim.start();
80c0ae9e67ebe6f1298800feaed1b43e867139a904Chris Wren            } else {
81c0ae9e67ebe6f1298800feaed1b43e867139a904Chris Wren                ecaView.setAlpha(1f);
82c0ae9e67ebe6f1298800feaed1b43e867139a904Chris Wren            }
83c0ae9e67ebe6f1298800feaed1b43e867139a904Chris Wren        }
84c0ae9e67ebe6f1298800feaed1b43e867139a904Chris Wren        if (bouncerFrame != null) {
85c0ae9e67ebe6f1298800feaed1b43e867139a904Chris Wren            if (duration > 0) {
8650bf54584239aa80781f32269396bd2059b2877dChris Wren                Animator anim = ObjectAnimator.ofInt(bouncerFrame, "alpha", 255, 0);
87c0ae9e67ebe6f1298800feaed1b43e867139a904Chris Wren                anim.setDuration(duration);
88c0ae9e67ebe6f1298800feaed1b43e867139a904Chris Wren                anim.start();
89c0ae9e67ebe6f1298800feaed1b43e867139a904Chris Wren            } else {
90c0ae9e67ebe6f1298800feaed1b43e867139a904Chris Wren                bouncerFrame.setAlpha(0);
91c0ae9e67ebe6f1298800feaed1b43e867139a904Chris Wren            }
92c0ae9e67ebe6f1298800feaed1b43e867139a904Chris Wren        }
93c0ae9e67ebe6f1298800feaed1b43e867139a904Chris Wren    }
94c0ae9e67ebe6f1298800feaed1b43e867139a904Chris Wren}
95