androidanimationprogress-barpreloading

Android: How to display transparent loading layer above the activity


I have tested 2 methods to display a transparent loading layer (progress bar) above the activity but activity content gets hidden here's the first one:

<RelativeLayout
  android:id="@+id/loadingPanel"
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  android:gravity="center" >

  <ProgressBar
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:indeterminate="true" />
</RelativeLayout>

And the other method with style

<RelativeLayout
  style="@style/GenericProgressBackground"
  android:id="@+id/loadingPanel">
  <ProgressBar
    style="@style/GenericProgressIndicator"/>
</RelativeLayout>

<style name="GenericProgressBackground" parent="android:Theme">
  <item name="android:layout_width">fill_parent</item>
  <item name="android:layout_height">fill_parent</item>
  <item name="android:background">#DD111111</item>
  <item name="android:gravity">center</item>
</style>
<style name="GenericProgressIndicator"  arent="@android:style/Widget.ProgressBar.Small">
  <item name="android:layout_width">wrap_content</item>
  <item name="android:layout_height">wrap_content</item>
  <item name="android:indeterminate">true</item>
</style>

And hide or display it

findViewById(R.id.loadingPanel).setVisibility(View.GONE);

(Both are added as the first item inside the root view)

But both methods hide the activity and I want to be visible semi-transparent like the image below how can I do that?

enter image description here


Solution

  • Like this,

    <?xml version="1.0" encoding="utf-8"?>
    <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    
    <LinearLayout
        android:layout_width="match_parent"
        android:orientation="vertical"
        android:layout_height="match_parent">
    
        <!-- Your lay out code here-->
    
    </LinearLayout>
    
     <RelativeLayout
        android:id="@+id/loadingPanel"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:gravity="center">
    
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:alpha="0.8"
            android:background="#000000" />
    
        <ProgressBar
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerInParent="true"
            android:indeterminate="true" />
    
    
    </RelativeLayout>
    
    </FrameLayout>