103c3fdb2fa9059fb217e51c2bd2a79074a9af379Yuichi Araki/*
203c3fdb2fa9059fb217e51c2bd2a79074a9af379Yuichi Araki * Copyright 2017 The Android Open Source Project
303c3fdb2fa9059fb217e51c2bd2a79074a9af379Yuichi Araki *
403c3fdb2fa9059fb217e51c2bd2a79074a9af379Yuichi Araki * Licensed under the Apache License, Version 2.0 (the "License");
503c3fdb2fa9059fb217e51c2bd2a79074a9af379Yuichi Araki * you may not use this file except in compliance with the License.
603c3fdb2fa9059fb217e51c2bd2a79074a9af379Yuichi Araki * You may obtain a copy of the License at
703c3fdb2fa9059fb217e51c2bd2a79074a9af379Yuichi Araki *
803c3fdb2fa9059fb217e51c2bd2a79074a9af379Yuichi Araki *      http://www.apache.org/licenses/LICENSE-2.0
903c3fdb2fa9059fb217e51c2bd2a79074a9af379Yuichi Araki *
1003c3fdb2fa9059fb217e51c2bd2a79074a9af379Yuichi Araki * Unless required by applicable law or agreed to in writing, software
1103c3fdb2fa9059fb217e51c2bd2a79074a9af379Yuichi Araki * distributed under the License is distributed on an "AS IS" BASIS,
1203c3fdb2fa9059fb217e51c2bd2a79074a9af379Yuichi Araki * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1303c3fdb2fa9059fb217e51c2bd2a79074a9af379Yuichi Araki * See the License for the specific language governing permissions and
1403c3fdb2fa9059fb217e51c2bd2a79074a9af379Yuichi Araki * limitations under the License.
1503c3fdb2fa9059fb217e51c2bd2a79074a9af379Yuichi Araki */
1603c3fdb2fa9059fb217e51c2bd2a79074a9af379Yuichi Araki
1703c3fdb2fa9059fb217e51c2bd2a79074a9af379Yuichi Arakipackage com.example.android.support.transition.widget;
1803c3fdb2fa9059fb217e51c2bd2a79074a9af379Yuichi Araki
1903c3fdb2fa9059fb217e51c2bd2a79074a9af379Yuichi Arakiimport android.os.Bundle;
20def582a5836579a3fadabfdbe4413cb1652bf098Aurimas Liutikasimport android.view.Gravity;
21def582a5836579a3fadabfdbe4413cb1652bf098Aurimas Liutikasimport android.view.View;
22def582a5836579a3fadabfdbe4413cb1652bf098Aurimas Liutikasimport android.widget.LinearLayout;
23def582a5836579a3fadabfdbe4413cb1652bf098Aurimas Liutikas
24ac5fe7c617c66850fff75a9fce9979c6e5674b0fAurimas Liutikasimport androidx.transition.AutoTransition;
25ac5fe7c617c66850fff75a9fce9979c6e5674b0fAurimas Liutikasimport androidx.transition.SidePropagation;
26ac5fe7c617c66850fff75a9fce9979c6e5674b0fAurimas Liutikasimport androidx.transition.Transition;
27ac5fe7c617c66850fff75a9fce9979c6e5674b0fAurimas Liutikasimport androidx.transition.TransitionManager;
2803c3fdb2fa9059fb217e51c2bd2a79074a9af379Yuichi Araki
2903c3fdb2fa9059fb217e51c2bd2a79074a9af379Yuichi Arakiimport com.example.android.support.transition.R;
3003c3fdb2fa9059fb217e51c2bd2a79074a9af379Yuichi Araki
3103c3fdb2fa9059fb217e51c2bd2a79074a9af379Yuichi Araki/**
3203c3fdb2fa9059fb217e51c2bd2a79074a9af379Yuichi Araki * Demonstrates usage of Slide.
3303c3fdb2fa9059fb217e51c2bd2a79074a9af379Yuichi Araki */
3403c3fdb2fa9059fb217e51c2bd2a79074a9af379Yuichi Arakipublic class SidePropagationUsage extends TransitionUsageBase {
3503c3fdb2fa9059fb217e51c2bd2a79074a9af379Yuichi Araki
3603c3fdb2fa9059fb217e51c2bd2a79074a9af379Yuichi Araki    private Transition mTransition;
3703c3fdb2fa9059fb217e51c2bd2a79074a9af379Yuichi Araki
3803c3fdb2fa9059fb217e51c2bd2a79074a9af379Yuichi Araki    private LinearLayout mRoot;
3903c3fdb2fa9059fb217e51c2bd2a79074a9af379Yuichi Araki
4003c3fdb2fa9059fb217e51c2bd2a79074a9af379Yuichi Araki    private boolean mVisible = true;
4103c3fdb2fa9059fb217e51c2bd2a79074a9af379Yuichi Araki
4203c3fdb2fa9059fb217e51c2bd2a79074a9af379Yuichi Araki    @Override
4303c3fdb2fa9059fb217e51c2bd2a79074a9af379Yuichi Araki    int getLayoutResId() {
4403c3fdb2fa9059fb217e51c2bd2a79074a9af379Yuichi Araki        return R.layout.slide;
4503c3fdb2fa9059fb217e51c2bd2a79074a9af379Yuichi Araki    }
4603c3fdb2fa9059fb217e51c2bd2a79074a9af379Yuichi Araki
4703c3fdb2fa9059fb217e51c2bd2a79074a9af379Yuichi Araki    @Override
4803c3fdb2fa9059fb217e51c2bd2a79074a9af379Yuichi Araki    protected void onCreate(Bundle savedInstanceState) {
4903c3fdb2fa9059fb217e51c2bd2a79074a9af379Yuichi Araki        super.onCreate(savedInstanceState);
5003c3fdb2fa9059fb217e51c2bd2a79074a9af379Yuichi Araki
5103c3fdb2fa9059fb217e51c2bd2a79074a9af379Yuichi Araki        mTransition = new AutoTransition();
5203c3fdb2fa9059fb217e51c2bd2a79074a9af379Yuichi Araki        final SidePropagation propagation = new SidePropagation();
5303c3fdb2fa9059fb217e51c2bd2a79074a9af379Yuichi Araki        propagation.setSide(Gravity.END);
5403c3fdb2fa9059fb217e51c2bd2a79074a9af379Yuichi Araki        propagation.setPropagationSpeed(0.4f);
5503c3fdb2fa9059fb217e51c2bd2a79074a9af379Yuichi Araki        mTransition.setPropagation(propagation);
5603c3fdb2fa9059fb217e51c2bd2a79074a9af379Yuichi Araki
5703c3fdb2fa9059fb217e51c2bd2a79074a9af379Yuichi Araki        mRoot = findViewById(R.id.root);
5803c3fdb2fa9059fb217e51c2bd2a79074a9af379Yuichi Araki        findViewById(R.id.toggle).setOnClickListener(v -> {
5903c3fdb2fa9059fb217e51c2bd2a79074a9af379Yuichi Araki            mVisible = !mVisible;
6003c3fdb2fa9059fb217e51c2bd2a79074a9af379Yuichi Araki            TransitionManager.beginDelayedTransition(mRoot, mTransition);
6103c3fdb2fa9059fb217e51c2bd2a79074a9af379Yuichi Araki            for (int i = 0, count = mRoot.getChildCount(); i < count; i++) {
6203c3fdb2fa9059fb217e51c2bd2a79074a9af379Yuichi Araki                mRoot.getChildAt(i).setVisibility(mVisible ? View.VISIBLE : View.GONE);
6303c3fdb2fa9059fb217e51c2bd2a79074a9af379Yuichi Araki            }
6403c3fdb2fa9059fb217e51c2bd2a79074a9af379Yuichi Araki        });
6503c3fdb2fa9059fb217e51c2bd2a79074a9af379Yuichi Araki    }
6603c3fdb2fa9059fb217e51c2bd2a79074a9af379Yuichi Araki
6703c3fdb2fa9059fb217e51c2bd2a79074a9af379Yuichi Araki}
68