Ihre Frage: Wie deaktiviere ich die Benutzerinteraktion, während ProgressBar in Android sichtbar ist?
Um die Benutzerinteraktion zu deaktivieren, müssen Sie nur den folgenden Code hinzufügen
getWindow().setFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE,
WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE);
Um die Benutzerinteraktion wiederherzustellen, müssen Sie nur den folgenden Code hinzufügen
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE);
Hier ein Beispiel:
Hinweis: Ich gebe Ihnen nur ein Beispiel, um zu zeigen, wie Sie die Benutzerinteraktion deaktivieren oder beibehalten können
Fügen Sie Ihrer XML einen Fortschrittsbalken hinzu
<ProgressBar
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/progressBar"
android:visibility="gone"/>
Wenn Sie in MainActivity eine Taste drücken, wird der Fortschrittsbalken angezeigt und die Benutzerinteraktion deaktiviert.
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mImageView = (ImageView) findViewById(R.id.imageView);
mProgressBar = (ProgressBar) findViewById(R.id.progressBar);
mImageView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mProgressBar.setVisibility(View.VISIBLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE,
WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE);
}
});
}
Und wenn der Benutzer zurückgedrückt wird, entfernen Sie den Fortschrittsbalken wieder und behalten die Benutzerinteraktion bei. So etwas
@Override
public void onBackPressed() {
super.onBackPressed();
mProgressBar.setVisibility(View.GONE);
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE);
}
Wenn Sie eine Funktion zum Deaktivieren und Ausgrauen der Anzeige hinzufügen möchten, müssen Sie in Ihrer XML-Layoutdatei ein lineares Layout hinzufügen, das das übergeordnete Layout ausfüllt. Setzen Sie den Hintergrund auf # B0000000 und visibilty
auf GONE
. Dann ist es programmatisch festgelegt visibility
zu VISIBLE
.
Ich hoffe das hilft!