Android开源:WebViewProgress - 用户体验超棒的微信WebView进度条

iqpz8213 7年前
   <pre>  <code class="language-java">现在微信的用户体验一直被产品经理们所推崇,今天这里具体分析一下微信在WebView的进度条上怎么提升用户体验.</code></pre>    <p>最终微信的加载进度条的效果图</p>    <ul>     <li><strong>网络正常的状态</strong> ,分为两种加载速度,前部分正常速度加载,后边速度特意放慢,让用户感觉到你在非常卖力的在进行网络请求.</li>    </ul>    <p style="text-align:center"><img src="https://simg.open-open.com/show/c7bd522a4bd28accf33b0d62388d698e.gif"></p>    <ul>     <li><strong>断开网络的状态</strong> : 进度条还是分为两种速度,类似于网络正常的状态,也能让用户感觉到你在非常卖力的在进行网络请求.</li>    </ul>    <p style="text-align:center"><img src="https://simg.open-open.com/show/a8ae38a0fc6e510cac01d139273c1f76.gif"></p>    <p>实现的思路</p>    <ol>     <li>大方面要分两种情况:没有网络,有网络情况</li>     <li>实现加载进度条的两种速度,前边比较快,后边估计放缓慢</li>     <li>利用自定义View属性动画实现进度条的流畅加载</li>     <li>进度条的渐变消失</li>    </ol>    <p>遇到的难点,踩过的坑</p>    <ol>     <li style="text-align:center"> <p style="text-align: left;">进度条的位置问题</p> <p style="text-align:left">进度条加载完成后消失,是invisible还是gone掉,前者会留下一片空白,后者会让下边的webview向上跳一下。有人会说获取网页的颜色,然后把进度条的颜色换成相对应的颜色,这个太复杂了。然后仔细看微信的实现方案,发现在相对布局xml中直接把进度条放到webview后边,然后置顶就可以了,加载完毕后就会消失。</p> <img src="https://simg.open-open.com/show/6c56e79b9bb41f76c2f103ffe21d3d03.png"></li>     <li style="text-align:center"> <p style="text-align:left">断开网络状态下,错误拦截状态下onProgressChanged还是会从0到100,会出现两个进度条,解决办法办法倒是简单,当时可是没想通,断网居然还走这个方法.</p> <img src="https://simg.open-open.com/show/6a789e65f8bb66fa896969b809c07bea.png"></li>     <li>两种进度条加载速度的实现和进度条的流畅加载<br> <strong>流畅加载 :</strong> :我这里自定义View来实现的,通过属性动画来实现流畅加载</li>    </ol>    <p style="text-align:center"><br> <img src="https://simg.open-open.com/show/aa86669a45614fb2a94e22c68c153f76.png"></p>    <p><br> <strong>两种加载速度 :</strong><br> 这里自定义View里边设置方法和方法回调</p>    <p style="text-align:center"><br> <img src="https://simg.open-open.com/show/191570eca4db3f92aad5a2d349afe1cc.png"></p>    <p><br> 两种加载速度的具体实现</p>    <p style="text-align:center"><br> <img src="https://simg.open-open.com/show/5daea8fc46ccfd9b8d24f3fdb5f9fec4.png"></p>    <p> </p>    <p> </p>    <p> </p>    <p> </p>