I jak podejście Kostya But's answer.
Opierając się na tym, oto kilka pomysłów, aby tę samą nakładkę łatwo wielokrotnego użytku całej swojej aplikacji:
Rozważenia nakładkę FrameLayout w oddzielnym pliku layoutu, na przykładres/layout/include_progress_overlay
.
<FrameLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/progress_overlay"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:alpha="0.4"
android:animateLayoutChanges="true"
android:background="@android:color/black"
android:clickable="true"
android:visibility="gone">
<ProgressBar
style="?android:attr/progressBarStyleLarge"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:indeterminate="true"/>
</FrameLayout>
(Jedno dodałem w nakładce FrameLayout jest android:clickable="true"
Więc gdy nakładka jest pokazany, zapobiega kliknięć przeżywają do elementów interfejsu użytkownika pod nią przynajmniej w moim typowych przypadków użycia to co ja. chcesz)
Następnie umieścić go w razie potrzeby.
<!-- Progress bar overlay; shown while login is in progress -->
<include layout="@layout/include_progress_overlay"/>
I w kodzie:
View progressOverlay;
[...]
progressOverlay = findViewById(R.id.progress_overlay);
[...]
// Show progress overlay (with animation):
AndroidUtils.animateView(progressOverlay, View.VISIBLE, 0.4f, 200);
[...]
// Hide it (with animation):
AndroidUtils.animateView(progressOverlay, View.GONE, 0, 200);
Z kodu animacji ekstrakcji do metody util:
/**
* @param view View to animate
* @param toVisibility Visibility at the end of animation
* @param toAlpha Alpha at the end of animation
* @param duration Animation duration in ms
*/
public static void animateView(final View view, final int toVisibility, float toAlpha, int duration) {
boolean show = toVisibility == View.VISIBLE;
if (show) {
view.setAlpha(0);
}
view.setVisibility(View.VISIBLE);
view.animate()
.setDuration(duration)
.alpha(show ? toAlpha : 0)
.setListener(new AnimatorListenerAdapter() {
@Override
public void onAnimationEnd(Animator animation) {
view.setVisibility(toVisibility);
}
});
}
(tutaj używając view.animate()
dodał API 12, zamiast AlphaAnimation
).
Szukasz tego? dobrze ? http://stackoverflow.com/questions/2176922/how-to-create-transparent-activity-in-android –
@ M-WaJeEh Jak dodać tekst i/lub grafikę do tego działania? –
lubisz dodawać do normalnej "aktywności". To po prostu normalna "aktywność" o innym temacie. –