Fab追加 #129

Merged
Fujimatsu merged 18 commits from feature/add_fab into main 2024-07-05 02:03:12 +00:00
2 changed files with 53 additions and 22 deletions
Showing only changes of commit 47008d5c35 - Show all commits

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); 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;
});
}
}
/** /**
* 起動時にバックグラウンドで行う各種更新処理とか * 起動時にバックグラウンドで行う各種更新処理とか
*/ */