1c163f50b32db8a5241368ee20d4c0e80cd61efeaYuichi Araki/* 2c163f50b32db8a5241368ee20d4c0e80cd61efeaYuichi Araki * Copyright (C) 2015 The Android Open Source Project 3c163f50b32db8a5241368ee20d4c0e80cd61efeaYuichi Araki * 4c163f50b32db8a5241368ee20d4c0e80cd61efeaYuichi Araki * Licensed under the Apache License, Version 2.0 (the "License"); 5c163f50b32db8a5241368ee20d4c0e80cd61efeaYuichi Araki * you may not use this file except in compliance with the License. 6c163f50b32db8a5241368ee20d4c0e80cd61efeaYuichi Araki * You may obtain a copy of the License at 7c163f50b32db8a5241368ee20d4c0e80cd61efeaYuichi Araki * 8c163f50b32db8a5241368ee20d4c0e80cd61efeaYuichi Araki * http://www.apache.org/licenses/LICENSE-2.0 9c163f50b32db8a5241368ee20d4c0e80cd61efeaYuichi Araki * 10c163f50b32db8a5241368ee20d4c0e80cd61efeaYuichi Araki * Unless required by applicable law or agreed to in writing, software 11c163f50b32db8a5241368ee20d4c0e80cd61efeaYuichi Araki * distributed under the License is distributed on an "AS IS" BASIS, 12c163f50b32db8a5241368ee20d4c0e80cd61efeaYuichi Araki * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13c163f50b32db8a5241368ee20d4c0e80cd61efeaYuichi Araki * See the License for the specific language governing permissions and 14c163f50b32db8a5241368ee20d4c0e80cd61efeaYuichi Araki * limitations under the License. 15c163f50b32db8a5241368ee20d4c0e80cd61efeaYuichi Araki */ 16c163f50b32db8a5241368ee20d4c0e80cd61efeaYuichi Araki 17c163f50b32db8a5241368ee20d4c0e80cd61efeaYuichi Arakipackage com.example.android.support.design.widget; 18c163f50b32db8a5241368ee20d4c0e80cd61efeaYuichi Araki 19c163f50b32db8a5241368ee20d4c0e80cd61efeaYuichi Arakiimport com.example.android.support.design.R; 20c163f50b32db8a5241368ee20d4c0e80cd61efeaYuichi Arakiimport com.example.android.support.design.Shakespeare; 21c163f50b32db8a5241368ee20d4c0e80cd61efeaYuichi Araki 22c163f50b32db8a5241368ee20d4c0e80cd61efeaYuichi Arakiimport android.os.Bundle; 23c163f50b32db8a5241368ee20d4c0e80cd61efeaYuichi Arakiimport android.support.annotation.Nullable; 24c163f50b32db8a5241368ee20d4c0e80cd61efeaYuichi Arakiimport android.support.design.widget.BottomSheetBehavior; 25c163f50b32db8a5241368ee20d4c0e80cd61efeaYuichi Arakiimport android.support.v7.app.AppCompatActivity; 26c163f50b32db8a5241368ee20d4c0e80cd61efeaYuichi Arakiimport android.text.TextUtils; 27c163f50b32db8a5241368ee20d4c0e80cd61efeaYuichi Arakiimport android.widget.LinearLayout; 28c163f50b32db8a5241368ee20d4c0e80cd61efeaYuichi Arakiimport android.widget.TextView; 29c163f50b32db8a5241368ee20d4c0e80cd61efeaYuichi Araki 30c163f50b32db8a5241368ee20d4c0e80cd61efeaYuichi Araki/** 31c163f50b32db8a5241368ee20d4c0e80cd61efeaYuichi Araki * This demonstrates basic usage of {@link BottomSheetBehavior}. 32c163f50b32db8a5241368ee20d4c0e80cd61efeaYuichi Araki */ 339a6522f6c6fc607321a4aa1ea0cc4293c5c744d5Yuichi Arakiabstract class BottomSheetUsageBase extends AppCompatActivity { 34c163f50b32db8a5241368ee20d4c0e80cd61efeaYuichi Araki 359a6522f6c6fc607321a4aa1ea0cc4293c5c744d5Yuichi Araki protected BottomSheetBehavior<LinearLayout> mBehavior; 36c163f50b32db8a5241368ee20d4c0e80cd61efeaYuichi Araki 37c163f50b32db8a5241368ee20d4c0e80cd61efeaYuichi Araki @Override 38c163f50b32db8a5241368ee20d4c0e80cd61efeaYuichi Araki protected void onCreate(@Nullable Bundle savedInstanceState) { 39c163f50b32db8a5241368ee20d4c0e80cd61efeaYuichi Araki super.onCreate(savedInstanceState); 409a6522f6c6fc607321a4aa1ea0cc4293c5c744d5Yuichi Araki setContentView(getLayoutId()); 41c163f50b32db8a5241368ee20d4c0e80cd61efeaYuichi Araki ((TextView) findViewById(R.id.dialogue)).setText(TextUtils.concat(Shakespeare.DIALOGUE)); 42c163f50b32db8a5241368ee20d4c0e80cd61efeaYuichi Araki mBehavior = BottomSheetBehavior.from((LinearLayout) findViewById(R.id.bottom_sheet)); 43c163f50b32db8a5241368ee20d4c0e80cd61efeaYuichi Araki } 44c163f50b32db8a5241368ee20d4c0e80cd61efeaYuichi Araki 45c163f50b32db8a5241368ee20d4c0e80cd61efeaYuichi Araki @Override 46c163f50b32db8a5241368ee20d4c0e80cd61efeaYuichi Araki public void onBackPressed() { 479a6522f6c6fc607321a4aa1ea0cc4293c5c744d5Yuichi Araki if (mBehavior != null) { 489a6522f6c6fc607321a4aa1ea0cc4293c5c744d5Yuichi Araki int state = mBehavior.getState(); 499a6522f6c6fc607321a4aa1ea0cc4293c5c744d5Yuichi Araki if (state != BottomSheetBehavior.STATE_COLLAPSED && 509a6522f6c6fc607321a4aa1ea0cc4293c5c744d5Yuichi Araki state != BottomSheetBehavior.STATE_HIDDEN) { 519a6522f6c6fc607321a4aa1ea0cc4293c5c744d5Yuichi Araki mBehavior.setState(BottomSheetBehavior.STATE_COLLAPSED); 529a6522f6c6fc607321a4aa1ea0cc4293c5c744d5Yuichi Araki return; 539a6522f6c6fc607321a4aa1ea0cc4293c5c744d5Yuichi Araki } 54c163f50b32db8a5241368ee20d4c0e80cd61efeaYuichi Araki } 559a6522f6c6fc607321a4aa1ea0cc4293c5c744d5Yuichi Araki super.onBackPressed(); 56c163f50b32db8a5241368ee20d4c0e80cd61efeaYuichi Araki } 57c163f50b32db8a5241368ee20d4c0e80cd61efeaYuichi Araki 589a6522f6c6fc607321a4aa1ea0cc4293c5c744d5Yuichi Araki protected abstract int getLayoutId(); 599a6522f6c6fc607321a4aa1ea0cc4293c5c744d5Yuichi Araki 60c163f50b32db8a5241368ee20d4c0e80cd61efeaYuichi Araki} 61