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