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