Fab追加 #129
|
@ -35,6 +35,7 @@ dependencies {
|
|||
implementation libs.material
|
||||
implementation libs.activity
|
||||
implementation libs.constraintlayout
|
||||
implementation project(':model')
|
||||
testImplementation libs.junit
|
||||
androidTestImplementation libs.ext.junit
|
||||
androidTestImplementation libs.espresso.core
|
||||
|
|
|
@ -14,11 +14,13 @@ import androidx.navigation.fragment.NavHostFragment;
|
|||
import androidx.navigation.ui.NavigationUI;
|
||||
|
||||
import com.google.android.material.bottomnavigation.BottomNavigationView;
|
||||
import com.google.android.material.floatingactionbutton.FloatingActionButton;
|
||||
|
||||
import javax.inject.Inject;
|
||||
|
||||
import dagger.hilt.android.AndroidEntryPoint;
|
||||
import one.nem.kidshift.data.UserSettings;
|
||||
import one.nem.kidshift.utils.FabManager;
|
||||
import one.nem.kidshift.utils.KSLogger;
|
||||
import one.nem.kidshift.utils.factory.KSLoggerFactory;
|
||||
|
||||
|
@ -28,8 +30,13 @@ public class MainActivity extends AppCompatActivity {
|
|||
@Inject
|
||||
KSLoggerFactory loggerFactory;
|
||||
|
||||
@Inject
|
||||
FabManager fabManager;
|
||||
|
||||
private KSLogger logger;
|
||||
|
||||
private FloatingActionButton fab;
|
||||
|
||||
@Inject
|
||||
UserSettings userSettings;
|
||||
|
||||
|
@ -71,6 +78,9 @@ public class MainActivity extends AppCompatActivity {
|
|||
Intent intent = new Intent(this, LoginActivity.class);
|
||||
startActivity(intent);
|
||||
}
|
||||
|
||||
fab = findViewById(R.id.mainFab);
|
||||
fabManager.setFab(fab);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -27,4 +27,15 @@
|
|||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:menu="@menu/main_nav_menu" />
|
||||
|
||||
<com.google.android.material.floatingactionbutton.FloatingActionButton
|
||||
android:id="@+id/mainFab"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginEnd="24dp"
|
||||
android:layout_marginBottom="24dp"
|
||||
android:clickable="true"
|
||||
app:layout_constraintBottom_toTopOf="@id/bottom_nav"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:srcCompat="@drawable/add_24px" />
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
|
@ -29,6 +29,7 @@ import one.nem.kidshift.model.ChildModel;
|
|||
import one.nem.kidshift.model.ParentModel;
|
||||
import one.nem.kidshift.model.callback.ChildModelCallback;
|
||||
import one.nem.kidshift.model.callback.ParentModelCallback;
|
||||
import one.nem.kidshift.utils.FabManager;
|
||||
import one.nem.kidshift.utils.KSLogger;
|
||||
import one.nem.kidshift.utils.factory.KSLoggerFactory;
|
||||
|
||||
|
@ -44,6 +45,9 @@ public class SettingMainFragment extends Fragment {
|
|||
@Inject
|
||||
KSLoggerFactory ksLoggerFactory;
|
||||
|
||||
@Inject
|
||||
FabManager fabManager;
|
||||
|
||||
private KSLogger logger;
|
||||
|
||||
TextView username;
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
android:id="@+id/swipe_refresh_layout">
|
||||
|
||||
|
||||
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content">
|
||||
|
||||
|
|
55
utils/src/main/java/one/nem/kidshift/utils/FabManager.java
Normal file
55
utils/src/main/java/one/nem/kidshift/utils/FabManager.java
Normal file
|
@ -0,0 +1,55 @@
|
|||
package one.nem.kidshift.utils;
|
||||
|
||||
import com.google.android.material.floatingactionbutton.FloatingActionButton;
|
||||
|
||||
import javax.inject.Inject;
|
||||
import javax.inject.Singleton;
|
||||
|
||||
import one.nem.kidshift.utils.factory.KSLoggerFactory;
|
||||
import one.nem.kidshift.utils.models.FabEventCallback;
|
||||
|
||||
@Singleton
|
||||
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 boolean isShown() {
|
||||
checkFab();
|
||||
return fab.isShown();
|
||||
}
|
||||
|
||||
public void setFabEventCallback(FabEventCallback callback) {
|
||||
checkFab();
|
||||
fab.setOnClickListener(v -> callback.onClicked());
|
||||
fab.setOnLongClickListener(v -> {
|
||||
callback.onLongClicked();
|
||||
return true;
|
||||
});
|
||||
}
|
||||
}
|
|
@ -0,0 +1,7 @@
|
|||
package one.nem.kidshift.utils.models;
|
||||
|
||||
public interface FabEventCallback {
|
||||
void onClicked();
|
||||
void onLongClicked();
|
||||
void onSwiped();
|
||||
}
|
|
@ -0,0 +1,21 @@
|
|||
package one.nem.kidshift.utils.modules;
|
||||
|
||||
import dagger.Module;
|
||||
import dagger.Provides;
|
||||
import dagger.hilt.InstallIn;
|
||||
import dagger.hilt.components.SingletonComponent;
|
||||
import one.nem.kidshift.utils.FabManager;
|
||||
import one.nem.kidshift.utils.factory.KSLoggerFactory;
|
||||
|
||||
import javax.inject.Singleton;
|
||||
|
||||
@Module
|
||||
@InstallIn(SingletonComponent.class)
|
||||
public class FabManagerModule {
|
||||
|
||||
@Provides
|
||||
@Singleton
|
||||
public FabManager provideFabManager(KSLoggerFactory loggerFactory) {
|
||||
return new FabManager(loggerFactory);
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user