当okhttp从Android中的api获取数据时,如何显示加载icon/bar?

How to show a loading icon/bar when okhttp is fetching data from the api in Android?

当 okhttp 客户端从 API 获取响应时,我想在我的 Android 应用程序界面上显示正在加载 icon/bar。现在它只是数据加载前的一个空白屏幕,但是我想在数据完全加载之前显示一个加载图标。下面是我的 okhttp 函数的代码。我应该在加载中准确添加代码的哪一部分 bar/icon 我该怎么做?

private void doGetRequest(String[] time_duration) {
        OkHttpClient client = new OkHttpClient();

        OkHttpClient.Builder builder = new OkHttpClient.Builder();
        builder.connectTimeout(10, TimeUnit.MINUTES)
                .writeTimeout(10, TimeUnit.MINUTES)
                .readTimeout(10,TimeUnit.MINUTES);

        client = builder.build();

        Request request = new Request.Builder().url(url).build();
        

        client.newCall(request).enqueue(new Callback() {
            @Override
            public void onFailure(Call call, IOException e) {
                e.printStackTrace();
            }

            @Override
            public void onResponse(Call call, Response response) throws IOException {

                if(response.isSuccessful()) {


                    try {

                       
                        String jsonData = response.body().string();
                        JSONObject Jobject = new JSONObject(jsonData);
                        JSONArray jarray = Jobject.getJSONArray("Flights");

                        for (int i = 0; i < jarray.length(); i++) {
                            JSONObject object = jarray.getJSONObject(i);
                            
                         
                            }

                        }


                    } catch (Exception e) {
                        e.printStackTrace();
                    }


                    DeparturesActivity.this.runOnUiThread(new Runnable() {
                        @Override
                        public void run() {

                            try {


                                for (int i = 0; i < departure_flights.size(); i++) {

                                    String departure_date = departure_flights.get(i).getString("FldaDT");
                                    String flight_number = departure_flights.get(i).getString("Flno");
              

                                   }

                                    flightItems.add(new FlightItem(strDate, flight_number));

                                }
                                mAdapter.notifyDataSetChanged();

                            } catch (JSONException e) {

                                e.printStackTrace();
                            }
                        }
                    });
                }


        });

在 xml 布局中定义一个进度条并将其可见性设置为 gone ,并在开始调用 api 之前的行将其可见性设置为可见,如:

progressBar.setVisibilty(View.VISIBLE);

最后,当 api 调用结束时,将其在 onResponse()onFailure() 上的可见性设置为再次消失,如:

progressBar.setVisibilty(View.GONE);