您的位置:首页 > 理论基础 > 计算机网络

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

2017-11-06 14:39 218 查看
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;

    }

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: