2016-06-24 13 views
0

Ich verwende this library für Fortschrittsanzeige, während ich die Hintergrundarbeit über Web-Service mache. Ich möchte den Hintergrund transparent machen, während der Fortschrittsbalken angezeigt wird. Gibt es eine Möglichkeit, das Fenster programmatisch transparent zu machen, genau wie beim Fortschrittsdialog?Hintergrund transparent für Fortschrittsbalken machen

public class MainActivity extends AppCompatActivity{ 
 

 
    private EditText email, pass; 
 
    private SessionManager session; 
 
    private SQLiteHandler db; 
 
    private AVLoadingIndicatorView pb; 
 
    private static final String LOGIN = "http://ubooktoday.com/android/login"; 
 

 
    @Override 
 
    protected void onCreate(Bundle savedInstanceState) { 
 
     super.onCreate(savedInstanceState); 
 
     setContentView(R.layout.activity_main); 
 
     
 
     email = (EditText)findViewById(R.id.et1); 
 
     pass = (EditText)findViewById(R.id.et2); 
 

 
     session = new SessionManager(getApplicationContext()); 
 
     db = new SQLiteHandler(getApplicationContext()); 
 
     pb = new AVLoadingIndicatorView(this); 
 

 
     if (session.isLoggedIn()) { 
 
      startActivity(new Intent(MainActivity.this, ListVActivity.class)); 
 
      finish(); 
 
     } 
 
    } 
 
    
 
    public void login(View view){ 
 

 
     if (!email.getText().toString().equals("") && !pass.getText().toString().equals("")) { 
 
      loginRequest(); 
 
     }else{ 
 
      Toast.makeText(getApplicationContext(), "Please enter the details", Toast.LENGTH_SHORT).show(); 
 
     } 
 
     
 

 
    } 
 

 
    private void loginRequest() { 
 

 
     startAnim(); 
 

 
     StringRequest stringRequest = new StringRequest(Request.Method.POST, LOGIN, 
 
       new Response.Listener<String>() { 
 
        @Override 
 
        public void onResponse(String response) { 
 

 
         stopAnim(); 
 

 
         try { 
 
          JSONObject jObj = new JSONObject(response); 
 

 
          String status = jObj.getString("status"); 
 

 
          // Now check status value 
 
          if (status.equals("0")) { 
 

 
           Toast.makeText(getApplicationContext(), jObj.getString("message"), Toast.LENGTH_LONG).show(); 
 
          } else if (status.equals("1")) { 
 

 
           session.setLogin(true); 
 
           db.addUser(jObj.getString("spa_name"), jObj.getString("user_id")); 
 

 
           startActivity(new Intent(MainActivity.this, ListVActivity.class)); 
 
           finish(); 
 

 

 

 
          } 
 
         } catch (JSONException e) { 
 
          // JSON error 
 
          e.printStackTrace(); 
 
          Toast.makeText(getApplicationContext(), "Json error: " + e.getMessage(), Toast.LENGTH_LONG).show(); 
 
         } 
 
        } 
 
       }, new Response.ErrorListener() { 
 
      @Override 
 
      public void onErrorResponse(VolleyError error) { 
 
       Toast.makeText(getApplicationContext(), "VolleyError" + error.toString(), Toast.LENGTH_LONG).show(); 
 
      } 
 
     }) { 
 
      @Override 
 
      protected Map<String, String> getParams() { 
 
       Map<String, String> params = new HashMap<String, String>(); 
 
       params.put("email", email.getText().toString()); 
 
       params.put("pass", pass.getText().toString()); 
 
       return params; 
 
      } 
 

 
     }; 
 

 
     RequestQueue requestQueue = Volley.newRequestQueue(getApplicationContext()); 
 
     requestQueue.add(stringRequest); 
 
    } 
 

 
    public void startAnim(){ 
 
     findViewById(R.id.avloadingIndicatorView).setVisibility(View.VISIBLE); 
 
     
 
    } 
 

 
    public void stopAnim(){ 
 
     findViewById(R.id.avloadingIndicatorView).setVisibility(View.GONE); 
 
     
 
    } 
 
}

Antwort

4

Versuchen Sie es. Erstellen Sie eine benutzerdefinierte Dialogklasse

public class CShowProgress { 
public static CShowProgress mCShowProgress; 
public Dialog mDialog; 

public CShowProgress() { 
} 

public static CShowProgress getInstance() { 
    if (mCShowProgress== null) { 
     mCShowProgress= new CShowProgress(); 
    } 
    return mCShowProgress; 
} 

public void showProgress(Context mContext) { 
    mDialog= new Dialog(mContext); 
    mDialog.requestWindowFeature(Window.FEATURE_NO_TITLE); 
    mDialog.setContentView(R.layout.custom_progress_layout); 
    mDialog.findViewById(R.id.progress_bar).setVisibility(View.VISIBLE); 
    mDialog.getWindow().setBackgroundDrawable(new ColorDrawable(android.graphics.Color.TRANSPARENT)); 
    mDialog.setCancelable(true); 
    mDialog.setCanceledOnTouchOutside(true); 
    mDialog.show(); 
} 

public void hideProgress() { 
    if (mDialog!= null) { 
     mDialog.dismiss(); 
     mDialog= null; 
    } 
    } 
} 

entsprechenden XML-custom_progress_layout.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    android:background="@android:color/transparent" 
    android:orientation="vertical"> 

    <com.wang.avi.AVLoadingIndicatorView 
    android:id="@+id/progress_bar" 
    app:indicator="SemiCircleSpin" 
    app:indicator_color="@android:color/black" 
    android:layout_width="50dp" 
    android:layout_height="50dp" 
    android:visibility="visible" /> 
</RelativeLayout> 

und die Aktivität

CShowProgress cShowProgress = CShowProgress.getInstance(); 
    cShowProgress.showProgress(Activity.this); 

und ausblenden, indem Sie

cShowProgress.hideProgress(); 
Aufruf

Hoffe, das wird helfen.

+0

Es funktioniert wirklich! Danke, Mann. –

+0

Happy Coding Broah :) :) @SomnathPal – Sanoop

+0

@Sanoop bitte: Ich habe viele Möglichkeiten mit dieser Bibliothek versucht, aber die Animation beginnt nicht, Bilder werden statisch angezeigt. Kann das eine Beziehung zu meinem Linearlayout haben? Vielen Dank und Entschuldigung, Sie zu stören. – statosdotcom

0

Versuchen Sie, diese Art und Weise:

ProgressDialog pd = new ProgressDialog(Login.this,R.style.MyProgressTheme); 
pd.setCancelable(false); 
pd.setProgressStyle(android.R.style.Widget_ProgressBar_Small); 
pd.show(); 

Und schaffen Theme in Werte \ styles.xml

<style name="MyProgressTheme" parent="android:Theme.Holo.Dialog"> 
    <item name="android:alertDialogStyle">@style/MyDialogStyle</item> 
    <item name="android:windowBackground">@color/transparent</item> 
    <item name="android:textColorPrimary">#FFFFFF</item> 
    <item name="android:backgroundDimEnabled">false</item> 
    <item name="android:textColor">#FFFFFF</item> 
    <item name="android:textStyle">normal</item> 
    <item name="android:textSize">12sp</item> 
</style> 

Und auch hinzufügen, um dieses Theme in Werte \ styles.xml

<style name="MyDialogStyle"> 
    <item name="android:bottomBright">@color/transparent</item> 
    <item name="android:bottomDark">@color/transparent</item> 
    <item name="android:bottomMedium">@color/transparent</item> 
    <item name="android:centerBright">@color/transparent</item> 
    <item name="android:centerDark">@color/transparent</item> 
    <item name="android:centerMedium">@color/transparent</item> 
    <item name="android:fullBright">@color/transparent</item> 
    <item name="android:fullDark">@color/transparent</item> 
    <item name="android:topBright">@color/transparent</item> 
    <item name="android:topDark">@color/transparent</item> 
</style> 

Und fügen Werte \ Colors.xml

<color name="transparent">#00000000</color> 

EDIT 1

<com.wang.avi.AVLoadingIndicatorView 
    android:id="@+id/avloadingIndicatorView" 
    android:layout_width="wrap_content" //or your custom size 
    android:layout_height="wrap_content" //or your custom size 
    android:visibility="visible" //visible or gone 
    app:indicator="BallPulse" 
    app:indicator_color="your color" 
    android:background="@android:color/transparent" 
    /> 

könnte dies hilft Ihnen.

+0

Ich wollte die gleiche Progressbar-Bibliothek haben und nicht Fortschrittsdialog verwenden. Ist es möglich? @Sathish –

+0

Versuchen Sie meine bearbeitete Antwort –

+0

Es funktioniert nicht –

Verwandte Themen