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