115a4d2ffd04dc6c70f2cd17dae12ac6bc14c69abKenny Root/*
215a4d2ffd04dc6c70f2cd17dae12ac6bc14c69abKenny Root * Copyright (C) 2008 The Android Open Source Project
315a4d2ffd04dc6c70f2cd17dae12ac6bc14c69abKenny Root *
415a4d2ffd04dc6c70f2cd17dae12ac6bc14c69abKenny Root * Licensed under the Apache License, Version 2.0 (the "License");
515a4d2ffd04dc6c70f2cd17dae12ac6bc14c69abKenny Root * you may not use this file except in compliance with the License.
615a4d2ffd04dc6c70f2cd17dae12ac6bc14c69abKenny Root * You may obtain a copy of the License at
715a4d2ffd04dc6c70f2cd17dae12ac6bc14c69abKenny Root *
815a4d2ffd04dc6c70f2cd17dae12ac6bc14c69abKenny Root *      http://www.apache.org/licenses/LICENSE-2.0
915a4d2ffd04dc6c70f2cd17dae12ac6bc14c69abKenny Root *
1015a4d2ffd04dc6c70f2cd17dae12ac6bc14c69abKenny Root * Unless required by applicable law or agreed to in writing, software
1115a4d2ffd04dc6c70f2cd17dae12ac6bc14c69abKenny Root * distributed under the License is distributed on an "AS IS" BASIS,
1215a4d2ffd04dc6c70f2cd17dae12ac6bc14c69abKenny Root * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1315a4d2ffd04dc6c70f2cd17dae12ac6bc14c69abKenny Root * See the License for the specific language governing permissions and
1415a4d2ffd04dc6c70f2cd17dae12ac6bc14c69abKenny Root * limitations under the License.
1515a4d2ffd04dc6c70f2cd17dae12ac6bc14c69abKenny Root */
1615a4d2ffd04dc6c70f2cd17dae12ac6bc14c69abKenny Root
17fd52b18d9bf3cd62c7a07058536e9f97db65beeaJoe Onoratopackage com.android.systemui.statusbar.phone;
189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.content.Context;
209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.util.AttributeSet;
2164161ccb2f3341ebe1675e38a999250c7967d0adChris Wrenimport android.util.EventLog;
229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.view.MotionEvent;
239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.view.View;
243e7592d0cbbde5b0b85d98b82d991ee5d2aab8a9Selim Cinekimport android.view.ViewGroup;
256179ea3196e9306d3f14361fe9ef14191b1edba6Svetoslav Ganovimport android.view.accessibility.AccessibilityEvent;
2664161ccb2f3341ebe1675e38a999250c7967d0adChris Wren
27aa573e9e8632552d1fa8bdd6b0ee408ff9a93a6bJason Monkimport com.android.systemui.BatteryMeterView;
2886b273f1cc59185a14d5bab8a3f4db30c1a4c8a9Jorim Jaggiimport com.android.systemui.DejankUtils;
29aa573e9e8632552d1fa8bdd6b0ee408ff9a93a6bJason Monkimport com.android.systemui.Dependency;
3064161ccb2f3341ebe1675e38a999250c7967d0adChris Wrenimport com.android.systemui.EventLogTags;
313e7592d0cbbde5b0b85d98b82d991ee5d2aab8a9Selim Cinekimport com.android.systemui.R;
32aa573e9e8632552d1fa8bdd6b0ee408ff9a93a6bJason Monkimport com.android.systemui.statusbar.policy.DarkIconDispatcher;
33aa573e9e8632552d1fa8bdd6b0ee408ff9a93a6bJason Monkimport com.android.systemui.statusbar.policy.DarkIconDispatcher.DarkReceiver;
3479de0c550037a5328bbc7f4fddaf02f192a5c283Joe Onorato
3508d05e3d1d6ade6924266296033981a96b47d5fbDaniel Sandlerpublic class PhoneStatusBarView extends PanelBar {
36fd52b18d9bf3cd62c7a07058536e9f97db65beeaJoe Onorato    private static final String TAG = "PhoneStatusBarView";
372a6ea9c2a1b52b0386270ec73e1e6d6a9b614a34Jason Monk    private static final boolean DEBUG = StatusBar.DEBUG;
38934025e8d79975444d8b93cf6a18c7d98760b3adChristoph Studer    private static final boolean DEBUG_GESTURES = false;
39198a0306e5b0ef6b02d61e299a4b4ab4c1c2cdc8Daniel Sandler
402a6ea9c2a1b52b0386270ec73e1e6d6a9b614a34Jason Monk    StatusBar mBar;
415a8aefa6c8ab2f129bc6477a49cd0876ec5d72faDaniel Sandler
429f96711e1adf4a28f961c440da1626ad40c03bc8Xiaohui Chen    boolean mIsFullyOpenedPanel = false;
437edfbca5d00cbc376fda790b50a3fedb9c6070abJohn Spurlock    private final PhoneStatusBarTransitions mBarTransitions;
44ecc798e6668046c2f67cf30c6ab1db2eba80cab1Jorim Jaggi    private ScrimController mScrimController;
453d395c69fa67732ceb2c045d03ea81efa3710afaSelim Cinek    private float mMinFraction;
463d395c69fa67732ceb2c045d03ea81efa3710afaSelim Cinek    private float mPanelFraction;
4780c2abe5bb896bd31509b201428208dd4fce8c76Selim Cinek    private Runnable mHideExpandedRunnable = new Runnable() {
4880c2abe5bb896bd31509b201428208dd4fce8c76Selim Cinek        @Override
4980c2abe5bb896bd31509b201428208dd4fce8c76Selim Cinek        public void run() {
50529c5325f0e5cd3cf97fd7431d8dc9e79d7a627fSelim Cinek            if (mPanelFraction == 0.0f) {
51529c5325f0e5cd3cf97fd7431d8dc9e79d7a627fSelim Cinek                mBar.makeExpandedInvisible();
52529c5325f0e5cd3cf97fd7431d8dc9e79d7a627fSelim Cinek            }
5380c2abe5bb896bd31509b201428208dd4fce8c76Selim Cinek        }
5480c2abe5bb896bd31509b201428208dd4fce8c76Selim Cinek    };
55aa573e9e8632552d1fa8bdd6b0ee408ff9a93a6bJason Monk    private DarkReceiver mBattery;
56119a4015f0f7ac1f63d596da158768f880f9fe9bJoe Onorato
57fd52b18d9bf3cd62c7a07058536e9f97db65beeaJoe Onorato    public PhoneStatusBarView(Context context, AttributeSet attrs) {
589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        super(context, attrs);
599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
607edfbca5d00cbc376fda790b50a3fedb9c6070abJohn Spurlock        mBarTransitions = new PhoneStatusBarTransitions(this);
61e932e30eadb5978591316ffe3d21d60604c0cd91John Spurlock    }
62e932e30eadb5978591316ffe3d21d60604c0cd91John Spurlock
63e932e30eadb5978591316ffe3d21d60604c0cd91John Spurlock    public BarTransitions getBarTransitions() {
64e932e30eadb5978591316ffe3d21d60604c0cd91John Spurlock        return mBarTransitions;
651c1edaa5f127d814058271ee4827fc0fe4a8de44Daniel Sandler    }
661c1edaa5f127d814058271ee4827fc0fe4a8de44Daniel Sandler
672a6ea9c2a1b52b0386270ec73e1e6d6a9b614a34Jason Monk    public void setBar(StatusBar bar) {
68efb0faf1c043777762eecfef87ec575632c365e1Daniel Sandler        mBar = bar;
69efb0faf1c043777762eecfef87ec575632c365e1Daniel Sandler    }
70efb0faf1c043777762eecfef87ec575632c365e1Daniel Sandler
71ecc798e6668046c2f67cf30c6ab1db2eba80cab1Jorim Jaggi    public void setScrimController(ScrimController scrimController) {
72ecc798e6668046c2f67cf30c6ab1db2eba80cab1Jorim Jaggi        mScrimController = scrimController;
73ecc798e6668046c2f67cf30c6ab1db2eba80cab1Jorim Jaggi    }
74ecc798e6668046c2f67cf30c6ab1db2eba80cab1Jorim Jaggi
75efb0faf1c043777762eecfef87ec575632c365e1Daniel Sandler    @Override
76acea100015dffbb77d137b0681d6c34992e72ae9Jorim Jaggi    public void onFinishInflate() {
77e6f0a716501e57616c8e1d809c0f60b08d21eb0aJohn Spurlock        mBarTransitions.init();
7851efddbd3bb304de2dd47fa8cd1114ac555958bbAlan Viverette        mBattery = findViewById(R.id.battery);
79aa573e9e8632552d1fa8bdd6b0ee408ff9a93a6bJason Monk    }
80aa573e9e8632552d1fa8bdd6b0ee408ff9a93a6bJason Monk
81aa573e9e8632552d1fa8bdd6b0ee408ff9a93a6bJason Monk    @Override
82aa573e9e8632552d1fa8bdd6b0ee408ff9a93a6bJason Monk    protected void onAttachedToWindow() {
83aa573e9e8632552d1fa8bdd6b0ee408ff9a93a6bJason Monk        super.onAttachedToWindow();
84aa573e9e8632552d1fa8bdd6b0ee408ff9a93a6bJason Monk        // Always have Battery meters in the status bar observe the dark/light modes.
85aa573e9e8632552d1fa8bdd6b0ee408ff9a93a6bJason Monk        Dependency.get(DarkIconDispatcher.class).addDarkReceiver(mBattery);
86aa573e9e8632552d1fa8bdd6b0ee408ff9a93a6bJason Monk    }
87aa573e9e8632552d1fa8bdd6b0ee408ff9a93a6bJason Monk
88aa573e9e8632552d1fa8bdd6b0ee408ff9a93a6bJason Monk    @Override
89aa573e9e8632552d1fa8bdd6b0ee408ff9a93a6bJason Monk    protected void onDetachedFromWindow() {
90aa573e9e8632552d1fa8bdd6b0ee408ff9a93a6bJason Monk        super.onDetachedFromWindow();
91aa573e9e8632552d1fa8bdd6b0ee408ff9a93a6bJason Monk        Dependency.get(DarkIconDispatcher.class).removeDarkReceiver(mBattery);
92efb0faf1c043777762eecfef87ec575632c365e1Daniel Sandler    }
93efb0faf1c043777762eecfef87ec575632c365e1Daniel Sandler
941c1edaa5f127d814058271ee4827fc0fe4a8de44Daniel Sandler    @Override
959f96711e1adf4a28f961c440da1626ad40c03bc8Xiaohui Chen    public boolean panelEnabled() {
969764218ff979f735aee2f1189e3547d5f3b02f83John Spurlock        return mBar.panelsEnabled();
971e8feef1faca7d2f14bf459691dbe724c8cf5c88Daniel Sandler    }
981e8feef1faca7d2f14bf459691dbe724c8cf5c88Daniel Sandler
991e8feef1faca7d2f14bf459691dbe724c8cf5c88Daniel Sandler    @Override
100a54956a0bc611b1e9b3914edc7a604b59688f6b7Alan Viverette    public boolean onRequestSendAccessibilityEventInternal(View child, AccessibilityEvent event) {
1015b0467522c8fd2e17d688e04ec592bdba9f2f012Alan Viverette        if (super.onRequestSendAccessibilityEventInternal(child, event)) {
10208d05e3d1d6ade6924266296033981a96b47d5fbDaniel Sandler            // The status bar is very small so augment the view that the user is touching
10308d05e3d1d6ade6924266296033981a96b47d5fbDaniel Sandler            // with the content of the status bar a whole. This way an accessibility service
10408d05e3d1d6ade6924266296033981a96b47d5fbDaniel Sandler            // may announce the current item as well as the entire content if appropriate.
10508d05e3d1d6ade6924266296033981a96b47d5fbDaniel Sandler            AccessibilityEvent record = AccessibilityEvent.obtain();
10608d05e3d1d6ade6924266296033981a96b47d5fbDaniel Sandler            onInitializeAccessibilityEvent(record);
10708d05e3d1d6ade6924266296033981a96b47d5fbDaniel Sandler            dispatchPopulateAccessibilityEvent(record);
10808d05e3d1d6ade6924266296033981a96b47d5fbDaniel Sandler            event.appendRecord(record);
10908d05e3d1d6ade6924266296033981a96b47d5fbDaniel Sandler            return true;
110d49258fed489bcd72a2b2a6ce3a3c38d4b2531e6Dianne Hackborn        }
11108d05e3d1d6ade6924266296033981a96b47d5fbDaniel Sandler        return false;
1129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
1139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    @Override
11508d05e3d1d6ade6924266296033981a96b47d5fbDaniel Sandler    public void onPanelPeeked() {
11608d05e3d1d6ade6924266296033981a96b47d5fbDaniel Sandler        super.onPanelPeeked();
117fa505a7f26bdf685c701e92b481602eb59d7ff56Jorim Jaggi        mBar.makeExpandedVisible(false);
11867eab79051eea2d4f8fda4a2a698900ffacfb557Daniel Sandler    }
11967eab79051eea2d4f8fda4a2a698900ffacfb557Daniel Sandler
12067eab79051eea2d4f8fda4a2a698900ffacfb557Daniel Sandler    @Override
1219f96711e1adf4a28f961c440da1626ad40c03bc8Xiaohui Chen    public void onPanelCollapsed() {
1229f96711e1adf4a28f961c440da1626ad40c03bc8Xiaohui Chen        super.onPanelCollapsed();
1232580a976ec93a01ed00fae51364ad872bc591d95Jorim Jaggi        // Close the status bar in the next frame so we can show the end of the animation.
12445e2d8faed70252f8c5535ed9dee903b45f60ac1Jorim Jaggi        post(mHideExpandedRunnable);
1259f96711e1adf4a28f961c440da1626ad40c03bc8Xiaohui Chen        mIsFullyOpenedPanel = false;
1268e72c9e19cfb0b6c1463fa841f1dd02be8f3b4e1Daniel Sandler    }
1278e72c9e19cfb0b6c1463fa841f1dd02be8f3b4e1Daniel Sandler
12880c2abe5bb896bd31509b201428208dd4fce8c76Selim Cinek    public void removePendingHideExpandedRunnables() {
12945e2d8faed70252f8c5535ed9dee903b45f60ac1Jorim Jaggi        removeCallbacks(mHideExpandedRunnable);
13080c2abe5bb896bd31509b201428208dd4fce8c76Selim Cinek    }
13180c2abe5bb896bd31509b201428208dd4fce8c76Selim Cinek
1328e72c9e19cfb0b6c1463fa841f1dd02be8f3b4e1Daniel Sandler    @Override
1339f96711e1adf4a28f961c440da1626ad40c03bc8Xiaohui Chen    public void onPanelFullyOpened() {
1349f96711e1adf4a28f961c440da1626ad40c03bc8Xiaohui Chen        super.onPanelFullyOpened();
1359f96711e1adf4a28f961c440da1626ad40c03bc8Xiaohui Chen        if (!mIsFullyOpenedPanel) {
1369f96711e1adf4a28f961c440da1626ad40c03bc8Xiaohui Chen            mPanel.sendAccessibilityEvent(AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED);
137bac221ff0b9e1406f95f23c9a5c3b580ece10eabCasey Burkhardt        }
1389f96711e1adf4a28f961c440da1626ad40c03bc8Xiaohui Chen        mIsFullyOpenedPanel = true;
1399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
1409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    @Override
1429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public boolean onTouchEvent(MotionEvent event) {
14364161ccb2f3341ebe1675e38a999250c7967d0adChris Wren        boolean barConsumedEvent = mBar.interceptTouchEvent(event);
14464161ccb2f3341ebe1675e38a999250c7967d0adChris Wren
14564161ccb2f3341ebe1675e38a999250c7967d0adChris Wren        if (DEBUG_GESTURES) {
14664161ccb2f3341ebe1675e38a999250c7967d0adChris Wren            if (event.getActionMasked() != MotionEvent.ACTION_MOVE) {
14764161ccb2f3341ebe1675e38a999250c7967d0adChris Wren                EventLog.writeEvent(EventLogTags.SYSUI_PANELBAR_TOUCH,
14864161ccb2f3341ebe1675e38a999250c7967d0adChris Wren                        event.getActionMasked(), (int) event.getX(), (int) event.getY(),
14964161ccb2f3341ebe1675e38a999250c7967d0adChris Wren                        barConsumedEvent ? 1 : 0);
15064161ccb2f3341ebe1675e38a999250c7967d0adChris Wren            }
15164161ccb2f3341ebe1675e38a999250c7967d0adChris Wren        }
15264161ccb2f3341ebe1675e38a999250c7967d0adChris Wren
15364161ccb2f3341ebe1675e38a999250c7967d0adChris Wren        return barConsumedEvent || super.onTouchEvent(event);
1549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
1559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    @Override
1579f96711e1adf4a28f961c440da1626ad40c03bc8Xiaohui Chen    public void onTrackingStarted() {
1589f96711e1adf4a28f961c440da1626ad40c03bc8Xiaohui Chen        super.onTrackingStarted();
159e70d31f48d1c123544eb5e72b7b007d81ae8d8c9Jorim Jaggi        mBar.onTrackingStarted();
160ecc798e6668046c2f67cf30c6ab1db2eba80cab1Jorim Jaggi        mScrimController.onTrackingStarted();
161529c5325f0e5cd3cf97fd7431d8dc9e79d7a627fSelim Cinek        removePendingHideExpandedRunnables();
162e70d31f48d1c123544eb5e72b7b007d81ae8d8c9Jorim Jaggi    }
163e70d31f48d1c123544eb5e72b7b007d81ae8d8c9Jorim Jaggi
164e70d31f48d1c123544eb5e72b7b007d81ae8d8c9Jorim Jaggi    @Override
165dbbcfbe8aea1944fc0b0ecbf531034bcd5b5770aSelim Cinek    public void onClosingFinished() {
166dbbcfbe8aea1944fc0b0ecbf531034bcd5b5770aSelim Cinek        super.onClosingFinished();
167dbbcfbe8aea1944fc0b0ecbf531034bcd5b5770aSelim Cinek        mBar.onClosingFinished();
168dbbcfbe8aea1944fc0b0ecbf531034bcd5b5770aSelim Cinek    }
169dbbcfbe8aea1944fc0b0ecbf531034bcd5b5770aSelim Cinek
170dbbcfbe8aea1944fc0b0ecbf531034bcd5b5770aSelim Cinek    @Override
1719f96711e1adf4a28f961c440da1626ad40c03bc8Xiaohui Chen    public void onTrackingStopped(boolean expand) {
1729f96711e1adf4a28f961c440da1626ad40c03bc8Xiaohui Chen        super.onTrackingStopped(expand);
1732fbad7b6a724cf0a5b98b66fe639d58f5ab10af3Jorim Jaggi        mBar.onTrackingStopped(expand);
1742fbad7b6a724cf0a5b98b66fe639d58f5ab10af3Jorim Jaggi    }
1752fbad7b6a724cf0a5b98b66fe639d58f5ab10af3Jorim Jaggi
1762fbad7b6a724cf0a5b98b66fe639d58f5ab10af3Jorim Jaggi    @Override
1772fbad7b6a724cf0a5b98b66fe639d58f5ab10af3Jorim Jaggi    public void onExpandingFinished() {
1782fbad7b6a724cf0a5b98b66fe639d58f5ab10af3Jorim Jaggi        super.onExpandingFinished();
1792fbad7b6a724cf0a5b98b66fe639d58f5ab10af3Jorim Jaggi        mScrimController.onExpandingFinished();
180e70d31f48d1c123544eb5e72b7b007d81ae8d8c9Jorim Jaggi    }
181e70d31f48d1c123544eb5e72b7b007d81ae8d8c9Jorim Jaggi
182e70d31f48d1c123544eb5e72b7b007d81ae8d8c9Jorim Jaggi    @Override
1839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public boolean onInterceptTouchEvent(MotionEvent event) {
18408d05e3d1d6ade6924266296033981a96b47d5fbDaniel Sandler        return mBar.interceptTouchEvent(event) || super.onInterceptTouchEvent(event);
1859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
1869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1876179ea3196e9306d3f14361fe9ef14191b1edba6Svetoslav Ganov    @Override
1883d395c69fa67732ceb2c045d03ea81efa3710afaSelim Cinek    public void panelScrimMinFractionChanged(float minFraction) {
1893d395c69fa67732ceb2c045d03ea81efa3710afaSelim Cinek        if (mMinFraction != minFraction) {
1903d395c69fa67732ceb2c045d03ea81efa3710afaSelim Cinek            mMinFraction = minFraction;
1913d395c69fa67732ceb2c045d03ea81efa3710afaSelim Cinek            updateScrimFraction();
1923d395c69fa67732ceb2c045d03ea81efa3710afaSelim Cinek        }
1933d395c69fa67732ceb2c045d03ea81efa3710afaSelim Cinek    }
1943d395c69fa67732ceb2c045d03ea81efa3710afaSelim Cinek
1953d395c69fa67732ceb2c045d03ea81efa3710afaSelim Cinek    @Override
1969f96711e1adf4a28f961c440da1626ad40c03bc8Xiaohui Chen    public void panelExpansionChanged(float frac, boolean expanded) {
1979f96711e1adf4a28f961c440da1626ad40c03bc8Xiaohui Chen        super.panelExpansionChanged(frac, expanded);
1983d395c69fa67732ceb2c045d03ea81efa3710afaSelim Cinek        mPanelFraction = frac;
1993d395c69fa67732ceb2c045d03ea81efa3710afaSelim Cinek        updateScrimFraction();
2003d395c69fa67732ceb2c045d03ea81efa3710afaSelim Cinek    }
2013d395c69fa67732ceb2c045d03ea81efa3710afaSelim Cinek
2023d395c69fa67732ceb2c045d03ea81efa3710afaSelim Cinek    private void updateScrimFraction() {
203ae76b4c2f71ee6c2ad5f8d5c266f0addaf487f20Selim Cinek        float scrimFraction = mPanelFraction;
204ae76b4c2f71ee6c2ad5f8d5c266f0addaf487f20Selim Cinek        if (mMinFraction < 1.0f) {
205ae76b4c2f71ee6c2ad5f8d5c266f0addaf487f20Selim Cinek            scrimFraction = Math.max((mPanelFraction - mMinFraction) / (1.0f - mMinFraction),
206ae76b4c2f71ee6c2ad5f8d5c266f0addaf487f20Selim Cinek                    0);
207ae76b4c2f71ee6c2ad5f8d5c266f0addaf487f20Selim Cinek        }
2083d395c69fa67732ceb2c045d03ea81efa3710afaSelim Cinek        mScrimController.setPanelExpansion(scrimFraction);
2096179ea3196e9306d3f14361fe9ef14191b1edba6Svetoslav Ganov    }
2103e7592d0cbbde5b0b85d98b82d991ee5d2aab8a9Selim Cinek
2113e7592d0cbbde5b0b85d98b82d991ee5d2aab8a9Selim Cinek    public void onDensityOrFontScaleChanged() {
2123e7592d0cbbde5b0b85d98b82d991ee5d2aab8a9Selim Cinek        ViewGroup.LayoutParams layoutParams = getLayoutParams();
2133e7592d0cbbde5b0b85d98b82d991ee5d2aab8a9Selim Cinek        layoutParams.height = getResources().getDimensionPixelSize(
2143e7592d0cbbde5b0b85d98b82d991ee5d2aab8a9Selim Cinek                R.dimen.status_bar_height);
2153e7592d0cbbde5b0b85d98b82d991ee5d2aab8a9Selim Cinek        setLayoutParams(layoutParams);
2163e7592d0cbbde5b0b85d98b82d991ee5d2aab8a9Selim Cinek    }
2176179ea3196e9306d3f14361fe9ef14191b1edba6Svetoslav Ganov}
218