图像上的多个进度条

Multiple progress bar on image

我有多张图片,我正在使用 asynctask 在 php 服务器上上传我的问题是我想像 whatsapp 一样在每张图片上单独显示圆形进度条,但不知道该怎么做。这是我的代码

/**
 * Uploading the file to server
 * */
private class UploadFileToServer extends AsyncTask<Void, Integer, String> {
    @Override
    protected void onPreExecute() {

        super.onPreExecute();
    }

    @Override
    protected void onProgressUpdate(Integer... progress) {

    }

    @Override
    protected String doInBackground(Void... params)
    {
        return uploadFile();
    }

    @SuppressWarnings("deprecation")
    private String uploadFile() {
        String responseString = null;

        HttpClient httpclient = new DefaultHttpClient();
        HttpPost httppost = new HttpPost(serviceurl+"conversations.php");


        try {
            MultipartEntityBuilder entity = MultipartEntityBuilder.create();        




            /* example for setting a HttpMultipartMode */
            entity.setMode(HttpMultipartMode.BROWSER_COMPATIBLE);


            File sourceFile = new File(imgDecodableString);


            // Progress listener - updates task's progress
            MyHttpEntity.ProgressListener progressListener =
                    new MyHttpEntity.ProgressListener() {
                        @Override
                        public void transferred(float progress) {
                           publishProgress((int) progress);

                        }
                    };

            // Adding file data to http body
            entity.addPart("file", new FileBody(sourceFile));

            // Extra parameters if you want to pass to server
                    entity.addTextBody("from_user",(prefid.getString("userid", null)),ContentType.TEXT_PLAIN);
            entity.addTextBody("to_user",touser_id,ContentType.TEXT_PLAIN);
            entity.addTextBody("message_type", msg_type,ContentType.TEXT_PLAIN);    

            httppost.setEntity(new MyHttpEntity(entity.build(),
                    progressListener));

            // Making server call
            HttpResponse response = httpclient.execute(httppost);
            HttpEntity r_entity = response.getEntity();

            int statusCode = response.getStatusLine().getStatusCode();
            if (statusCode == 200) {


                responseString = EntityUtils.toString(r_entity);
            } else {
                responseString = "Error occurred! Http Status Code: "
                        + statusCode;
            }

        } catch (ClientProtocolException e) {
            responseString = e.toString();
        } catch (IOException e) {
            responseString = e.toString();
        }

        return responseString;

    }

    @Override
    protected void onPostExecute(String result) {
        super.onPostExecute(result);



    }

}

我在主 activity 中调用上面的代码,我正在使用它来上传图像和视频。

请帮助我如何在多张图片上设置进度条,就像在 whatsapp 中一样

谢谢

您可以将视图传递给 AsyncTask,方法是创建新的构造函数,然后 show/hide 它,注意您必须为视图运行 runOnUIThread。

private class UploadFileToServer extends AsyncTask<Void, Integer, String> {
    ImageView iv_loading;
    public UploadFileToServer(ImageView iv_loading){
        this.iv_loading = iv_loading;
    }
     @Override
    protected void onPreExecute() {
        super.onPreExecute();
        runOnUiThread(new Runnable() {
                              @Override
                              public void run() {
                                  iv_loading.setVisibility(View.VISIBLE);
                              }
                          }
            );
    }
    ...
    @Override
    protected void onPostExecute(String result) {
        super.onPostExecute(result);
        runOnUiThread(new Runnable() {
                              @Override
                              public void run() {
                                  iv_loading.setVisibility(View.GONE);
                              }
                          }
            );

    }   
}