CoordinatorLayout Behavior

유시현·2023년 1월 31일
0

Android

목록 보기
26/34

비유로 설명하면
CoordinatorLayout : 지휘관
Snackbar : dependency라고 불리고 특정 event
behavior : 지휘관이 알려주는 명령. behavior을 장착한 유닛들은 저 방식대로 작동함

여기서는 Button에 적용했다.

Button 클릭시 Snackbar 나오는 시나리오

snackbar : dependcy
Button의 Behavior = x,y축으로 이동

<androidx.appcompat.widget.AppCompatButton
        android:id="@+id/btn"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        app:layout_behavior=".CustomMoveUpBehavior"
        android:text="Click me"/>
    <include layout="@layout/content_main" />
public class CustomMoveUpBehavior extends CoordinatorLayout.Behavior<AppCompatButton> {

    public CustomMoveUpBehavior(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    @Override
    public boolean layoutDependsOn(@NonNull CoordinatorLayout parent, @NonNull AppCompatButton child, @NonNull View dependency) {
        return dependency instanceof Snackbar.SnackbarLayout;
    }

    @Override
    public boolean onDependentViewChanged(@NonNull CoordinatorLayout parent, @NonNull AppCompatButton child, @NonNull View dependency) {
        float tY = dependency.getTranslationY()-dependency.getHeight();
        System.out.println(child);
        System.out.println(dependency);

		//child : button
        //dependency : snackbar
        child.setTranslationY(tY);
        child.setTranslationX(123);
        
        return true;
    }
}

참고
https://ranyalbegwein.silvrback.com/transforming-image-behavior

profile
안드로이드 ,ios 공부하고 있습니다

0개의 댓글