How to start and finish progressBar dynamically in android

前端 未结 4 859
刺人心
刺人心 2021-01-07 09:15

When I skip second activity class from first activity class, I will start imageprocessing on certain image in second activity and then until new image comes to screen I wnt

相关标签:
4条回答
  • 2021-01-07 09:55

    Try this way first Intialize your ProgressDialog

     progressDialog = ProgressDialog.show(this, "", "Trying to ...");
    

    then start a new thread in which you can write your code which needs to be executed and finally in the handler handle the code and end the progessDialog

    0 讨论(0)
  • 2021-01-07 09:56

    Try using Async task as shown below:

    try{
    class test extends AsyncTask{
    
    
         TextView tv_per;
         int mprogress;
    
        Dialog UpdateDialog = new Dialog(ClassContext);
    
        @Override
        protected void onPreExecute() {
            // TODO Auto-generated method stub
            mprogress = 0;
    
            UpdateDialog.setTitle(getResources().getString(R.string.app_name));
            UpdateDialog.setContentView(R.layout.horizontalprogressdialog);
            TextView dialog_message =  (TextView)UpdateDialog.findViewById(R.id.titleTvLeft);
            tv_per = (TextView)UpdateDialog.findViewById(R.id.hpd_tv_percentage);
            dialog_message.setText(getResources().getString(R.string.dialog_retrieving_data));
            dialog_message.setGravity(Gravity.RIGHT);
            UpdateDialog.setCancelable(false);
            UpdateDialog.show();
            super.onPreExecute();
        }
    
    
    
        @Override
        protected void onProgressUpdate(Object... values) {
            // TODO Auto-generated method stub
            ProgressBar update = (ProgressBar)UpdateDialog.findViewById(R.id.horizontalProgressBar);
            update.setProgress((Integer) values[0]);
            int percent =  (Integer) values[0];
            if(percent>=100)
            {
                percent=100;
            }
            tv_per = (TextView)UpdateDialog.findViewById(R.id.hpd_tv_percentage);
             tv_per.setText(""+percent);
        }
    
    
    
        @Override
        protected Object doInBackground(Object... params) {
            // TODO Auto-generated method stub
            //your code
    }
    
            super.onPostExecute(result);
            UpdateDialog.dismiss();
        }
    
     }
     new test().execute(null);
    
     }
    catch(Exception e)
    {
     e.printStackTrace();
    }
    
    0 讨论(0)
  • 2021-01-07 10:04

    Here is a method which when called starts a progressbar

    private void downloadText(String urlStr) {
    
        final String url = urlStr;
         progressDialog = ProgressDialog.show(this, "", "Trying to register...");
        Log.i("First string", urlStr);
    try{
        new Thread () {
            public void run() {
                int BUFFER_SIZE = 2000;
                InputStream in = null;
                try{
               msg = Message.obtain();
                msg.what=1;
                }catch(Exception e)
                {
                }
    
                try {
                    in = openHttpConnection(url);
               InputStreamReader isr = new InputStreamReader(in);
                    int charRead;
                      text = "";
                      char[] inputBuffer = new char[BUFFER_SIZE];
    
                          while ((charRead = isr.read(inputBuffer))>0)
                          {                    
                              //---convert the chars to a String---
                              String readString = 
                              String.copyValueOf(inputBuffer, 0, charRead);                    
                              text += readString;
                              inputBuffer = new char[BUFFER_SIZE];
                          }
                         Bundle b = new Bundle();
                            b.putString("text", text);
                            msg.setData(b);
                          in.close();
    
                }catch (Exception e) {
    
                //////////////////////////////////////  
                    e.printStackTrace();
                }
                try{
                messageHandler.sendMessage(msg);
                }catch(Exception e)
                {
                }
            }
        }.start();
    }catch(Exception e)
    {
    
    }
    
    }
    

    and here is the handler code

    private Handler messageHandler = new Handler() {
    
    
        public void handleMessage(Message msg) {
            try{
            super.handleMessage(msg);
            switch (msg.what) {
    
            case 1:
    

    { break; } } progressDialog.dismiss(); }catch(Exception e) {

            }
            }
    
    };
    
    0 讨论(0)
  • 2021-01-07 10:07

    Use ProgreaaDialog and AsyncTask. you wil get your soultion Use AsyncTask in doBackInGroundProcess do image processing. and in doPostExecute() exit or cancel the progress dialog

    have a look on the sample code. To start AsyncTsk use new ProgressTask().execute(null); from the activity where you want to do image processing.

        private class ProgressTask extends AsyncTask<String, Void, Boolean> {
            private ProgressDialog dialog;
            List<Message> titles;
            private ListActivity activity;
            //private List<Message> messages;
            public ProgressTask(ListActivity activity) {
                this.activity = activity;
                context = activity;
                dialog = new ProgressDialog(context);
            }
    
    
    
            /** progress dialog to show user that the backup is processing. */
    
            /** application context. */
            private Context context;
    
            protected void onPreExecute() {
                this.dialog.setMessage("Progress start");
                this.dialog.show();
            }
    
                @Override
            protected void onPostExecute(final Boolean success) {
                    List<Message> titles = new ArrayList<Message>(messages.size());
                    for (Message msg : messages){
                        titles.add(msg);
                    }
                    MessageListAdapter adapter = new MessageListAdapter(activity, titles);
                    activity.setListAdapter(adapter);
                    adapter.notifyDataSetChanged();
    
                    if (dialog.isShowing()) {
                    dialog.dismiss();
                }
    
                if (success) {
                    Toast.makeText(context, "OK", Toast.LENGTH_LONG).show();
                } else {
                    Toast.makeText(context, "Error", Toast.LENGTH_LONG).show();
                }
            }
    
            protected Boolean doInBackground(final String... args) {
                try{    
                    BaseFeedParser parser = new BaseFeedParser();
                    messages = parser.parse();
    
    
                    return true;
                 } catch (Exception e){
                    Log.e("tag", "error", e);
                    return false;
                 }
              }
    
    
        }
    
    }
    

    Have a look here

    0 讨论(0)
提交回复
热议问题