Android 網路圖片查看器與網頁源碼查看器

来源:http://www.cnblogs.com/boket/archive/2017/04/28/6782248.html
-Advertisement-
Play Games

在AndroidManifest.xml裡面先添加許可權訪問網路的許可權: <uses-permission android:name="android.permission.INTERNET"/> 效果圖如下: 下麵是主要代碼: 1 package com.hb.neting; 2 3 import ...


在AndroidManifest.xml裡面先添加訪問網路的許可權:

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

效果圖如下

下麵是主要代碼:

 1 package com.hb.neting;
 2 
 3 import java.io.InputStream;
 4 import java.net.HttpURLConnection;
 5 import java.net.URL;
 6 
 7 import android.annotation.SuppressLint;
 8 import android.app.Activity;
 9 import android.graphics.Bitmap;
10 import android.graphics.BitmapFactory;
11 import android.os.Bundle;
12 import android.text.TextUtils;
13 import android.view.View;
14 import android.widget.EditText;
15 import android.widget.ImageView;
16 import android.widget.Toast;
17 
18 public class MainActivity extends Activity {
19     private ImageView iv_show;
20     private EditText et_input;
21     private String path;
22     private int code;
23     private HttpURLConnection conn;
24     @Override
25     protected void onCreate(Bundle savedInstanceState) {
26         super.onCreate(savedInstanceState);
27         setContentView(R.layout.activity_main);
28         iv_show=(ImageView) findViewById(R.id.iv_show);
29         et_input=(EditText) findViewById(R.id.et_inpput);
30     }
31     @SuppressLint("ShowToast") public void chakan(View view){
32         path = et_input.getText().toString().trim();
33         if (TextUtils.isEmpty(path)) {
34             Toast.makeText(MainActivity.this, "不能輸入空的", 0).show();
35             return;
36         }
37         new Thread(){
38             public void run() {
39                 try {
40                     URL url = new URL(path);
41                     conn = (HttpURLConnection) url.openConnection();
42                     conn.setRequestMethod("GET");
43                     conn.setConnectTimeout(5000);
44                     code = conn.getResponseCode();
45                     if(code==200){
46                         InputStream in = conn.getInputStream();
47                         //解析圖片
48                         final Bitmap stream = BitmapFactory.decodeStream(in);
49                         runOnUiThread(new  Runnable() {
50                             public void run() {
51                                 //更新UI
52                                 iv_show.setImageBitmap(stream);
53                             }
54                         });
55                         in.close();
56                     }
57                 } catch (Exception e) {
58                     e.printStackTrace();
59                 }
60             };
61         }.start();
62     }
63 }
View Code

這是xml的佈局:

 1 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 2     xmlns:tools="http://schemas.android.com/tools"
 3     android:layout_width="match_parent"
 4     android:layout_height="match_parent"
 5     android:orientation="vertical" >
 6 
 7     <EditText
 8         android:id="@+id/et_inpput"
 9         android:layout_width="match_parent"
10         android:layout_height="wrap_content"
11         android:hint="請輸入獲取圖片的地址:" />
12     <Button 
13         android:id="@+id/bt_read"
14         android:onClick="chakan"
15         android:layout_width="match_parent"
16         android:layout_height="wrap_content"
17         android:text="查看"
18         />
19     <ImageView
20         android:id="@+id/iv_show"
21         android:layout_width="match_parent"
22         android:layout_height="match_parent"
23         />
24 </LinearLayout>
View Code

源碼:http://pan.baidu.com/s/1bUgMgY

接著看一下網頁源碼查看器的小案例:

  既然都涉及到網路的添加一個如上的網路許可權是必不可少的了,具體操做如上所示,先看效果圖:

主要代碼:

 1 package com.hb.network;
 2 
 3 import java.io.InputStream;
 4 import java.net.HttpURLConnection;
 5 import java.net.URL;
 6 
 7 import android.annotation.SuppressLint;
 8 import android.app.Activity;
 9 import android.os.Bundle;
10 import android.os.Handler;
11 import android.os.Message;
12 import android.text.TextUtils;
13 import android.view.View;
14 import android.widget.EditText;
15 import android.widget.TextView;
16 import android.widget.Toast;
17 
18 import com.hb.utils.ReadStreamUtils;
19 
20 public class MainActivity extends Activity {
21     protected static final int SUCESS = 0;
22     protected static final int EORR = 1;
23     private TextView tv_show; 
24     private EditText et_input;
25     private URL url;
26     private String path;
27     @SuppressLint("HandlerLeak") 
28     private Handler handler=new Handler(){
29         public void handleMessage(android.os.Message msg) {
30             switch (msg.what) {
31             case SUCESS:
32                 String content=(String) msg.obj;
33                 tv_show.setText(content);
34                 break;
35 
36             case EORR:
37                 Toast.makeText(MainActivity.this,"查看源碼失敗" , 0).show();
38                 break;
39             }
40         };
41     };
42     @Override
43     protected void onCreate(Bundle savedInstanceState) {
44         super.onCreate(savedInstanceState);
45         setContentView(R.layout.activity_main);
46         tv_show=(TextView) findViewById(R.id.tv_show);
47         et_input=(EditText) findViewById(R.id.et_input);
48 
49 
50     }
51     public void onclick(View view){
52         path = et_input.getText().toString().trim();
53         if(TextUtils.isEmpty(path)){
54             return;
55         }new Thread(){
56             public void run() {
57                 try {
58                     url = new URL(path);
59                     //判斷從EditText獲取的數據否為空
60                     if(TextUtils.isEmpty(path)){
61                         return;
62                     }
63                     HttpURLConnection conn = (HttpURLConnection) url.openConnection();
64                     conn.setConnectTimeout(3000);
65                     conn.setRequestMethod("GET");
66                     int code = conn.getResponseCode();
67                     if(code == 200){
68                         InputStream is= conn.getInputStream();
69                         String content = ReadStreamUtils.Read(is);
70                         Message msg = new Message();
71                         msg.what=SUCESS;
72                         msg.obj=content;
73                         handler.sendMessage(msg);
74                     }
75                 } catch (Exception e) {
76                     e.printStackTrace();
77                     Message msg = new Message();
78                     msg.what=EORR;
79                     handler.sendMessage(msg);
80                 }
81             };
82         }.start();
83 
84     }
85 }
View Code
 1 package com.hb.utils;
 2 
 3 import java.io.ByteArrayOutputStream;
 4 import java.io.IOException;
 5 import java.io.InputStream;
 6 
 7 public class ReadStreamUtils {
 8 /**
 9  * 讀取流的輸入
10  * @param is
11  * @return
12  * @throws IOException
13  */
14     public static String Read(InputStream is) throws IOException{
15         ByteArrayOutputStream bos = new ByteArrayOutputStream();
16         int len;
17         byte [] buffer=new byte[1024];
18         while((len=is.read(buffer))!=-1){
19             bos.write(buffer,0,len);
20         }
21         is.close();
22         bos.close();
23         String temp = bos.toString();
24         if(temp.contains("charset=utf-8")){
25             return bos.toString("utf-8");
26         }else if(temp.contains("charset=iso-8859-1")){
27             return bos.toString("iso-8859-1");
28         }
29         return null;
30         
31     }
32 
33 }
View Code

及xml佈局:

 1 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 2     xmlns:tools="http://schemas.android.com/tools"
 3     android:layout_width="match_parent"
 4     android:layout_height="match_parent"
 5     android:orientation="vertical"
 6     tools:context="${relativePackage}.${activityClass}" >
 7 
 8     <EditText
 9         android:id="@+id/et_input"
10         android:layout_width="match_parent"
11         android:layout_height="wrap_content"
12         android:hint="請輸入要查看源碼的網址:" />
13 
14     <Button
15         android:onClick="onclick"
16         android:layout_width="match_parent"
17         android:layout_height="wrap_content"
18         android:text="查看"
19         android:textSize="25sp" />
20 
21     <ScrollView
22         android:layout_width="match_parent"
23         android:layout_height="match_parent" >
24 
25         <TextView
26             android:id="@+id/tv_show"
27             android:layout_width="match_parent"
28             android:layout_height="match_parent" />
29     </ScrollView>
30 
31 </LinearLayout>
View Code

  源碼:http://pan.baidu.com/s/1bUgMgY

     http://pan.baidu.com/s/1i46RQqL 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • <!DOCTYPE html><html> <head> <meta charset="UTF-8"> <title></title> <style> #div2 { width: 150px; height: 150px; position: absolute; background: #CCCC ...
  • 今天想在新項目中使用es6的generators,發現雖然gulp已經有了babel編譯,但仍會報錯,網上查找後發現解決辦法是載入polyfill,但是找到的辦法都不試用我的項目。 解決辦法:在index.html中載入node_modules的babel-polyfill,這樣就能在gulp打包編 ...
  • currentColor顧名思意就是“當前顏色”,準確講應該是“當前的文字顏色”,例如: currentColor表示“當前的標簽所繼承的文字顏色”,換種方式表示就是:currentColor = color的值。 凡事需要使用顏色值的地方,都可以使用currentColor替換,比方說背景色 – ...
  • gulp-jslint jslint是一個javascript代碼質量檢測工具。 使用教程: 1.先安裝全局npm install gulp-jslint -g 2.再安裝到你的項目里,使用命令 npm install gulp-jslint --save-dev 3.配置glupfile.js 4 ...
  • 由於angularJS的路由機制,切換頁面並不像傳統html那樣直接設置a標簽中的href屬性,進行頁面的跳轉,而實際上angularJS是單頁面應用,視圖之間的切換實際上是在切換模板文件,順便說下,好處是,頁面改變時不需要刷新,而每個頁面都展現不同的數據。尤其在使用模板頁的時候,非常方便。 ...
  • var minSize=50;var maxSize=100;var newOn=200;var flakeColor="#fff";var flak=$("<div></div>").css({"position":"absolute","top":"-50px"}).html("<img src ...
  • https方式每次都要輸入密碼,按照如下設置即可輸入一次就不用再手輸入密碼的困擾而且又享受https帶來的極速 設置記住密碼(預設15分鐘): 如果想自己設置時間,可以這樣做: 這樣就設置一個小時之後失效 長期存儲密碼: 增加遠程地址的時候帶上密碼也是可以的。(推薦) 補充:使用客戶端也可以存儲密碼 ...
  • 收錄待用,修改轉載已取得 "騰訊雲" 授權 最新騰訊雲技術公開課直播,提問騰訊W3C代表,如何從小白成為技術專家? "點擊瞭解活動詳情" 。 作者 |陳澤濱 編輯 | 顧鄉 從事 "iOS" 開發幾年,越來越發現,我們的開發者往往聚焦在程式的開發,如何實現一個功能,如何寫好一行代碼。但對iOS應用開 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...