Fabの操作を独立させた

This commit is contained in:
ろむねこ 2024-07-05 10:40:30 +09:00
parent 0caed0860f
commit 47008d5c35
Signed by: Fujimatsu
GPG Key ID: FA1F39A1BA37D168
2 changed files with 53 additions and 22 deletions

View File

@ -0,0 +1,53 @@
package one.nem.kidshift;
// HiltのSingletonインスタンス
// FloatingActionButtonを別モジュールから制御するためのクラス
import com.google.android.material.floatingactionbutton.FloatingActionButton;
import javax.inject.Inject;
import one.nem.kidshift.model.callback.FabEventCallback;
import one.nem.kidshift.utils.KSLogger;
import one.nem.kidshift.utils.factory.KSLoggerFactory;
public class FabManager {
private FloatingActionButton fab;
private final KSLogger logger;
@Inject
public FabManager(KSLoggerFactory loggerFactory) {
this.logger = loggerFactory.create("FabManager");
}
public void setFab(FloatingActionButton fab) {
this.fab = fab;
}
private void checkFab() {
if (fab == null) {
logger.error("Fab is not set");
throw new IllegalStateException("Fab is not set");
}
}
public void show() {
checkFab();
fab.show();
}
public void hide() {
checkFab();
fab.hide();
}
public void setFabEventCallback(FabEventCallback callback) {
checkFab();
fab.setOnClickListener(v -> callback.onClicked());
fab.setOnLongClickListener(v -> {
callback.onLongClicked();
return true;
});
}
}

View File

@ -80,28 +80,6 @@ public class MainActivity extends AppCompatActivity {
fab = findViewById(R.id.mainFab);
}
public class FabControl{
public void showFab() {
fab.setVisibility(View.VISIBLE);
}
public void hideFab() {
fab.setVisibility(View.GONE);
}
public void setFabIcon(int iconResId) {
fab.setImageResource(iconResId);
}
public void setFabEventCallback(FabEventCallback callback) {
fab.setOnClickListener(v -> callback.onClicked());
fab.setOnLongClickListener(v -> {
callback.onLongClicked();
return true;
});
}
}
/**
* 起動時にバックグラウンドで行う各種更新処理とか
*/