1. 程式人生 > >HttpUrlConnection網路請求,圖片+文字

HttpUrlConnection網路請求,圖片+文字

package com.wzq.urlcondemo;


import android.annotation.SuppressLint;
import android.graphics.Bitmap;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;


import com.wzq.urlcondemo.utils.NetUtil;


/**
 * 主執行緒 ---UI執行緒,不可以阻塞, 如果阻塞會報ANR(application not response)
 * 子執行緒---, 耗時操作,聯網就是耗時操作;
 *
 * 1--控制元件
 * 2--點選事件
 * 3---請求網路
 * 4 藉助handler更新UI;
 */
public class MainActivity extends AppCompatActivity {


    public String urlString = "http://api.expoon.com/AppNews/getNewsList/type/1/p/1";
    String urlBitmap = "http://img.my.csdn.net/uploads/201407/26/1406383265_8550.jpg";
    String tag = "wzq";
    private ImageView iv;
    private TextView tv;
    //定義一個handler,用來更新UI;
    @SuppressLint("HandlerLeak")
    Handler handler = new Handler(){
        @Override
        public void handleMessage(Message msg) {
            super.handleMessage(msg);
            int what = msg.what;
            if (what == 0) { //傳送的文字
                tv.setText((String)msg.obj);
            }else if(what == 1){ //傳送的是圖片;
                iv.setImageBitmap((Bitmap) msg.obj);
            }
        }
    };


    /**
     * alt+enter  自動補全
     * fbc --再tabfindViewByIde的快捷鍵;
     * ctrl+alt +F 宣告全域性變數
     * ctrl+alt +L  格式化程式碼
     * ctro+p 引數提示
     * f2 --定位程式碼錯誤位置
     *
     * @param savedInstanceState
     */
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        tv = (TextView) findViewById(R.id.tv);
        iv = (ImageView) findViewById(R.id.iv);
        setOnClickListener();


    }
    //設定監聽
    private void setOnClickListener() {
        //文字的點選事件
        tv.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {


                new Thread(){
                    @Override
                    public void run() {
                        super.run();
                        //得到從伺服器請求的json資料;
                        String json = NetUtil.getNetJson(urlString);
                        Message message = new Message();
                        message.what = 0;//代表傳送的是文字;
                        message.obj = json;
                        handler.sendMessage(message);




                    }
                }.start();
            }
        });


        //圖片的點選事件
        iv.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                new Thread(new Runnable() {
                    @Override
                    public void run() {
                        Bitmap netBitmap = NetUtil.getNetBitmap(urlBitmap);
                        //獲取message
                        Message message = Message.obtain();
                        message.what =1;//代表是傳送圖片的標記位;
                        message.obj = netBitmap;
                        handler.sendMessage(message);
                    }
                }).start();
            }
        });


    }




}