Back to project page AndroidHttpTutorial.
The source code is released under:
Apache License
If you think the Android project AndroidHttpTutorial listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.
package com.yanlu.android.learn.imageloadtutorial.app; //from w w w .j a v a2s . co m import android.app.Activity; import android.app.ProgressDialog; import android.content.Intent; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.os.Bundle; import android.os.Environment; import android.os.Handler; import android.os.Message; import android.text.TextUtils; import android.text.method.ScrollingMovementMethod; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.widget.ImageView; import android.widget.TextView; import android.widget.Toast; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.Reader; import java.net.HttpURLConnection; import java.net.URL; public class MainActivity extends Activity { private ProgressDialog mProgressDialog = null; private Bitmap mBitmap; private ImageView mImageView; private String mContent; private TextView mTextView; String filePath = "http://icons.iconarchive.com/icons/yellowicon/game-stars/256/Mario-icon.png"; private Handler mHandler = new Handler() { @Override public void handleMessage(Message msg) { if (mProgressDialog != null && mProgressDialog.isShowing()) { mProgressDialog.dismiss(); } switch (msg.what) { //????? case 9999: { // ??UI????? if (mBitmap != null) { mImageView.setImageBitmap(mBitmap); } break; } //???? case 10000: { Toast.makeText(MainActivity.this, "????...", Toast.LENGTH_LONG).show(); break; } //????? case 9997: { // ??UI if (!TextUtils.isEmpty(mContent)) { // SpannableStringBuilder ss = new SpannableStringBuilder(Uri.parse(mContent)); mTextView.setText(mContent); } break; } //???? case 10001: { Toast.makeText(MainActivity.this, "????...", Toast.LENGTH_LONG).show(); break; } } } }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mImageView = (ImageView) findViewById(R.id.iv_show); mTextView = (TextView) findViewById(R.id.tv_show); mTextView.setMovementMethod(ScrollingMovementMethod.getInstance()); mImageView.setImageResource(R.drawable.ic_launcher); } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.main, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { int id = item.getItemId(); if (id == R.id.action_settings) { return true; } return super.onOptionsItemSelected(item); } public void downImage(View view) { mProgressDialog = ProgressDialog.show(this, "????", "????????????...", true); new Thread(downRunable).start(); } public void uiDownImage(View view) { mProgressDialog = ProgressDialog.show(this, "??????", "????...", true); new Thread(getDataRunable).start(); } private Runnable downRunable = new Runnable() { @Override public void run() { // ????????????handler?????? Message msg = mHandler.obtainMessage(); try { msg.what = 9999; mBitmap = getBitmapByUrl(filePath); } catch (Exception e) { msg.what = 10000; e.printStackTrace(); } mHandler.sendMessage(msg); } }; private Runnable getDataRunable = new Runnable() { @Override public void run() { // ????????????handler?????? Message msg = mHandler.obtainMessage(); try { msg.what = 9997; mContent = getDataByUrl("http://tomp110.me/webapi/fragment/left"); } catch (Exception e) { msg.what = 10001; e.printStackTrace(); } mHandler.sendMessage(msg); } }; /** * ???? */ public Bitmap getBitmapByUrl(String uri) throws Exception { URL url = new URL(uri); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn.setConnectTimeout(5 * 1000); conn.setRequestMethod("GET"); if (conn.getResponseCode() == HttpURLConnection.HTTP_OK) { Bitmap bitmap = BitmapFactory.decodeStream(conn.getInputStream()); saveFile(bitmap, System.currentTimeMillis() + ".jpg"); return bitmap; } return null; } private final static String IMAGE_PATH = Environment.getExternalStorageDirectory() + "/download_image/"; /** * ????? */ public void saveFile(Bitmap bm, String fileName) throws IOException { File dirFile = new File(IMAGE_PATH); if (!dirFile.exists()) { dirFile.mkdir(); } File file = new File(IMAGE_PATH + fileName); BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(file)); bm.compress(Bitmap.CompressFormat.JPEG, 100, bos); bos.flush(); bos.close(); } /** * getData() */ public String getDataByUrl(String uri) throws Exception { URL url = new URL(uri); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn.setConnectTimeout(5 * 1000); conn.setRequestMethod("GET"); if (conn.getResponseCode() == HttpURLConnection.HTTP_OK) { // BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(conn.getInputStream())); // int charRead = 0; // char[] buffer = new char[1024]; // StringBuilder sb = new StringBuilder(); // while ((charRead = bufferedReader.read(buffer)) > 0) { // sb.append(buffer, 0, charRead); // } // bufferedReader.close(); // ?GBK?????? InputStream is = conn.getInputStream(); char[] buf = new char[1024]; Reader r = new InputStreamReader(is, "GBK"); // Reader r = new InputStreamReader(is, "UTF-8");//??? StringBuilder s = new StringBuilder(); int n; while ((n = r.read(buf)) >= 0) { s.append(buf, 0, n); } return s.toString(); // InputStream in = conn.getInputStream(); // ByteArrayOutputStream out = new ByteArrayOutputStream(); // // int count; // byte[] buffer = new byte[1024]; // // while ((count = in.read(buffer)) != -1) { // out.write(buffer, 0, count); // } // in.close(); // // return new String(out.toByteArray(), "GBK"); } return null; } public void onAsynctaskActivity(View view) { startActivity(new Intent(this, AsyncTaskActivity.class)); } }