Wednesday, October 4, 2017

Hiện ProgressDialog trong khi chờ đọc mạng

Bạn có ứng dụng cần đọc mạng, một file tài liệu txt online, trong lúc đó muốn hiện thông báo chờ tải để người dùng biết.
Ta sẽ dùng thread để hiện ProgressDialog.
Tại class bất kỳ, khai báo một textView và progressdialog trên dòng Override.
TextView t;
ProgressDialog mProgressDialog;
Trong file xml tạo một textView.
<TextView
 android:id="@+id/te"
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:textSize="15sp"
 android:text="@string/hello_world" />
Khỏi tạo dưới dòng setContentView.
t = (TextView) findViewById(R.id.te);
mProgressDialog = new ProgressDialog(this);
mProgressDialog.setMessage("Loading, please wait...");
mProgressDialog.show();
Copy tiếp xuống dưới, tạo một thread để chờ.
 new Thread() {
        @Override
        public void run() {
           String path = "http://www.oracle.com/technetwork/java/readme-2-149793.txt";
         
   URL u = null;
    try {
    u = new URL(path);
  HttpURLConnection c = (HttpURLConnection) u.openConnection();
   c.setRequestMethod("GET");
   c.connect();
   InputStream in = c.getInputStream();
 final ByteArrayOutputStream bo = new ByteArrayOutputStream();
   byte[] buffer = new byte[4096];
    in.read(buffer); // Read from Buffer.
   bo.write(buffer); // Write Into Buffer.
     runOnUiThread(new Runnable() {
       @Override
   public void run() {                                                                                       
  String ad=bo.toString();
   t.setText(ad);      
      try {
       bo.close();
      } catch (IOException e) {
    e.printStackTrace();
    }
  }
   });
   } catch (MalformedURLException e) {
   e.printStackTrace();
   } catch (ProtocolException e) {
    e.printStackTrace();
    } catch (IOException e) {
     e.printStackTrace();
   }
       if(mProgressDialog.isShowing())
        {
         mProgressDialog.dismiss();
        }
    }
}.start();   
Cấp quyền internet cho ứng dụng trong Androidmanifest.
<uses-permission android:name="android.permission.INTERNET" />

Chạy thử để thấy Dialog thông báo hiện ra lúc đọc, đọc xong nó tự biến mất.


No comments:

Post a Comment