dependencies 추가
implementation 'com.google.android.material:material:1.3.0'
activity
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<com.google.android.material.floatingactionbutton.FloatingActionButton
android:id="@+id/fab_sub1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_above="@+id/fab_sub2"
android:layout_alignParentRight="true"
android:layout_marginBottom="15dp"
android:layout_marginRight="20dp"
android:backgroundTint="#000000"
android:visibility="invisible"
app:borderWidth="0dp"
app:fabSize="normal"/>
<com.google.android.material.floatingactionbutton.FloatingActionButton
android:id="@+id/fab_sub2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_above="@+id/fab_main"
android:layout_alignParentRight="true"
android:layout_marginBottom="15dp"
android:layout_marginRight="20dp"
android:backgroundTint="#000000"
android:visibility="invisible"
app:borderWidth="0dp"
app:fabSize="normal"/>
<com.google.android.material.floatingactionbutton.FloatingActionButton
android:id="@+id/fab_main"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignParentRight="true"
android:layout_marginBottom="20dp"
android:layout_marginRight="20dp"
android:backgroundTint="#009688"
app:borderWidth="0dp"
app:fabSize="normal"/>
</RelativeLayout>
anim
fab_open
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:fillAfter="true">
<scale
android:duration="300"
android:fromXScale="0.0"
android:fromYScale="0.0"
android:interpolator="@android:anim/linear_interpolator"
android:pivotX="50%"
android:pivotY="50%"
android:toXScale="0.8"
android:toYScale="0.8" />
<alpha
android:duration="300"
android:fromAlpha="0.0"
android:interpolator="@android:anim/accelerate_interpolator"
android:toAlpha="1.0" />
</set>
fab_close
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:fillAfter="true">
<scale
android:duration="300"
android:fromXScale="0.8"
android:fromYScale="0.8"
android:interpolator="@android:anim/linear_interpolator"
android:pivotX="50%"
android:pivotY="50%"
android:toXScale="0.0"
android:toYScale="0.0" />
<alpha
android:duration="300"
android:fromAlpha="1.0"
android:interpolator="@android:anim/accelerate_interpolator"
android:toAlpha="0.0" />
</set>
java
FloatingActionButton fab_main, fab_sub1, fab_sub2;
Animation fab_open, fab_close;
boolean isFabOpen = false;
fab_main = (FloatingActionButton) findViewById(R.id.fab_main);
fab_sub1 = (FloatingActionButton) findViewById(R.id.fab_sub1);
fab_sub2 = (FloatingActionButton) findViewById(R.id.fab_sub2);
fab_open = AnimationUtils.loadAnimation(getApplicationContext(), R.anim.fab_open);
fab_close = AnimationUtils.loadAnimation(getApplicationContext(), R.anim.fab_close);
fab_main.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
toggleFab();
}
});
fab_sub1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
toggleFab();
dispatchTakePictureIntent();
}
});
fab_sub2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
toggleFab();
}
});
private void toggleFab() {
if (isFabOpen) {
fab_sub1.startAnimation(fab_close);
fab_sub2.startAnimation(fab_close);
fab_sub1.setClickable(false);
fab_sub2.setClickable(false);
isFabOpen = false;
} else {
fab_sub1.startAnimation(fab_open);
fab_sub2.startAnimation(fab_open);
fab_sub1.setClickable(true);
fab_sub2.setClickable(true);
isFabOpen = true;
}
}
'Android' 카테고리의 다른 글
싱글톤 패턴 (0) | 2021.07.21 |
---|---|
Kotlin - lateinit,lazy (0) | 2021.07.07 |
당겨서 새로고침 기능 추가하기 (0) | 2021.01.23 |
Activity 생명주기 (0) | 2021.01.21 |
안드로이드 4대 컴포넌트 (0) | 2021.01.20 |