19a6522f6c6fc607321a4aa1ea0cc4293c5c744d5Yuichi Araki/* 29a6522f6c6fc607321a4aa1ea0cc4293c5c744d5Yuichi Araki * Copyright (C) 2015 The Android Open Source Project 39a6522f6c6fc607321a4aa1ea0cc4293c5c744d5Yuichi Araki * 49a6522f6c6fc607321a4aa1ea0cc4293c5c744d5Yuichi Araki * Licensed under the Apache License, Version 2.0 (the "License"); 59a6522f6c6fc607321a4aa1ea0cc4293c5c744d5Yuichi Araki * you may not use this file except in compliance with the License. 69a6522f6c6fc607321a4aa1ea0cc4293c5c744d5Yuichi Araki * You may obtain a copy of the License at 79a6522f6c6fc607321a4aa1ea0cc4293c5c744d5Yuichi Araki * 89a6522f6c6fc607321a4aa1ea0cc4293c5c744d5Yuichi Araki * http://www.apache.org/licenses/LICENSE-2.0 99a6522f6c6fc607321a4aa1ea0cc4293c5c744d5Yuichi Araki * 109a6522f6c6fc607321a4aa1ea0cc4293c5c744d5Yuichi Araki * Unless required by applicable law or agreed to in writing, software 119a6522f6c6fc607321a4aa1ea0cc4293c5c744d5Yuichi Araki * distributed under the License is distributed on an "AS IS" BASIS, 129a6522f6c6fc607321a4aa1ea0cc4293c5c744d5Yuichi Araki * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 139a6522f6c6fc607321a4aa1ea0cc4293c5c744d5Yuichi Araki * See the License for the specific language governing permissions and 149a6522f6c6fc607321a4aa1ea0cc4293c5c744d5Yuichi Araki * limitations under the License. 159a6522f6c6fc607321a4aa1ea0cc4293c5c744d5Yuichi Araki */ 169a6522f6c6fc607321a4aa1ea0cc4293c5c744d5Yuichi Araki 179a6522f6c6fc607321a4aa1ea0cc4293c5c744d5Yuichi Arakipackage com.example.android.support.design.widget; 189a6522f6c6fc607321a4aa1ea0cc4293c5c744d5Yuichi Araki 199a6522f6c6fc607321a4aa1ea0cc4293c5c744d5Yuichi Arakiimport android.os.Bundle; 209a6522f6c6fc607321a4aa1ea0cc4293c5c744d5Yuichi Arakiimport android.view.View; 219a6522f6c6fc607321a4aa1ea0cc4293c5c744d5Yuichi Arakiimport android.widget.Button; 229a6522f6c6fc607321a4aa1ea0cc4293c5c744d5Yuichi Arakiimport android.widget.TextView; 239a6522f6c6fc607321a4aa1ea0cc4293c5c744d5Yuichi Araki 24def582a5836579a3fadabfdbe4413cb1652bf098Aurimas Liutikasimport androidx.annotation.NonNull; 25def582a5836579a3fadabfdbe4413cb1652bf098Aurimas Liutikasimport androidx.annotation.Nullable; 26def582a5836579a3fadabfdbe4413cb1652bf098Aurimas Liutikas 27def582a5836579a3fadabfdbe4413cb1652bf098Aurimas Liutikasimport com.example.android.support.design.R; 28f87e4dfc7bcd2583e7908ca3cda65cec6c697080Aurimas Liutikasimport com.google.android.material.bottomsheet.BottomSheetBehavior; 29def582a5836579a3fadabfdbe4413cb1652bf098Aurimas Liutikas 309a6522f6c6fc607321a4aa1ea0cc4293c5c744d5Yuichi Araki 319a6522f6c6fc607321a4aa1ea0cc4293c5c744d5Yuichi Araki/** 329a6522f6c6fc607321a4aa1ea0cc4293c5c744d5Yuichi Araki * This demonstrates basic usage of hideable {@link BottomSheetBehavior}. 339a6522f6c6fc607321a4aa1ea0cc4293c5c744d5Yuichi Araki */ 349a6522f6c6fc607321a4aa1ea0cc4293c5c744d5Yuichi Arakipublic class BottomSheetHideable extends BottomSheetUsageBase { 359a6522f6c6fc607321a4aa1ea0cc4293c5c744d5Yuichi Araki 369a6522f6c6fc607321a4aa1ea0cc4293c5c744d5Yuichi Araki private TextView mTextSlideOffset; 379a6522f6c6fc607321a4aa1ea0cc4293c5c744d5Yuichi Araki 389a6522f6c6fc607321a4aa1ea0cc4293c5c744d5Yuichi Araki private Button mToggle; 399a6522f6c6fc607321a4aa1ea0cc4293c5c744d5Yuichi Araki 409a6522f6c6fc607321a4aa1ea0cc4293c5c744d5Yuichi Araki @Override 419a6522f6c6fc607321a4aa1ea0cc4293c5c744d5Yuichi Araki protected int getLayoutId() { 429a6522f6c6fc607321a4aa1ea0cc4293c5c744d5Yuichi Araki return R.layout.design_bottom_sheet_hideable; 439a6522f6c6fc607321a4aa1ea0cc4293c5c744d5Yuichi Araki } 449a6522f6c6fc607321a4aa1ea0cc4293c5c744d5Yuichi Araki 459a6522f6c6fc607321a4aa1ea0cc4293c5c744d5Yuichi Araki @Override 469a6522f6c6fc607321a4aa1ea0cc4293c5c744d5Yuichi Araki protected void onCreate(@Nullable Bundle savedInstanceState) { 479a6522f6c6fc607321a4aa1ea0cc4293c5c744d5Yuichi Araki super.onCreate(savedInstanceState); 48fa2e2acf79d791a90410025daad438968550d18cAlan Viverette mTextSlideOffset = findViewById(R.id.slide_offset); 49fa2e2acf79d791a90410025daad438968550d18cAlan Viverette mToggle = findViewById(R.id.toggle); 509a6522f6c6fc607321a4aa1ea0cc4293c5c744d5Yuichi Araki mToggle.setOnClickListener(mOnClickListener); 51fadea5f263e79d628f1bd9afae1f3098fb048b1eYuichi Araki mBehavior.setBottomSheetCallback(new BottomSheetBehavior.BottomSheetCallback() { 529a6522f6c6fc607321a4aa1ea0cc4293c5c744d5Yuichi Araki @Override 53aa0bf034fe33173410445bde8f64b220282d5b13Yuichi Araki public void onStateChanged(@NonNull View bottomSheet, 54aa0bf034fe33173410445bde8f64b220282d5b13Yuichi Araki @BottomSheetBehavior.State int newState) { 559a6522f6c6fc607321a4aa1ea0cc4293c5c744d5Yuichi Araki switch (newState) { 569a6522f6c6fc607321a4aa1ea0cc4293c5c744d5Yuichi Araki case BottomSheetBehavior.STATE_HIDDEN: 579a6522f6c6fc607321a4aa1ea0cc4293c5c744d5Yuichi Araki mToggle.setText(R.string.bottomsheet_show); 589a6522f6c6fc607321a4aa1ea0cc4293c5c744d5Yuichi Araki mToggle.setEnabled(true); 599a6522f6c6fc607321a4aa1ea0cc4293c5c744d5Yuichi Araki break; 609a6522f6c6fc607321a4aa1ea0cc4293c5c744d5Yuichi Araki case BottomSheetBehavior.STATE_EXPANDED: 619a6522f6c6fc607321a4aa1ea0cc4293c5c744d5Yuichi Araki case BottomSheetBehavior.STATE_COLLAPSED: 629a6522f6c6fc607321a4aa1ea0cc4293c5c744d5Yuichi Araki mToggle.setText(R.string.bottomsheet_hide); 639a6522f6c6fc607321a4aa1ea0cc4293c5c744d5Yuichi Araki mToggle.setEnabled(true); 649a6522f6c6fc607321a4aa1ea0cc4293c5c744d5Yuichi Araki break; 659a6522f6c6fc607321a4aa1ea0cc4293c5c744d5Yuichi Araki } 669a6522f6c6fc607321a4aa1ea0cc4293c5c744d5Yuichi Araki } 679a6522f6c6fc607321a4aa1ea0cc4293c5c744d5Yuichi Araki 689a6522f6c6fc607321a4aa1ea0cc4293c5c744d5Yuichi Araki @Override 69aa0bf034fe33173410445bde8f64b220282d5b13Yuichi Araki public void onSlide(@NonNull View bottomSheet, float slideOffset) { 709a6522f6c6fc607321a4aa1ea0cc4293c5c744d5Yuichi Araki mTextSlideOffset.setText(String.valueOf(slideOffset)); 719a6522f6c6fc607321a4aa1ea0cc4293c5c744d5Yuichi Araki } 729a6522f6c6fc607321a4aa1ea0cc4293c5c744d5Yuichi Araki }); 739a6522f6c6fc607321a4aa1ea0cc4293c5c744d5Yuichi Araki } 749a6522f6c6fc607321a4aa1ea0cc4293c5c744d5Yuichi Araki 759a6522f6c6fc607321a4aa1ea0cc4293c5c744d5Yuichi Araki private View.OnClickListener mOnClickListener = new View.OnClickListener() { 769a6522f6c6fc607321a4aa1ea0cc4293c5c744d5Yuichi Araki @Override 779a6522f6c6fc607321a4aa1ea0cc4293c5c744d5Yuichi Araki public void onClick(View v) { 789a6522f6c6fc607321a4aa1ea0cc4293c5c744d5Yuichi Araki if (v.getId() == R.id.toggle && mBehavior != null) { 799a6522f6c6fc607321a4aa1ea0cc4293c5c744d5Yuichi Araki mToggle.setEnabled(false); 809a6522f6c6fc607321a4aa1ea0cc4293c5c744d5Yuichi Araki if (mBehavior.getState() == BottomSheetBehavior.STATE_HIDDEN) { 819a6522f6c6fc607321a4aa1ea0cc4293c5c744d5Yuichi Araki mBehavior.setState(BottomSheetBehavior.STATE_COLLAPSED); 829a6522f6c6fc607321a4aa1ea0cc4293c5c744d5Yuichi Araki } else { 839a6522f6c6fc607321a4aa1ea0cc4293c5c744d5Yuichi Araki mBehavior.setState(BottomSheetBehavior.STATE_HIDDEN); 849a6522f6c6fc607321a4aa1ea0cc4293c5c744d5Yuichi Araki } 859a6522f6c6fc607321a4aa1ea0cc4293c5c744d5Yuichi Araki } 869a6522f6c6fc607321a4aa1ea0cc4293c5c744d5Yuichi Araki } 879a6522f6c6fc607321a4aa1ea0cc4293c5c744d5Yuichi Araki }; 889a6522f6c6fc607321a4aa1ea0cc4293c5c744d5Yuichi Araki 899a6522f6c6fc607321a4aa1ea0cc4293c5c744d5Yuichi Araki} 90