获取网络文字+图片 更新ui

来源:互联网 发布:淘宝15万贷款技术 编辑:程序博客网 时间:2024/06/16 21:58
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;
    private Handler handler = new Handler() {
        @Override
        public void handleMessage(Message msg) {
            super.handleMessage(msg);
            int what = msg.what;
            switch (what) {
                case 1://属于更新文字
                    String infoText = (String) msg.obj;
                    tv.setText(infoText);
                    break;
                case 2://更新图片
                    Bitmap bitmap = (Bitmap) msg.obj;
                    iv.setImageBitmap(bitmap);
                    break;


            }


        }
    };


    /**
     * 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);
        setClickListener();

    }

    private void setClickListener() {
        /**
         * 文字的点击事件
         */
        tv.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                //联网是耗时操作,不能直接在主线程写
                //子线程不能更新UI
                new Thread() {
                    @Override
                    public void run() {
                        super.run();
                        String netJson = NetUtil.getNetJson(urlString);
                        Gson gson = new Gson();
                        Product product = gson.fromJson(netJson, Product.class);
                        String infoText = product.getInfo();
                        Message message = new Message();
                        message.obj = infoText;
                        message.what = 1;
                        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 = handler.obtainMessage();
                        message.obj= netBitmap;
                        message.what = 2;
                        handler.sendMessage(message);

                    }
                }).start();
            }
        });

    }

}


public class NetUtil {
    private static String tag = "getNetJson";


    public static String getNetJson(String urlString) {
        try {
            //url对象封装接口字符串
            URL url = new URL(urlString);
            //用url打开连接, 返回值我们用HttpURLConnection
            HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
            urlConnection.setConnectTimeout(8000);//设置链接超时时间
            int responseCode = urlConnection.getResponseCode(); //获取状态码
            if (responseCode == 200) {
                InputStream inputStream = urlConnection.getInputStream();
                BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
                //可拼接的字符串
                StringBuilder stringBuilder = new StringBuilder();
                String temp = "";
                while ((temp = bufferedReader.readLine()) != null) {
                    stringBuilder.append(temp);


                }
                String jsonString = stringBuilder.toString();
                return jsonString;
            } else {
            }




        } catch (MalformedURLException e) {
            e.printStackTrace();
            Log.e(tag, "getNetJson: " + e.toString());
        } catch (IOException e) {
            e.printStackTrace();
            Log.e(tag, "getNetJson: " + e.toString());
        }


        return "";
    }


    /**
     * 获取网络图片
     *
     * @param urlString
     * @return
     */
    public static Bitmap getNetBitmap(String urlString) {
        try {
            URL url = new URL(urlString);
            HttpURLConnection httpurlConnection = (HttpURLConnection) url.openConnection();
            httpurlConnection.setConnectTimeout(8000);//设置链接超时时间
            int responseCode = httpurlConnection.getResponseCode();


            if (responseCode == 200) {
                InputStream inputStream = httpurlConnection.getInputStream();
                //BitmapFactory:  android提供好的加工图片的工具类,
                Bitmap bitmap = BitmapFactory.decodeStream(inputStream);
                return bitmap;
            } else {
                //do nothing
            }
        } catch (MalformedURLException e) {
            e.printStackTrace();
            Log.e(tag, "getNetBitmap: " + e.toString());
        } catch (IOException e) {
            e.printStackTrace();
            Log.e(tag, "getNetBitmap: " + e.toString());
        }
        return null;
    }


}


原创粉丝点击