效果图

上面是ImageView , 下面是WebView .


代码如下:

activity_main.xml:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:paddingLeft="@dimen/activity_horizontal_margin"    android:paddingRight="@dimen/activity_horizontal_margin"    android:paddingTop="@dimen/activity_vertical_margin"    android:paddingBottom="@dimen/activity_vertical_margin"    tools:context=".MainActivity">    <ImageView        android:id="@+id/image"        android:layout_width="fill_parent"        android:layout_height="wrap_content"></ImageView>    <WebView        android:id="@+id/wedView"        android:layout_width="fill_parent"        android:layout_height="fill_parent"        android:layout_below="@id/image"></WebView></RelativeLayout>

MainActivity:

/** * 在Android上发送HTTP请求的方式一般有两种,HttpURLConnection和HttpClient */public class MainActivity extends ActionBarActivity {    private WebView webView;    private ImageView imageView;    public static final int SHOW_WEDVIEW = 0;    private Handler handler = new Handler();    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        webView = (WebView) findViewById(R.id.wedView);        imageView = (ImageView) findViewById(R.id.image);        //通过网络加载图片        new ImageThread("http://gb.cri.cn/mmsource/images/2013/02/22/35/14607758026320856623.jpg",imageView,handler).start();        //在WebView中显示百度主页        new HttpThread("http://www.baidu.com",webView,handler).start();    }}

ImageThread(加载图片的线程):

public class ImageThread extends Thread {    //声明要传递的参数    private String url;    private ImageView imageView;    private Handler handler;    //创建构造方法,对参数进行初始化    public ImageThread(String url, ImageView imageView, Handler handler) {        this.url = url;        this.imageView = imageView;        this.handler = handler;    }    @Override    public void run() {        try {            //定义一个URL对象            URL httpUrl = new URL(url);            //获取HttpURLConnection的实例,表示到URL所引用的远程对象的连接            HttpURLConnection connection = (HttpURLConnection) httpUrl.openConnection();            //设置读取超时时间            connection.setReadTimeout(5000);            //设置请求方法,GET表示希望从服务器那里获取数据,而POST则表示提交数据给服务器            connection.setRequestMethod("GET");            //设置该URLConnection的doOutput请求头字段的值            connection.setDoInput(true);            //用时间作为下载的图片的文件名            String fileName = String.valueOf(System.currentTimeMillis());            File downloadFile = null;            InputStream inputStream = connection.getInputStream();            //要把文件写到SD卡,所以用FileOutputStream            FileOutputStream fileOutputStream = null;            //判断SD卡是否存在,存在就创建文件            if (Environment.getExternalStorageState().equals(                    Environment.MEDIA_MOUNTED)) {                File parent = Environment.getExternalStorageDirectory();                downloadFile = new File(parent,fileName);                fileOutputStream = new FileOutputStream(downloadFile);            }            //创建一个2K的缓冲区            byte[] bytes = new byte[2 * 1024];            int length;            if (fileOutputStream != null) {                while ((length = inputStream.read(bytes)) != -1) {                    fileOutputStream.write(bytes,0,length);                }            }            final Bitmap bitmap = BitmapFactory.decodeFile(downloadFile.getAbsolutePath());            //通过handler去更新UI            handler.post(new Runnable() {                @Override                public void run() {                    imageView.setImageBitmap(bitmap);                }            });        } catch (MalformedURLException e) {            e.printStackTrace();        } catch (IOException e) {            e.printStackTrace();        }    }}


HttpThread(加载WebView的线程):

public class HttpThread extends Thread {    //声明要传递的参数    private String url;    private WebView webView;    private Handler handler;    //创建构造方法,对参数进行初始化    public HttpThread(String url, WebView webView, Handler handler) {        this.url = url;        this.webView = webView;        this.handler = handler;    }    @Override    public void run() {        try {            //定义一个URL对象            URL httpUrl = new URL(url);            //获取HttpURLConnection的实例,表示到URL所引用的远程对象的连接            HttpURLConnection connection = (HttpURLConnection) httpUrl.openConnection();            //设置读取超时时间            connection.setReadTimeout(5000);            //设置请求方法,GET表示希望从服务器那里获取数据,而POST则表示提交数据给服务器            connection.setRequestMethod("GET");            final StringBuffer stringBuffer = new StringBuffer();            /*  getInputStream():返回该URLConnection对应的输入流,用于获取URLConnection响应的内容            *   getOutputStream():返回该URLConnection对应的输出流,用于向URLConnection发送请求参数            * */            InputStream inputStream = connection.getInputStream();            BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));            String str;            while ((str=bufferedReader.readLine())!=null) {                stringBuffer.append(str);            }            handler.post(new Runnable() {                @Override                public void run() {                    webView.loadData(stringBuffer.toString(),"text/html;charset=utf-8",null);                }            });        } catch (MalformedURLException e) {            e.printStackTrace();        } catch (IOException e) {            e.printStackTrace();        }        super.run();    }}



更多相关文章

  1. 【阿里云镜像】切换阿里巴巴开源镜像站镜像——Debian镜像
  2. Mac下Android(安卓)Studio中获取SHA1和MD5
  3. 2.28学习内容,android,dialog自定义宽高、ios判断网络可用性
  4. Android(安卓)Log Analysis转
  5. Android(安卓)性能参数获取
  6. Android多媒体学习一:Android中Image的简单实例。
  7. Android中获取当前位置信息
  8. Android之可以做的两件坏事---破解锁屏密码和获取Wifi密码
  9. android 获取 内外存储设备路径疑问

随机推荐

  1. Android中判断网络连接是否可用的方法总
  2. Android获取系统储存以及内存信息的方法(
  3. android实现手机传感器调用
  4. Nexus刷Android6.0
  5. 8.1Launcher3 去掉桌面底部渐白色部分
  6. android ssl-dl
  7. Android(安卓)创建fragment时向fragment
  8. Android原生集成react-native(二)-热更新
  9. React-native 集成react-native-getui 爬
  10. Android 自定义view的简单应用(3) 时钟