15ee7b3de4f2bbecd3eb7e346809250d9ca806a9eKirill Grouchnikov/* 25ee7b3de4f2bbecd3eb7e346809250d9ca806a9eKirill Grouchnikov * Copyright (C) 2016 The Android Open Source Project 35ee7b3de4f2bbecd3eb7e346809250d9ca806a9eKirill Grouchnikov * 45ee7b3de4f2bbecd3eb7e346809250d9ca806a9eKirill Grouchnikov * Licensed under the Apache License, Version 2.0 (the "License"); 55ee7b3de4f2bbecd3eb7e346809250d9ca806a9eKirill Grouchnikov * you may not use this file except in compliance with the License. 65ee7b3de4f2bbecd3eb7e346809250d9ca806a9eKirill Grouchnikov * You may obtain a copy of the License at 75ee7b3de4f2bbecd3eb7e346809250d9ca806a9eKirill Grouchnikov * 85ee7b3de4f2bbecd3eb7e346809250d9ca806a9eKirill Grouchnikov * http://www.apache.org/licenses/LICENSE-2.0 95ee7b3de4f2bbecd3eb7e346809250d9ca806a9eKirill Grouchnikov * 105ee7b3de4f2bbecd3eb7e346809250d9ca806a9eKirill Grouchnikov * Unless required by applicable law or agreed to in writing, software 115ee7b3de4f2bbecd3eb7e346809250d9ca806a9eKirill Grouchnikov * distributed under the License is distributed on an "AS IS" BASIS, 125ee7b3de4f2bbecd3eb7e346809250d9ca806a9eKirill Grouchnikov * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 135ee7b3de4f2bbecd3eb7e346809250d9ca806a9eKirill Grouchnikov * See the License for the specific language governing permissions and 145ee7b3de4f2bbecd3eb7e346809250d9ca806a9eKirill Grouchnikov * limitations under the License. 155ee7b3de4f2bbecd3eb7e346809250d9ca806a9eKirill Grouchnikov */ 1637847549af8a990fec26accc45b771141ff9ddb5Kirill Grouchnikovpackage android.support.design.custom; 175ee7b3de4f2bbecd3eb7e346809250d9ca806a9eKirill Grouchnikov 185ee7b3de4f2bbecd3eb7e346809250d9ca806a9eKirill Grouchnikovimport android.content.Context; 1937847549af8a990fec26accc45b771141ff9ddb5Kirill Grouchnikovimport android.support.design.widget.CoordinatorLayout; 2037847549af8a990fec26accc45b771141ff9ddb5Kirill Grouchnikovimport android.support.design.widget.Snackbar; 215ee7b3de4f2bbecd3eb7e346809250d9ca806a9eKirill Grouchnikovimport android.support.v4.view.ViewCompat; 225ee7b3de4f2bbecd3eb7e346809250d9ca806a9eKirill Grouchnikovimport android.util.AttributeSet; 235ee7b3de4f2bbecd3eb7e346809250d9ca806a9eKirill Grouchnikovimport android.view.View; 245ee7b3de4f2bbecd3eb7e346809250d9ca806a9eKirill Grouchnikovimport android.widget.TextView; 255ee7b3de4f2bbecd3eb7e346809250d9ca806a9eKirill Grouchnikov 265ee7b3de4f2bbecd3eb7e346809250d9ca806a9eKirill Grouchnikovpublic class TestFloatingBehavior extends CoordinatorLayout.Behavior<TextView> { 2737847549af8a990fec26accc45b771141ff9ddb5Kirill Grouchnikov // Default constructor is needed to instantiate a Behavior object when it is attached 2837847549af8a990fec26accc45b771141ff9ddb5Kirill Grouchnikov // to custom view class as class-level annotation 2937847549af8a990fec26accc45b771141ff9ddb5Kirill Grouchnikov public TestFloatingBehavior() { 3037847549af8a990fec26accc45b771141ff9ddb5Kirill Grouchnikov } 3137847549af8a990fec26accc45b771141ff9ddb5Kirill Grouchnikov 3237847549af8a990fec26accc45b771141ff9ddb5Kirill Grouchnikov // This constructor is needed to instantiate a Behavior object when it is attached to a 3337847549af8a990fec26accc45b771141ff9ddb5Kirill Grouchnikov // view via layout_behavior XML attribute 345ee7b3de4f2bbecd3eb7e346809250d9ca806a9eKirill Grouchnikov public TestFloatingBehavior(Context context, AttributeSet attrs) { 355ee7b3de4f2bbecd3eb7e346809250d9ca806a9eKirill Grouchnikov } 365ee7b3de4f2bbecd3eb7e346809250d9ca806a9eKirill Grouchnikov 375ee7b3de4f2bbecd3eb7e346809250d9ca806a9eKirill Grouchnikov @Override 385ee7b3de4f2bbecd3eb7e346809250d9ca806a9eKirill Grouchnikov public boolean layoutDependsOn(CoordinatorLayout parent, TextView child, View dependency) { 395ee7b3de4f2bbecd3eb7e346809250d9ca806a9eKirill Grouchnikov return dependency instanceof Snackbar.SnackbarLayout; 405ee7b3de4f2bbecd3eb7e346809250d9ca806a9eKirill Grouchnikov } 415ee7b3de4f2bbecd3eb7e346809250d9ca806a9eKirill Grouchnikov 425ee7b3de4f2bbecd3eb7e346809250d9ca806a9eKirill Grouchnikov @Override 435ee7b3de4f2bbecd3eb7e346809250d9ca806a9eKirill Grouchnikov public boolean onDependentViewChanged(CoordinatorLayout parent, TextView child, 445ee7b3de4f2bbecd3eb7e346809250d9ca806a9eKirill Grouchnikov View dependency) { 455ee7b3de4f2bbecd3eb7e346809250d9ca806a9eKirill Grouchnikov ViewCompat.setTranslationY(child, Math.min(0, 465ee7b3de4f2bbecd3eb7e346809250d9ca806a9eKirill Grouchnikov ViewCompat.getTranslationY(dependency) - dependency.getHeight())); 475ee7b3de4f2bbecd3eb7e346809250d9ca806a9eKirill Grouchnikov return true; 485ee7b3de4f2bbecd3eb7e346809250d9ca806a9eKirill Grouchnikov } 495ee7b3de4f2bbecd3eb7e346809250d9ca806a9eKirill Grouchnikov} 50