课程咨询 :18357109557 QQ:3163902815

杭州达内T计划

  • 达内:Android 本地加载网页&显示网络图片

    发布:杭州android中心      来源:慕课网      时间:2016-02-04


  •     杭州达内Android培训专家讲一下Android 本地加载网页以及显示网络图片的方法步骤。

    WebView的用法
     
        如果说需要在应用程序里展示一些网页,而不希望打开系统浏览器,这时就可以借助 WebView控件在应用程序里嵌入一个浏览器,从而非常轻松地展示各种网页。

        由于程序使用到了网络功能,因此需要添加网络访问权限:


        <uses-permission android:name="android.permission.INTERNET" />


        在activity_main.xml 中添加 WebView 控件,用于显示网页:


    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <WebView
            android:id="@+id/web_view"
            android:layout_width="match_parent"
            android:layout_height="match_parent"></WebView>
    </LinearLayout>


        最后在 MainActivity 中为浏览器设置属性并传入地址:


    public class MainActivity extends AppCompatActivity {
        private WebView webView;

        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.web_image);
            setContentView(R.layout.activity_main);
            webView = (WebView) findViewById(R.id.web_view);

            //调用setJavaScriptEnabled()方法让WebView支持JS脚本
            webView.getSettings().setJavaScriptEnabled(true);
            //跳转网页仍然在当前WebView中显示
            webView.setWebViewClient(new WebViewClient());
            //调用loadUrl()方法,并传入网址,展示相应内容
            webView.loadUrl("https://www.baidu.com");
        }
    }


    动态加载网络图片
     
        和 WebView 一样,加载网络图片也需要网络访问权限:


        <uses-permission android:name="android.permission.INTERNET" />


        载入图片的原理:根据图片地址获取图片,并将图片由文件流转换为位图对象。

        载入图片的过程必须进行异步处理,否则就很容易出现程序无响应(Application Not Responding)的情况。

        创建一个 LoadImagesTask 类,继承自 AsyncTask:


    import android.graphics.Bitmap;
    import android.graphics.BitmapFactory;
    import android.os.AsyncTask;
    import android.widget.ImageView;

    import java.io.IOException;
    import java.io.InputStream;
    import java.net.HttpURLConnection;
    import java.net.MalformedURLException;
    import java.net.URL;

    public class LoadImagesTask extends AsyncTask<String, Void, Bitmap> {
        private ImageView imageView;

        public LoadImagesTask(ImageView imageView) {
            this.imageView = imageView;
        }

        @Override
        protected Bitmap doInBackground(String... params) {
            URL imageUrl = null;
            Bitmap bitmap = null;
            InputStream inputStream = null;
            try {
                imageUrl = new URL(params[0]);
                HttpURLConnection conn = (HttpURLConnection) imageUrl.openConnection();
                conn.setDoInput(true);
                conn.connect();
                inputStream = conn.getInputStream();
                bitmap = BitmapFactory.decodeStream(inputStream);
                inputStream.close();

            } catch (MalformedURLException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
            return bitmap;
        }

        @Override
        protected void onPostExecute(Bitmap bitmap) {
            imageView.setImageBitmap(bitmap);
        }
    }


        异步处理就是在主线程和子线程进行通信,子线程处理耗时任务,并将结果返回到主线程。AsyncTask 将这个过程进行了包装。

        最后在 MainActivity 中进行测试,代码如下:


    public class MainActivity extends AppCompatActivity {
        private ImageView imageView;

        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.web_image);

            String http = "http://img4.duitang.com/uploads/item/" +
                    "201403/27/20140327194516_SaKBX.png";
            ImageView imageView = (ImageView) findViewById(R.id.image_view);
            //启动异步任务,加载网络图片
            new LoadImagesTask(imageView).execute(http);
        }
    }




    原文链接:http://www.imooc.com/article/4723

上一篇:安卓6.0全球普及率刚超过1%

下一篇:10大开源的移动应用开发框架

最新开班日期  |  更多

Android--零基础全日制

Android--零基础全日制

开班日期:每月28日

Android--零基础周末班

Android--零基础周末班

开班日期:每月28日

Android--优质全日制班

Android--优质全日制班

开班日期:每月28日

Android--优质周末班

Android--优质周末班

开班日期:每月28日

  • 地址:杭州市西湖区文三路259号昌地火炬大厦1号楼14层
  • 课程培训电话:18357109557 QQ:3163902815     全国服务监督电话:400-111-8989
  • 服务邮箱 tousu@tedu.cn
  • 2001-2016 达内时代科技集团有限公司 版权所有 京ICP证8000853号-56