Android Open Source - AndroidHttpTutorial Main Activity






From Project

Back to project page AndroidHttpTutorial.

License

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.

Java Source Code

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));
    }
}




Java Source Code List

com.yanlu.android.learn.imageloadtutorial.app.AsyncTaskActivity.java
com.yanlu.android.learn.imageloadtutorial.app.MainActivity.java
com.yanlu.android.learn.imageloadtutorial.app.async.SimpleTask.java
com.yanlu.android.learn.imageloadtutorial.app.model.User.java