2012-03-01 33 views
0

我使用的算法在http://www.exampledepot.com/egs/javax.crypto/DesFile.html,我想知道如何实现这样的微调算法,我有 代码像如何设置加密算法的进度条?

public class ProgressBarExample extends Activity { 

ProgressThread progThread; 
ProgressDialog progDialog; 
Button button1, button2; 
int typeBar;      // Determines type progress bar: 0 = spinner, 1 = horizontal 
int delay = 40;     // Milliseconds of delay in the update loop 
int maxBarValue = 200;  // Maximum value of horizontal progress bar 

/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    // Process button to start spinner progress dialog with anonymous inner class 
    button1 = (Button) findViewById(R.id.Button01); 
    button1.setOnClickListener(new OnClickListener(){ 
     public void onClick(View v) { 
      typeBar = 0; 
      showDialog(typeBar); 
     } 
    }); 

    // Process button to start horizontal progress bar dialog with anonymous inner class 
    button2 = (Button) findViewById(R.id.Button02); 
    button2.setOnClickListener(new OnClickListener(){ 
     public void onClick(View v) { 
      typeBar = 1; 
      showDialog(typeBar); 
     } 
    }); 
} 

// Method to create a progress bar dialog of either spinner or horizontal type 
@Override 
protected Dialog onCreateDialog(int id) { 
    switch(id) { 
    case 0:      // Spinner 
     progDialog = new ProgressDialog(this); 
     progDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER); 
     progDialog.setMessage("Loading..."); 
     progThread = new ProgressThread(handler); 
     progThread.start(); 
     return progDialog; 
    case 1:      // Horizontal 
     progDialog = new ProgressDialog(this); 
     progDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL); 
     progDialog.setMax(maxBarValue); 
     progDialog.setMessage("Dollars in checking account:"); 
     progThread = new ProgressThread(handler); 
     progThread.start(); 
     return progDialog; 
    default: 
     return null; 
    } 
} 

// Handler on the main (UI) thread that will receive messages from the 
// second thread and update the progress. 

final Handler handler = new Handler() { 
    public void handleMessage(Message msg) { 
     // Get the current value of the variable total from the message data 
     // and update the progress bar. 
     int total = msg.getData().getInt("total"); 
     progDialog.setProgress(total); 
     if (total <= 0){ 
      dismissDialog(typeBar); 
      progThread.setState(ProgressThread.DONE); 
     } 
    } 
}; 

// Inner class that performs progress calculations on a second thread. Implement 
// the thread by subclassing Thread and overriding its run() method. Also provide 
// a setState(state) method to stop the thread gracefully. 

private class ProgressThread extends Thread { 

    // Class constants defining state of the thread 
    final static int DONE = 0; 
    final static int RUNNING = 1; 

    Handler mHandler; 
    int mState; 
    int total; 

    // Constructor with an argument that specifies Handler on main thread 
    // to which messages will be sent by this thread. 

    ProgressThread(Handler h) { 
     mHandler = h; 
    } 

    // Override the run() method that will be invoked automatically when 
    // the Thread starts. Do the work required to update the progress bar on this 
    // thread but send a message to the Handler on the main UI thread to actually 
    // change the visual representation of the progress. In this example we count 
    // the index total down to zero, so the horizontal progress bar will start full and 
    // count down. 

    @Override 
    public void run() { 
     mState = RUNNING; 
     total = maxBarValue; 
     while (mState == RUNNING) { 
      // The method Thread.sleep throws an InterruptedException if Thread.interrupt() 
      // were to be issued while thread is sleeping; the exception must be caught. 
      try { 
       // Control speed of update (but precision of delay not guaranteed) 
       Thread.sleep(delay); 
      } catch (InterruptedException e) { 
       Log.e("ERROR", "Thread was Interrupted"); 
      } 

      // Send message (with current value of total as data) to Handler on UI thread 
      // so that it can update the progress bar. 

      Message msg = mHandler.obtainMessage(); 
      Bundle b = new Bundle(); 
      b.putInt("total", total); 
      msg.setData(b); 
      mHandler.sendMessage(msg); 

      total--;  // Count down 
     } 
    } 

    // Set current state of thread (use state=ProgressThread.DONE to stop thread) 
    public void setState(int state) { 
     mState = state; 
    } 
} 

}

如何使用我实现微调上面的DES算法类?

+0

你想要什么不能理解?微调?检查什么是微调在Android – 2012-03-01 11:18:39

+0

欢迎来到堆栈溢出。请阅读[如何问](http://stackoverflow.com/questions/how-to-ask),[你有什么尝试?](http://mattgemmell.com/2008/12/08/what-have - 你试过/),和[如何问问题的智能方式](http://catb.org/esr/faqs/smart-questions.html)。 – 2012-03-02 09:19:00

+0

我明白微调东西,我想知道如何从DES加密算法得到进度更新。 – 2012-03-05 06:42:43

回答