【问题标题】:make background transparent for progressbar使进度条的背景透明
【发布时间】:2017-06-04 00:54:46
【问题描述】:

我使用this library 作为进度指示器,同时通过网络服务进行后台工作。我想在显示进度条时使背景透明。有什么方法可以像使用进度对话框一样以编程方式使窗口透明?

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);
       
    }
}

【问题讨论】:

    标签: android android-progressbar


    【解决方案1】:

    试试这个。制作自定义对话框类

    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;
        }
      }
    }
    

    对应的 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>
    

    还有活动

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

    并通过调用隐藏

      cShowProgress.hideProgress();
    

    希望这会有所帮助。

    【讨论】:

    • 快乐的编码兄弟 :) :) @SomnathPal
    • @Sanoop 请:我用这个库尝试了很多方法,但动画没有开始,图像显示为静态。这可能与我的线性布局有关吗?非常感谢,很抱歉打扰您。
    • 问题是:RelativeLayout 会弄乱我的布局......甚至没有尝试。真的很感谢您的关注。上帝保佑。
    • 别担心,。 :) :)
    【解决方案2】:

    试试这个方法:

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

    并在 values\styles.xml 中创建 Theme

    <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>
    

    并且还在 values\styles.xml 中添加这个 Theme

    <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>
    

    并添加 values\colors.xml

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

    编辑 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"
        />
    

    这可能对你有帮助。

    【讨论】:

    • 我想拥有相同的进度条库而不是使用进度对话框。可能吗? @Sathish
    猜你喜欢
    • 1970-01-01
    • 2012-06-16
    • 1970-01-01
    • 2014-07-15
    • 2014-07-17
    • 2022-01-23
    • 2018-01-07
    • 2018-02-12
    • 2011-10-24
    相关资源
    最近更新 更多