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