1fc780bab91bd4275ae2c3b75c3dfb327e008e4dbChris Banes/* 29d42ab847a9187fe54c53553a0593fad0aea9263Chris Banes * Copyright (C) 2015 The Android Open Source Project 3fc780bab91bd4275ae2c3b75c3dfb327e008e4dbChris Banes * 4fc780bab91bd4275ae2c3b75c3dfb327e008e4dbChris Banes * Licensed under the Apache License, Version 2.0 (the "License"); 5fc780bab91bd4275ae2c3b75c3dfb327e008e4dbChris Banes * you may not use this file except in compliance with the License. 6fc780bab91bd4275ae2c3b75c3dfb327e008e4dbChris Banes * You may obtain a copy of the License at 7fc780bab91bd4275ae2c3b75c3dfb327e008e4dbChris Banes * 8fc780bab91bd4275ae2c3b75c3dfb327e008e4dbChris Banes * http://www.apache.org/licenses/LICENSE-2.0 9fc780bab91bd4275ae2c3b75c3dfb327e008e4dbChris Banes * 10fc780bab91bd4275ae2c3b75c3dfb327e008e4dbChris Banes * Unless required by applicable law or agreed to in writing, software 11fc780bab91bd4275ae2c3b75c3dfb327e008e4dbChris Banes * distributed under the License is distributed on an "AS IS" BASIS, 12fc780bab91bd4275ae2c3b75c3dfb327e008e4dbChris Banes * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13fc780bab91bd4275ae2c3b75c3dfb327e008e4dbChris Banes * See the License for the specific language governing permissions and 14fc780bab91bd4275ae2c3b75c3dfb327e008e4dbChris Banes * limitations under the License. 15fc780bab91bd4275ae2c3b75c3dfb327e008e4dbChris Banes */ 16fc780bab91bd4275ae2c3b75c3dfb327e008e4dbChris Banes 17fc780bab91bd4275ae2c3b75c3dfb327e008e4dbChris Banespackage android.support.design.widget; 18fc780bab91bd4275ae2c3b75c3dfb327e008e4dbChris Banes 19fc780bab91bd4275ae2c3b75c3dfb327e008e4dbChris Banesimport android.content.Context; 20fc780bab91bd4275ae2c3b75c3dfb327e008e4dbChris Banesimport android.util.AttributeSet; 219d42ab847a9187fe54c53553a0593fad0aea9263Chris Banesimport android.widget.ImageButton; 22fc780bab91bd4275ae2c3b75c3dfb327e008e4dbChris Banes 231711e8729c1b901b73f530e87b7c9cc9370f33beChris Banesclass VisibilityAwareImageButton extends ImageButton { 24fc780bab91bd4275ae2c3b75c3dfb327e008e4dbChris Banes 25fc780bab91bd4275ae2c3b75c3dfb327e008e4dbChris Banes private int mUserSetVisibility; 26fc780bab91bd4275ae2c3b75c3dfb327e008e4dbChris Banes 27fc780bab91bd4275ae2c3b75c3dfb327e008e4dbChris Banes public VisibilityAwareImageButton(Context context) { 28fc780bab91bd4275ae2c3b75c3dfb327e008e4dbChris Banes this(context, null); 29fc780bab91bd4275ae2c3b75c3dfb327e008e4dbChris Banes } 30fc780bab91bd4275ae2c3b75c3dfb327e008e4dbChris Banes 31fc780bab91bd4275ae2c3b75c3dfb327e008e4dbChris Banes public VisibilityAwareImageButton(Context context, AttributeSet attrs) { 32fc780bab91bd4275ae2c3b75c3dfb327e008e4dbChris Banes this(context, attrs, 0); 33fc780bab91bd4275ae2c3b75c3dfb327e008e4dbChris Banes } 34fc780bab91bd4275ae2c3b75c3dfb327e008e4dbChris Banes 35fc780bab91bd4275ae2c3b75c3dfb327e008e4dbChris Banes public VisibilityAwareImageButton(Context context, AttributeSet attrs, int defStyleAttr) { 36fc780bab91bd4275ae2c3b75c3dfb327e008e4dbChris Banes super(context, attrs, defStyleAttr); 37fc780bab91bd4275ae2c3b75c3dfb327e008e4dbChris Banes mUserSetVisibility = getVisibility(); 38fc780bab91bd4275ae2c3b75c3dfb327e008e4dbChris Banes } 39fc780bab91bd4275ae2c3b75c3dfb327e008e4dbChris Banes 40fc780bab91bd4275ae2c3b75c3dfb327e008e4dbChris Banes @Override 41fc780bab91bd4275ae2c3b75c3dfb327e008e4dbChris Banes public void setVisibility(int visibility) { 42fc780bab91bd4275ae2c3b75c3dfb327e008e4dbChris Banes internalSetVisibility(visibility, true); 43fc780bab91bd4275ae2c3b75c3dfb327e008e4dbChris Banes } 44fc780bab91bd4275ae2c3b75c3dfb327e008e4dbChris Banes 45fc780bab91bd4275ae2c3b75c3dfb327e008e4dbChris Banes final void internalSetVisibility(int visibility, boolean fromUser) { 46fc780bab91bd4275ae2c3b75c3dfb327e008e4dbChris Banes super.setVisibility(visibility); 47fc780bab91bd4275ae2c3b75c3dfb327e008e4dbChris Banes if (fromUser) { 48fc780bab91bd4275ae2c3b75c3dfb327e008e4dbChris Banes mUserSetVisibility = visibility; 49fc780bab91bd4275ae2c3b75c3dfb327e008e4dbChris Banes } 50fc780bab91bd4275ae2c3b75c3dfb327e008e4dbChris Banes } 51fc780bab91bd4275ae2c3b75c3dfb327e008e4dbChris Banes 52fc780bab91bd4275ae2c3b75c3dfb327e008e4dbChris Banes final int getUserSetVisibility() { 53fc780bab91bd4275ae2c3b75c3dfb327e008e4dbChris Banes return mUserSetVisibility; 54fc780bab91bd4275ae2c3b75c3dfb327e008e4dbChris Banes } 55fc780bab91bd4275ae2c3b75c3dfb327e008e4dbChris Banes} 56