一:通过Http 下载百度源码加载到 WebView显示

1:需要访问网络必须先要获取网络权限:

   
    
2:在xml文件 定义Webview。

3:因为网络数据加载延迟问题,所以必须要用线程类来显示网页:

package testHttp;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.net.HttpURLConnection;import java.net.MalformedURLException;import java.net.URL;import org.apache.http.HttpConnection;import android.R.string;import android.os.Handler;import android.webkit.WebView;public class HttpThread extends Thread{private String url;private WebView webView;private Handler handler;HttpThread(String url,WebView webView,Handler handler){this.url=url;this.webView=webView;this.handler=handler;}@Overridepublic void run() {try {URL httpUrl=new URL(url); try {HttpURLConnection httpConnection=(HttpURLConnection) httpUrl.openConnection();//建立http连接httpConnection.setReadTimeout(5000);//设置超时时间httpConnection.setRequestMethod("GET");//设置请求为GET方法final StringBuffer bufferString=new StringBuffer();//用Stringbuffer来存储读到的代码BufferedReader reader=new BufferedReader(new InputStreamReader(httpConnection.getInputStream()));String str;while((str=reader.readLine())!=null){bufferString.append(str);}handler.post(new Runnable() {@Overridepublic void run() {
webView.loadData(bufferString.toString(), 
"text/html;charset=utf-8", null);//将webView显示到网页上,还是要想 Web一样设置其编码}});} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}} catch (MalformedURLException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}

4:在MainActivity中建立线程,并传参数到Thread:

package testHttp;import com.example.androidtest.R;import android.app.Activity;import android.os.Bundle;import android.os.Handler;import android.webkit.WebView;public class TestHttpActivity extends Activity{private WebView webView;private String urlString="http://www.baidu.com";Handler handler=new Handler();@Overrideprotected void onCreate(Bundle savedInstanceState) {// TODO Auto-generated method stubsuper.onCreate(savedInstanceState);setContentView(R.layout.http_main_activity);webView=(WebView) findViewById(R.id.httpWebView);new HttpThread(urlString, webView, handler).start();}}

二:使用http协议在app中加载图片:

1:手写也是网络权限;

2:在xml文件 定义ImageView。

3:使用http获取网络图片,但是不同的是现在要通过二进制流来获取图片了。

先用二进制流获取到图片到本地之后,再用本地地址打开图片到ImageView:

package testHttp;import java.io.BufferedReader;import java.io.File;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.net.HttpURLConnection;import java.net.MalformedURLException;import java.net.URL;import org.apache.http.HttpConnection;import android.R.string;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.os.Environment;import android.os.Handler;import android.webkit.WebView;import android.widget.ImageView;public class HttpThread extends Thread{private String url;private ImageView imageView;private Handler handler;HttpThread(String url,ImageView imageView,Handler handler){this.url=url;this.imageView=imageView;this.handler=handler;}@Overridepublic void run() {try {URL httpUrl=new URL(url);try {HttpURLConnection httpConnection=(HttpURLConnection) httpUrl.openConnection();httpConnection.setReadTimeout(5000);httpConnection.setRequestMethod("GET");httpConnection.setDoInput(true); //允许写InputStream inputStream=httpConnection.getInputStream();FileOutputStream fileOutputStream=null;File downFile=null;String fileNameString=String.valueOf(System.currentTimeMillis());if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){File parentFile=Environment.getExternalStorageDirectory();//获取本地路径downFile=new File(parentFile, fileNameString);fileOutputStream = new FileOutputStream(downFile);}byte[] bt=new byte[2*1024];int len;if(fileOutputStream!=null){while((len=inputStream.read(bt))!=-1){fileOutputStream.write(bt, 0, len);}}final Bitmap bitmap=BitmapFactory.decodeFile(downFile.getAbsolutePath());handler.post(new Runnable() {@Overridepublic void run() {// TODO Auto-generated method stubimageView.setImageBitmap(bitmap);}});} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}} catch (MalformedURLException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}




更多相关文章

  1. Android应用请求获取Root权限
  2. Android之如何获取网络类型并判断是否可用
  3. Android基本功:支持GPS的核心API
  4. 获取应用程序中的Activity,Service等
  5. android监听网络状态,实时更新网络状态
  6. Android图片查看器(图片可移动、缩放、旋转)
  7. xml中Android的解析
  8. Android(安卓)ScrollView中包含EditText时ScrollView中控件改变
  9. Android之版本检测和更新

随机推荐

  1. Android(安卓)Studio 安装No JVM Install
  2. DroidInfo v0.2.1 手机信息查询应用
  3. Android加载长图之Scrollview嵌套ImageVi
  4. Android(安卓)Bitmap常见用法
  5. andorid中的html.fromhtml方法
  6. Android(安卓)ConstraintLayout布局详解
  7. Android(安卓)5.0——Material Design详
  8. android 自定义view中onMeasure()
  9. Android(安卓)activity四种启动模式完全
  10. 强大的网络通信框架(实现缓存)--第三方开源