14538027dedbe7ebfc884ca35d20522a2a21a42d4Jorim Jaggi/* 24538027dedbe7ebfc884ca35d20522a2a21a42d4Jorim Jaggi * Copyright (C) 2014 The Android Open Source Project 34538027dedbe7ebfc884ca35d20522a2a21a42d4Jorim Jaggi * 44538027dedbe7ebfc884ca35d20522a2a21a42d4Jorim Jaggi * Licensed under the Apache License, Version 2.0 (the "License"); 54538027dedbe7ebfc884ca35d20522a2a21a42d4Jorim Jaggi * you may not use this file except in compliance with the License. 64538027dedbe7ebfc884ca35d20522a2a21a42d4Jorim Jaggi * You may obtain a copy of the License at 74538027dedbe7ebfc884ca35d20522a2a21a42d4Jorim Jaggi * 84538027dedbe7ebfc884ca35d20522a2a21a42d4Jorim Jaggi * http://www.apache.org/licenses/LICENSE-2.0 94538027dedbe7ebfc884ca35d20522a2a21a42d4Jorim Jaggi * 104538027dedbe7ebfc884ca35d20522a2a21a42d4Jorim Jaggi * Unless required by applicable law or agreed to in writing, software 114538027dedbe7ebfc884ca35d20522a2a21a42d4Jorim Jaggi * distributed under the License is distributed on an "AS IS" BASIS, 124538027dedbe7ebfc884ca35d20522a2a21a42d4Jorim Jaggi * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 134538027dedbe7ebfc884ca35d20522a2a21a42d4Jorim Jaggi * See the License for the specific language governing permissions and 144538027dedbe7ebfc884ca35d20522a2a21a42d4Jorim Jaggi * limitations under the License 154538027dedbe7ebfc884ca35d20522a2a21a42d4Jorim Jaggi */ 164538027dedbe7ebfc884ca35d20522a2a21a42d4Jorim Jaggi 174538027dedbe7ebfc884ca35d20522a2a21a42d4Jorim Jaggipackage com.android.systemui.statusbar.phone; 184538027dedbe7ebfc884ca35d20522a2a21a42d4Jorim Jaggi 1998f8530af3bb8636b7b173443c90686c485205d6Jorim Jaggiimport android.animation.LayoutTransition; 204538027dedbe7ebfc884ca35d20522a2a21a42d4Jorim Jaggiimport android.content.Context; 21e210cc8e9463508381048a2af8b4c30a94239c32Jorim Jaggiimport android.content.res.Configuration; 224538027dedbe7ebfc884ca35d20522a2a21a42d4Jorim Jaggiimport android.graphics.drawable.Drawable; 234538027dedbe7ebfc884ca35d20522a2a21a42d4Jorim Jaggiimport android.util.AttributeSet; 24e210cc8e9463508381048a2af8b4c30a94239c32Jorim Jaggiimport android.util.TypedValue; 254538027dedbe7ebfc884ca35d20522a2a21a42d4Jorim Jaggiimport android.view.View; 2698f8530af3bb8636b7b173443c90686c485205d6Jorim Jaggiimport android.view.ViewTreeObserver; 2798f8530af3bb8636b7b173443c90686c485205d6Jorim Jaggiimport android.view.animation.AnimationUtils; 2898f8530af3bb8636b7b173443c90686c485205d6Jorim Jaggiimport android.view.animation.Interpolator; 294538027dedbe7ebfc884ca35d20522a2a21a42d4Jorim Jaggiimport android.widget.ImageView; 304538027dedbe7ebfc884ca35d20522a2a21a42d4Jorim Jaggiimport android.widget.RelativeLayout; 314538027dedbe7ebfc884ca35d20522a2a21a42d4Jorim Jaggiimport android.widget.TextView; 324538027dedbe7ebfc884ca35d20522a2a21a42d4Jorim Jaggi 33708f7721e910d2c1fe984d2b8a6bf10565a00a61Jorim Jaggiimport com.android.systemui.BatteryMeterView; 344538027dedbe7ebfc884ca35d20522a2a21a42d4Jorim Jaggiimport com.android.systemui.R; 354538027dedbe7ebfc884ca35d20522a2a21a42d4Jorim Jaggiimport com.android.systemui.statusbar.policy.BatteryController; 364538027dedbe7ebfc884ca35d20522a2a21a42d4Jorim Jaggiimport com.android.systemui.statusbar.policy.KeyguardUserSwitcher; 374538027dedbe7ebfc884ca35d20522a2a21a42d4Jorim Jaggiimport com.android.systemui.statusbar.policy.UserInfoController; 384538027dedbe7ebfc884ca35d20522a2a21a42d4Jorim Jaggi 3988d255107d266d5aaca66cfd9e502aa2b9faa9e6Elliott Hughesimport java.text.NumberFormat; 4088d255107d266d5aaca66cfd9e502aa2b9faa9e6Elliott Hughes 414538027dedbe7ebfc884ca35d20522a2a21a42d4Jorim Jaggi/** 424538027dedbe7ebfc884ca35d20522a2a21a42d4Jorim Jaggi * The header group on Keyguard. 434538027dedbe7ebfc884ca35d20522a2a21a42d4Jorim Jaggi */ 444538027dedbe7ebfc884ca35d20522a2a21a42d4Jorim Jaggipublic class KeyguardStatusBarView extends RelativeLayout 454538027dedbe7ebfc884ca35d20522a2a21a42d4Jorim Jaggi implements BatteryController.BatteryStateChangeCallback { 464538027dedbe7ebfc884ca35d20522a2a21a42d4Jorim Jaggi 474538027dedbe7ebfc884ca35d20522a2a21a42d4Jorim Jaggi private boolean mBatteryCharging; 484538027dedbe7ebfc884ca35d20522a2a21a42d4Jorim Jaggi private boolean mKeyguardUserSwitcherShowing; 494538027dedbe7ebfc884ca35d20522a2a21a42d4Jorim Jaggi private boolean mBatteryListening; 504538027dedbe7ebfc884ca35d20522a2a21a42d4Jorim Jaggi 51e210cc8e9463508381048a2af8b4c30a94239c32Jorim Jaggi private TextView mCarrierLabel; 524538027dedbe7ebfc884ca35d20522a2a21a42d4Jorim Jaggi private View mSystemIconsSuperContainer; 534538027dedbe7ebfc884ca35d20522a2a21a42d4Jorim Jaggi private MultiUserSwitch mMultiUserSwitch; 544538027dedbe7ebfc884ca35d20522a2a21a42d4Jorim Jaggi private ImageView mMultiUserAvatar; 554538027dedbe7ebfc884ca35d20522a2a21a42d4Jorim Jaggi private TextView mBatteryLevel; 564538027dedbe7ebfc884ca35d20522a2a21a42d4Jorim Jaggi 574538027dedbe7ebfc884ca35d20522a2a21a42d4Jorim Jaggi private BatteryController mBatteryController; 584538027dedbe7ebfc884ca35d20522a2a21a42d4Jorim Jaggi private KeyguardUserSwitcher mKeyguardUserSwitcher; 594538027dedbe7ebfc884ca35d20522a2a21a42d4Jorim Jaggi 604538027dedbe7ebfc884ca35d20522a2a21a42d4Jorim Jaggi private int mSystemIconsSwitcherHiddenExpandedMargin; 6198f8530af3bb8636b7b173443c90686c485205d6Jorim Jaggi private Interpolator mFastOutSlowInInterpolator; 624538027dedbe7ebfc884ca35d20522a2a21a42d4Jorim Jaggi 634538027dedbe7ebfc884ca35d20522a2a21a42d4Jorim Jaggi public KeyguardStatusBarView(Context context, AttributeSet attrs) { 644538027dedbe7ebfc884ca35d20522a2a21a42d4Jorim Jaggi super(context, attrs); 654538027dedbe7ebfc884ca35d20522a2a21a42d4Jorim Jaggi } 664538027dedbe7ebfc884ca35d20522a2a21a42d4Jorim Jaggi 674538027dedbe7ebfc884ca35d20522a2a21a42d4Jorim Jaggi @Override 684538027dedbe7ebfc884ca35d20522a2a21a42d4Jorim Jaggi protected void onFinishInflate() { 694538027dedbe7ebfc884ca35d20522a2a21a42d4Jorim Jaggi super.onFinishInflate(); 704538027dedbe7ebfc884ca35d20522a2a21a42d4Jorim Jaggi mSystemIconsSuperContainer = findViewById(R.id.system_icons_super_container); 714538027dedbe7ebfc884ca35d20522a2a21a42d4Jorim Jaggi mMultiUserSwitch = (MultiUserSwitch) findViewById(R.id.multi_user_switch); 724538027dedbe7ebfc884ca35d20522a2a21a42d4Jorim Jaggi mMultiUserAvatar = (ImageView) findViewById(R.id.multi_user_avatar); 734538027dedbe7ebfc884ca35d20522a2a21a42d4Jorim Jaggi mBatteryLevel = (TextView) findViewById(R.id.battery_level); 74e210cc8e9463508381048a2af8b4c30a94239c32Jorim Jaggi mCarrierLabel = (TextView) findViewById(R.id.keyguard_carrier_text); 754538027dedbe7ebfc884ca35d20522a2a21a42d4Jorim Jaggi loadDimens(); 7698f8530af3bb8636b7b173443c90686c485205d6Jorim Jaggi mFastOutSlowInInterpolator = AnimationUtils.loadInterpolator(getContext(), 7798f8530af3bb8636b7b173443c90686c485205d6Jorim Jaggi android.R.interpolator.fast_out_slow_in); 784538027dedbe7ebfc884ca35d20522a2a21a42d4Jorim Jaggi updateUserSwitcher(); 794538027dedbe7ebfc884ca35d20522a2a21a42d4Jorim Jaggi } 804538027dedbe7ebfc884ca35d20522a2a21a42d4Jorim Jaggi 81e210cc8e9463508381048a2af8b4c30a94239c32Jorim Jaggi @Override 82e210cc8e9463508381048a2af8b4c30a94239c32Jorim Jaggi protected void onConfigurationChanged(Configuration newConfig) { 83e210cc8e9463508381048a2af8b4c30a94239c32Jorim Jaggi super.onConfigurationChanged(newConfig); 84e210cc8e9463508381048a2af8b4c30a94239c32Jorim Jaggi 85e210cc8e9463508381048a2af8b4c30a94239c32Jorim Jaggi // Respect font size setting. 86e210cc8e9463508381048a2af8b4c30a94239c32Jorim Jaggi mCarrierLabel.setTextSize(TypedValue.COMPLEX_UNIT_PX, 87e210cc8e9463508381048a2af8b4c30a94239c32Jorim Jaggi getResources().getDimensionPixelSize( 88e210cc8e9463508381048a2af8b4c30a94239c32Jorim Jaggi com.android.internal.R.dimen.text_size_small_material)); 89e210cc8e9463508381048a2af8b4c30a94239c32Jorim Jaggi mBatteryLevel.setTextSize(TypedValue.COMPLEX_UNIT_PX, 90e210cc8e9463508381048a2af8b4c30a94239c32Jorim Jaggi getResources().getDimensionPixelSize(R.dimen.battery_level_text_size)); 91e210cc8e9463508381048a2af8b4c30a94239c32Jorim Jaggi } 92e210cc8e9463508381048a2af8b4c30a94239c32Jorim Jaggi 934538027dedbe7ebfc884ca35d20522a2a21a42d4Jorim Jaggi private void loadDimens() { 944538027dedbe7ebfc884ca35d20522a2a21a42d4Jorim Jaggi mSystemIconsSwitcherHiddenExpandedMargin = getResources().getDimensionPixelSize( 954538027dedbe7ebfc884ca35d20522a2a21a42d4Jorim Jaggi R.dimen.system_icons_switcher_hidden_expanded_margin); 964538027dedbe7ebfc884ca35d20522a2a21a42d4Jorim Jaggi } 974538027dedbe7ebfc884ca35d20522a2a21a42d4Jorim Jaggi 984538027dedbe7ebfc884ca35d20522a2a21a42d4Jorim Jaggi private void updateVisibilities() { 9998f8530af3bb8636b7b173443c90686c485205d6Jorim Jaggi if (mMultiUserSwitch.getParent() != this && !mKeyguardUserSwitcherShowing) { 10098f8530af3bb8636b7b173443c90686c485205d6Jorim Jaggi if (mMultiUserSwitch.getParent() != null) { 10198f8530af3bb8636b7b173443c90686c485205d6Jorim Jaggi getOverlay().remove(mMultiUserSwitch); 10298f8530af3bb8636b7b173443c90686c485205d6Jorim Jaggi } 10398f8530af3bb8636b7b173443c90686c485205d6Jorim Jaggi addView(mMultiUserSwitch, 0); 10498f8530af3bb8636b7b173443c90686c485205d6Jorim Jaggi } else if (mMultiUserSwitch.getParent() == this && mKeyguardUserSwitcherShowing) { 10598f8530af3bb8636b7b173443c90686c485205d6Jorim Jaggi removeView(mMultiUserSwitch); 10698f8530af3bb8636b7b173443c90686c485205d6Jorim Jaggi } 1074538027dedbe7ebfc884ca35d20522a2a21a42d4Jorim Jaggi mBatteryLevel.setVisibility(mBatteryCharging ? View.VISIBLE : View.GONE); 1084538027dedbe7ebfc884ca35d20522a2a21a42d4Jorim Jaggi } 1094538027dedbe7ebfc884ca35d20522a2a21a42d4Jorim Jaggi 1104538027dedbe7ebfc884ca35d20522a2a21a42d4Jorim Jaggi private void updateSystemIconsLayoutParams() { 1114538027dedbe7ebfc884ca35d20522a2a21a42d4Jorim Jaggi RelativeLayout.LayoutParams lp = 1124538027dedbe7ebfc884ca35d20522a2a21a42d4Jorim Jaggi (LayoutParams) mSystemIconsSuperContainer.getLayoutParams(); 1134538027dedbe7ebfc884ca35d20522a2a21a42d4Jorim Jaggi int marginEnd = mKeyguardUserSwitcherShowing ? mSystemIconsSwitcherHiddenExpandedMargin : 0; 1144538027dedbe7ebfc884ca35d20522a2a21a42d4Jorim Jaggi if (marginEnd != lp.getMarginEnd()) { 1154538027dedbe7ebfc884ca35d20522a2a21a42d4Jorim Jaggi lp.setMarginEnd(marginEnd); 1164538027dedbe7ebfc884ca35d20522a2a21a42d4Jorim Jaggi mSystemIconsSuperContainer.setLayoutParams(lp); 1174538027dedbe7ebfc884ca35d20522a2a21a42d4Jorim Jaggi } 1184538027dedbe7ebfc884ca35d20522a2a21a42d4Jorim Jaggi } 1194538027dedbe7ebfc884ca35d20522a2a21a42d4Jorim Jaggi 1204538027dedbe7ebfc884ca35d20522a2a21a42d4Jorim Jaggi public void setListening(boolean listening) { 1214538027dedbe7ebfc884ca35d20522a2a21a42d4Jorim Jaggi if (listening == mBatteryListening) { 1224538027dedbe7ebfc884ca35d20522a2a21a42d4Jorim Jaggi return; 1234538027dedbe7ebfc884ca35d20522a2a21a42d4Jorim Jaggi } 1244538027dedbe7ebfc884ca35d20522a2a21a42d4Jorim Jaggi mBatteryListening = listening; 1254538027dedbe7ebfc884ca35d20522a2a21a42d4Jorim Jaggi if (mBatteryListening) { 1264538027dedbe7ebfc884ca35d20522a2a21a42d4Jorim Jaggi mBatteryController.addStateChangedCallback(this); 1274538027dedbe7ebfc884ca35d20522a2a21a42d4Jorim Jaggi } else { 1284538027dedbe7ebfc884ca35d20522a2a21a42d4Jorim Jaggi mBatteryController.removeStateChangedCallback(this); 1294538027dedbe7ebfc884ca35d20522a2a21a42d4Jorim Jaggi } 1304538027dedbe7ebfc884ca35d20522a2a21a42d4Jorim Jaggi } 1314538027dedbe7ebfc884ca35d20522a2a21a42d4Jorim Jaggi 1324538027dedbe7ebfc884ca35d20522a2a21a42d4Jorim Jaggi private void updateUserSwitcher() { 1334538027dedbe7ebfc884ca35d20522a2a21a42d4Jorim Jaggi boolean keyguardSwitcherAvailable = mKeyguardUserSwitcher != null; 1344538027dedbe7ebfc884ca35d20522a2a21a42d4Jorim Jaggi mMultiUserSwitch.setClickable(keyguardSwitcherAvailable); 1354538027dedbe7ebfc884ca35d20522a2a21a42d4Jorim Jaggi mMultiUserSwitch.setFocusable(keyguardSwitcherAvailable); 1364538027dedbe7ebfc884ca35d20522a2a21a42d4Jorim Jaggi mMultiUserSwitch.setKeyguardMode(keyguardSwitcherAvailable); 1374538027dedbe7ebfc884ca35d20522a2a21a42d4Jorim Jaggi } 1384538027dedbe7ebfc884ca35d20522a2a21a42d4Jorim Jaggi 1394538027dedbe7ebfc884ca35d20522a2a21a42d4Jorim Jaggi public void setBatteryController(BatteryController batteryController) { 1404538027dedbe7ebfc884ca35d20522a2a21a42d4Jorim Jaggi mBatteryController = batteryController; 141708f7721e910d2c1fe984d2b8a6bf10565a00a61Jorim Jaggi ((BatteryMeterView) findViewById(R.id.battery)).setBatteryController(batteryController); 1424538027dedbe7ebfc884ca35d20522a2a21a42d4Jorim Jaggi } 1434538027dedbe7ebfc884ca35d20522a2a21a42d4Jorim Jaggi 1444538027dedbe7ebfc884ca35d20522a2a21a42d4Jorim Jaggi public void setUserInfoController(UserInfoController userInfoController) { 1454538027dedbe7ebfc884ca35d20522a2a21a42d4Jorim Jaggi userInfoController.addListener(new UserInfoController.OnUserInfoChangedListener() { 1464538027dedbe7ebfc884ca35d20522a2a21a42d4Jorim Jaggi @Override 1474538027dedbe7ebfc884ca35d20522a2a21a42d4Jorim Jaggi public void onUserInfoChanged(String name, Drawable picture) { 1484538027dedbe7ebfc884ca35d20522a2a21a42d4Jorim Jaggi mMultiUserAvatar.setImageDrawable(picture); 1494538027dedbe7ebfc884ca35d20522a2a21a42d4Jorim Jaggi } 1504538027dedbe7ebfc884ca35d20522a2a21a42d4Jorim Jaggi }); 1514538027dedbe7ebfc884ca35d20522a2a21a42d4Jorim Jaggi } 1524538027dedbe7ebfc884ca35d20522a2a21a42d4Jorim Jaggi 1534538027dedbe7ebfc884ca35d20522a2a21a42d4Jorim Jaggi @Override 1544538027dedbe7ebfc884ca35d20522a2a21a42d4Jorim Jaggi public void onBatteryLevelChanged(int level, boolean pluggedIn, boolean charging) { 15588d255107d266d5aaca66cfd9e502aa2b9faa9e6Elliott Hughes String percentage = NumberFormat.getPercentInstance().format((double) level / 100.0); 15688d255107d266d5aaca66cfd9e502aa2b9faa9e6Elliott Hughes mBatteryLevel.setText(percentage); 1574538027dedbe7ebfc884ca35d20522a2a21a42d4Jorim Jaggi boolean changed = mBatteryCharging != charging; 1584538027dedbe7ebfc884ca35d20522a2a21a42d4Jorim Jaggi mBatteryCharging = charging; 1594538027dedbe7ebfc884ca35d20522a2a21a42d4Jorim Jaggi if (changed) { 1604538027dedbe7ebfc884ca35d20522a2a21a42d4Jorim Jaggi updateVisibilities(); 1614538027dedbe7ebfc884ca35d20522a2a21a42d4Jorim Jaggi } 1624538027dedbe7ebfc884ca35d20522a2a21a42d4Jorim Jaggi } 1634538027dedbe7ebfc884ca35d20522a2a21a42d4Jorim Jaggi 1644538027dedbe7ebfc884ca35d20522a2a21a42d4Jorim Jaggi @Override 1654538027dedbe7ebfc884ca35d20522a2a21a42d4Jorim Jaggi public void onPowerSaveChanged() { 1664538027dedbe7ebfc884ca35d20522a2a21a42d4Jorim Jaggi // could not care less 1674538027dedbe7ebfc884ca35d20522a2a21a42d4Jorim Jaggi } 1684538027dedbe7ebfc884ca35d20522a2a21a42d4Jorim Jaggi 1694538027dedbe7ebfc884ca35d20522a2a21a42d4Jorim Jaggi public void setKeyguardUserSwitcher(KeyguardUserSwitcher keyguardUserSwitcher) { 1704538027dedbe7ebfc884ca35d20522a2a21a42d4Jorim Jaggi mKeyguardUserSwitcher = keyguardUserSwitcher; 1714538027dedbe7ebfc884ca35d20522a2a21a42d4Jorim Jaggi mMultiUserSwitch.setKeyguardUserSwitcher(keyguardUserSwitcher); 1724538027dedbe7ebfc884ca35d20522a2a21a42d4Jorim Jaggi updateUserSwitcher(); 1734538027dedbe7ebfc884ca35d20522a2a21a42d4Jorim Jaggi } 1744538027dedbe7ebfc884ca35d20522a2a21a42d4Jorim Jaggi 17598f8530af3bb8636b7b173443c90686c485205d6Jorim Jaggi public void setKeyguardUserSwitcherShowing(boolean showing, boolean animate) { 1764538027dedbe7ebfc884ca35d20522a2a21a42d4Jorim Jaggi mKeyguardUserSwitcherShowing = showing; 17798f8530af3bb8636b7b173443c90686c485205d6Jorim Jaggi if (animate) { 17898f8530af3bb8636b7b173443c90686c485205d6Jorim Jaggi animateNextLayoutChange(); 17998f8530af3bb8636b7b173443c90686c485205d6Jorim Jaggi } 1804538027dedbe7ebfc884ca35d20522a2a21a42d4Jorim Jaggi updateVisibilities(); 1814538027dedbe7ebfc884ca35d20522a2a21a42d4Jorim Jaggi updateSystemIconsLayoutParams(); 1824538027dedbe7ebfc884ca35d20522a2a21a42d4Jorim Jaggi } 1834538027dedbe7ebfc884ca35d20522a2a21a42d4Jorim Jaggi 18498f8530af3bb8636b7b173443c90686c485205d6Jorim Jaggi private void animateNextLayoutChange() { 18598f8530af3bb8636b7b173443c90686c485205d6Jorim Jaggi final int systemIconsCurrentX = mSystemIconsSuperContainer.getLeft(); 18698f8530af3bb8636b7b173443c90686c485205d6Jorim Jaggi final boolean userSwitcherVisible = mMultiUserSwitch.getParent() == this; 18798f8530af3bb8636b7b173443c90686c485205d6Jorim Jaggi getViewTreeObserver().addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() { 18898f8530af3bb8636b7b173443c90686c485205d6Jorim Jaggi @Override 18998f8530af3bb8636b7b173443c90686c485205d6Jorim Jaggi public boolean onPreDraw() { 19098f8530af3bb8636b7b173443c90686c485205d6Jorim Jaggi getViewTreeObserver().removeOnPreDrawListener(this); 19198f8530af3bb8636b7b173443c90686c485205d6Jorim Jaggi boolean userSwitcherHiding = userSwitcherVisible 19298f8530af3bb8636b7b173443c90686c485205d6Jorim Jaggi && mMultiUserSwitch.getParent() != KeyguardStatusBarView.this; 19398f8530af3bb8636b7b173443c90686c485205d6Jorim Jaggi mSystemIconsSuperContainer.setX(systemIconsCurrentX); 19498f8530af3bb8636b7b173443c90686c485205d6Jorim Jaggi mSystemIconsSuperContainer.animate() 19598f8530af3bb8636b7b173443c90686c485205d6Jorim Jaggi .translationX(0) 19698f8530af3bb8636b7b173443c90686c485205d6Jorim Jaggi .setDuration(400) 19798f8530af3bb8636b7b173443c90686c485205d6Jorim Jaggi .setStartDelay(userSwitcherHiding ? 300 : 0) 19898f8530af3bb8636b7b173443c90686c485205d6Jorim Jaggi .setInterpolator(mFastOutSlowInInterpolator) 19998f8530af3bb8636b7b173443c90686c485205d6Jorim Jaggi .start(); 20098f8530af3bb8636b7b173443c90686c485205d6Jorim Jaggi if (userSwitcherHiding) { 20198f8530af3bb8636b7b173443c90686c485205d6Jorim Jaggi getOverlay().add(mMultiUserSwitch); 20298f8530af3bb8636b7b173443c90686c485205d6Jorim Jaggi mMultiUserSwitch.animate() 20398f8530af3bb8636b7b173443c90686c485205d6Jorim Jaggi .alpha(0f) 20498f8530af3bb8636b7b173443c90686c485205d6Jorim Jaggi .setDuration(300) 20598f8530af3bb8636b7b173443c90686c485205d6Jorim Jaggi .setStartDelay(0) 20698f8530af3bb8636b7b173443c90686c485205d6Jorim Jaggi .setInterpolator(PhoneStatusBar.ALPHA_OUT) 20798f8530af3bb8636b7b173443c90686c485205d6Jorim Jaggi .withEndAction(new Runnable() { 20898f8530af3bb8636b7b173443c90686c485205d6Jorim Jaggi @Override 20998f8530af3bb8636b7b173443c90686c485205d6Jorim Jaggi public void run() { 21098f8530af3bb8636b7b173443c90686c485205d6Jorim Jaggi mMultiUserSwitch.setAlpha(1f); 21198f8530af3bb8636b7b173443c90686c485205d6Jorim Jaggi getOverlay().remove(mMultiUserSwitch); 21298f8530af3bb8636b7b173443c90686c485205d6Jorim Jaggi } 21398f8530af3bb8636b7b173443c90686c485205d6Jorim Jaggi }) 21498f8530af3bb8636b7b173443c90686c485205d6Jorim Jaggi .start(); 21598f8530af3bb8636b7b173443c90686c485205d6Jorim Jaggi 21698f8530af3bb8636b7b173443c90686c485205d6Jorim Jaggi } else { 21798f8530af3bb8636b7b173443c90686c485205d6Jorim Jaggi mMultiUserSwitch.setAlpha(0f); 21898f8530af3bb8636b7b173443c90686c485205d6Jorim Jaggi mMultiUserSwitch.animate() 21998f8530af3bb8636b7b173443c90686c485205d6Jorim Jaggi .alpha(1f) 22098f8530af3bb8636b7b173443c90686c485205d6Jorim Jaggi .setDuration(300) 22198f8530af3bb8636b7b173443c90686c485205d6Jorim Jaggi .setStartDelay(200) 22298f8530af3bb8636b7b173443c90686c485205d6Jorim Jaggi .setInterpolator(PhoneStatusBar.ALPHA_IN); 22398f8530af3bb8636b7b173443c90686c485205d6Jorim Jaggi } 22498f8530af3bb8636b7b173443c90686c485205d6Jorim Jaggi return true; 22598f8530af3bb8636b7b173443c90686c485205d6Jorim Jaggi } 22698f8530af3bb8636b7b173443c90686c485205d6Jorim Jaggi }); 22798f8530af3bb8636b7b173443c90686c485205d6Jorim Jaggi 22898f8530af3bb8636b7b173443c90686c485205d6Jorim Jaggi } 22998f8530af3bb8636b7b173443c90686c485205d6Jorim Jaggi 23098f8530af3bb8636b7b173443c90686c485205d6Jorim Jaggi @Override 23198f8530af3bb8636b7b173443c90686c485205d6Jorim Jaggi public void setVisibility(int visibility) { 23298f8530af3bb8636b7b173443c90686c485205d6Jorim Jaggi super.setVisibility(visibility); 23398f8530af3bb8636b7b173443c90686c485205d6Jorim Jaggi if (visibility != View.VISIBLE) { 23498f8530af3bb8636b7b173443c90686c485205d6Jorim Jaggi mSystemIconsSuperContainer.animate().cancel(); 23598f8530af3bb8636b7b173443c90686c485205d6Jorim Jaggi mMultiUserSwitch.animate().cancel(); 23698f8530af3bb8636b7b173443c90686c485205d6Jorim Jaggi mMultiUserSwitch.setAlpha(1f); 23798f8530af3bb8636b7b173443c90686c485205d6Jorim Jaggi } 23898f8530af3bb8636b7b173443c90686c485205d6Jorim Jaggi } 23998f8530af3bb8636b7b173443c90686c485205d6Jorim Jaggi 2404538027dedbe7ebfc884ca35d20522a2a21a42d4Jorim Jaggi @Override 2414538027dedbe7ebfc884ca35d20522a2a21a42d4Jorim Jaggi public boolean hasOverlappingRendering() { 2424538027dedbe7ebfc884ca35d20522a2a21a42d4Jorim Jaggi return false; 2434538027dedbe7ebfc884ca35d20522a2a21a42d4Jorim Jaggi } 2444538027dedbe7ebfc884ca35d20522a2a21a42d4Jorim Jaggi} 245