AgentWeb , 一個簡潔易用的 Android Web 庫

AgentWeb 介紹

AgentWeb 是一個高度封裝的 Android WebView ,簡單易用 , 帶有進度條 、 支持文件上傳 、 下載 、 簡化 Javascript 通信 ,加強 Web 安全的庫 。 App 下載體驗

前言

WebView 可謂是每個應用必備的一個控件了 ,但是談起它的使用 ,讓很多人都不是那么喜歡它 ,比如說每個 Web 頁面都需要各種一大推的 setting ,好一點的可能封裝成一個 BaseWebActivity 和 BaseWebFragment ,但是重復的代碼總是讓有潔癖的程序員不舒服 ,而且 WebView 本身功能也不是很完善 , AgentWeb 就泥補了這些空缺 。

AgentWeb 功能

  1. 支持進度條以及自定義進度條
  2. 支持文件下載
  3. 支持文件斷點續傳
  4. 支持下載通知形式提示進度
  5. 簡化 Javascript 通信
  6. 支持返回事件處理
  7. 支持注入 Cookies
  8. WebView 安全

為什么要使用 AgentWeb ?

七個字 ,簡潔易用體驗好 。 最重要的是 WebView 很多東西不支持呀 , 坑太多!

Web 文件下載 文件上傳 Js通信 斷點續傳 使用簡易度 進度條 線程安全
WebView 不支持 不支持 支持 不支持 麻煩 沒有 不安全
AgentWeb 支持 支持 更簡潔 支持 簡潔 安全

簡潔易用

為什么說它簡潔易用嗎 ? 下面京東商城效果圖 , 只需一句話 !

mAgentWeb = AgentWeb.with(this)//傳入Activity
                .setAgentWebParent(mLinearLayout, new LinearLayout.LayoutParams(-1, -1))//傳入AgentWeb 的父控件 ,如果父控件為 RelativeLayout , 那么第二參數需要傳入 RelativeLayout.LayoutParams
                .useDefaultIndicator()// 使用默認進度條
                .defaultProgressBarColor() // 使用默認進度條顏色
                .setReceivedTitleCallback(mCallback) //設置 Web 頁面的 title 回調
                .createAgentWeb()//
                .ready()
                .go("http://www.jd.com");

你沒看錯 ,里面沒有一句 Setting , 甚至連 WebChromeClient 都不配置就有進度條 。

Javascript 通信拼接太麻煩 ? 請看 。

//Javascript 方法
function callByAndroid(){
      console.log("callByAndroid")
  }


Android 端

mAgentWeb.getJsEntraceAccess().quickCallJs("callByAndroid");

結果

05-27 08:27:04.945 469-469/com.just.library.agentweb:web I/Info: consoleMessage:callByAndroid  lineNumber:27

京東商城效果圖

京東效果圖

到了這里 , 弱弱問一句 , 你還有什么理由不使用 AgentWeb ?

淺談進度條

為什么要談一下進度條這個東西呢 ? 因為沒有進度條的 WebView 頁面體驗實在太差了 ,AgentWeb 默認的進度條是一般瀏覽器的進度條 ,為什么采用這種進度條呢 ? 因為體驗好 ,微信和QQ ,支付寶 、 UC 以及 Safari 都采用這種進度條是有他們道理的 , 我還見過應用加載 Web 頁面的時候直接彈 Dialog 不可取消 ,這種惡心的做法 ,沒有非常必要讓用戶確定情況都別彈 Dialog ,特別在用戶網絡不好的情況下 ,加載速度變得突奇的慢 ,那么 Dialog 就一直存在 ,用戶耐性不好 ,只能把你進程殺死 。

Agentweb 視圖結構

    <FrameLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <WebView
            android:layout_width="match_parent"
            android:layout_height="match_parent">

        </WebView>
         <!--進度條-->
        <com.just.library.BaseIndicatorView
            android:layout_width="match_parent"
            android:layout_height="2dp"
            >

        </com.just.library.BaseIndicatorView>
    </FrameLayout>

很清晰 AgentWeb 最外層是 FrameLayout , 所以在使用 AgentWeb 的時候還需要給 FrameLayout 指定父控件(下面有使用方式) 。

引入

  • Gradle

    compile 'com.just.agentweb:agentweb:1.0.3'
    
  • Maven

    <dependency>
      <groupId>com.just.agentweb</groupId>
      <artifactId>agentweb</artifactId>
      <version>1.0.3</version>
      <type>pom</type>
    </dependency>
    
    

用法

Activity 使用如下

mAgentWeb = AgentWeb.with(this)//傳入Activity
                .setAgentWebParent(mLinearLayout, new LinearLayout.LayoutParams(-1, -1))//傳入AgentWeb 的父控件 ,如果父控件為 RelativeLayout , 那么第二參數需要傳入 RelativeLayout.LayoutParams
                .useDefaultIndicator()// 使用默認進度條
                .defaultProgressBarColor() // 使用默認進度條顏色
                .setReceivedTitleCallback(mCallback) //設置 Web 頁面的 title 回調
                .createAgentWeb()//
                .ready()
                .go("http://www.jd.com");

Fragment 使用如下

@Override
    public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
        super.onViewCreated(view, savedInstanceState);
        mAgentWeb = AgentWeb.with(this.getActivity(), this)//這里需要把 Activity 、 和 Fragment  同時傳入
                .setAgentWebParent((ViewGroup) view, new LinearLayout.LayoutParams(-1, -1))// 設置 AgentWeb 的父控件 , 這里的view 是 LinearLayout , 那么需要傳入 LinearLayout.LayoutParams
                .useDefaultIndicator()// 使用默認進度條
                .setReceivedTitleCallback(mCallback) //標題回調
                .setSecurityType(AgentWeb.SecurityType.strict) //注意這里開啟 strict 模式 , 設備低于 4.2 情況下回把注入的 Js 全部清空掉 , 這里推薦使用 onJsPrompt 通信
                .createAgentWeb()//
                .ready()//
                .go(getUrl());
        
    }

混淆


-keep public class * extends android.webkit.WebChromeClient

總結

AgentWeb 是一個把 WebView 完全代理出來 , 脫離 Activity 、 Fragment xml 布局 , Android Web 庫 。

地址 : AgentWeb 歡迎star

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 227,797評論 6 531
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,179評論 3 414
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 175,628評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,642評論 1 309
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,444評論 6 405
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 54,948評論 1 321
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,040評論 3 440
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,185評論 0 287
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,717評論 1 333
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,602評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,794評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,316評論 5 358
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,045評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,418評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,671評論 1 281
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,414評論 3 390
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,750評論 2 370

推薦閱讀更多精彩內容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,603評論 25 707
  • 內容抽屜菜單ListViewWebViewSwitchButton按鈕點贊按鈕進度條TabLayout圖標下拉刷新...
    皇小弟閱讀 46,838評論 22 665
  • 發現 關注 消息 iOS 第三方庫、插件、知名博客總結 作者大灰狼的小綿羊哥哥關注 2017.06.26 09:4...
    肇東周閱讀 12,150評論 4 61
  • 調度 fg、bg、jobs、&、 ctrl+z都是跟系統任務有關的 &這個用在一個命令的最后,可以把這個命令放到后...
    xlliu閱讀 219評論 0 0
  • 我剛從北京撤回滬寧線上的三線小城的時候,無數次想著重新回去。這里除了天氣比北京好,工作比北京輕松,我實在找不到還有...
    彭小六閱讀 4,412評論 66 90