推荐安卓开发神器(里面有各种UI特效和android代码库实例)

下载文件会阻塞UI主线程,所以需要new一个新线程来执行下载操作,通过handler执行更新UI进度条操作。代码如下:

public class AndroidTest extends Activity {      private static final String TAG = "AndroidTest";        private ProgressBar progressBar = null;      private Button startButton = null;      private EditText filenameText = null;      private MyHandler handler = null;        private Message message = null;      private boolean flag = true;      private int size = 1;      private int hasRead = 0;      private int len = 0;      private byte buffer[] = new byte[1024*4];      private int index = 0;             @Override      public void onCreate(Bundle savedInstanceState) {      super.onCreate(savedInstanceState);          setContentView(R.layout.main);                    progressBar = (ProgressBar)findViewById(R.id.progress_horizontal);          startButton = (Button)findViewById(R.id.mybutton);          startButton.setOnClickListener(new ButtonClick());                filenameText = (EditText)findViewById(R.id.fileNameID);                handler = new MyHandler();      }          public boolean downloadFile(final String urlStr, final String filename) {          new Thread(new Runnable(){                public void run() {                   try {                      URL url = new URL(urlStr);                      HttpURLConnection connection = (HttpURLConnection)url.openConnection();                      size = connection.getContentLength();                      InputStream inputStream = connection.getInputStream();                      OutputStream outputStream = new FileOutputStream(Environment.getExternalStorageDirectory()+"/"+filename);                                            while((len=inputStream.read(buffer))!=-1){                          outputStream.write(buffer);                          hasRead+=len;                          index = (int)(hasRead*100)/size;                          message = new Message();                          message.what = 1;                          handler.sendMessage(message);                          Log.d(TAG, "index = " + index);                          System.out.println("has = "+hasRead+" size = "+size+" index = "+index);                      }                                        inputStream.close();                      outputStream.close();                  } catch (Exception e) {                      flag = false;                      e.printStackTrace();                  }              }          }).start();                    return flag;      }        class ButtonClick implements OnClickListener {            public void onClick(View v) {                    String url = filenameText.getText().toString();              String filename = url.substring(url.lastIndexOf('/') + 1);              Log.d(TAG, "url = " + url);              Log.d(TAG, "filename = " + filename);                            if(!downloadFile(url, filename)) {                  String rs = "下载失败 ";                  Toast.makeText(AndroidTest.this, rs, Toast.LENGTH_SHORT).show();              }                }        }        class MyHandler extends Handler{            @Override          public void handleMessage(Message msg) {              if (msg.what == 1) {                  progressBar.setProgress(index);                  Log.d(TAG, "setProgress index:" + index);                  if (index >= 99) {                      String rs = "下载完成";                      Toast.makeText(AndroidTest.this, rs, Toast.LENGTH_SHORT).show();                  }              }                            super.handleMessage(msg);          }        }    }  

更多相关文章

  1. Android唤醒、解锁屏幕代码实例
  2. Android:android.git.kernel.org 无法访问时下载源代码的解决方法
  3. [Tools]Android Studio代码提示功能--Ctrl+Alt+Space(空格键)
  4. Android学习心得(14) --- Android代码混淆(2)
  5. android逆向神器之firda
  6. 一网打尽__Android 开源代码合集(SwitchButton)
  7. DSBridge——一套H5代码就能同时与Android和iOS通信

随机推荐

  1. android中使得popupwindow消失
  2. 教你如何开发一款实用的完整Android(安卓
  3. 解决通过Intent调用系统拍照程序,返回图片
  4. android M 如何获取设置应用通知开关状态
  5. value-string
  6. Linux平台下搭建OgreKit on Android开发
  7. Android(安卓)- JNI 串口通信
  8. AppWidgetProvider
  9. 适配Android(安卓)N (7.0)需要解决的问题汇
  10. 定制Oreo 初步