`

WebView 添加gif 加载效果

阅读更多
package com.careland.bank;

import android.app.Activity;
import android.graphics.Bitmap;
import android.os.Bundle;
import android.webkit.WebView;
import android.webkit.WebViewClient;

public class AnroidBankActivity extends Activity {
    /** Called when the activity is first created. */
	
	private WebView web;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        web=(WebView) this.findViewById(R.id.web);
        web.loadUrl("http://www.baidu.com");
        web.setWebViewClient(new WebViewClient(){

			@Override
			public boolean shouldOverrideUrlLoading(WebView view, String url) {
				// TODO Auto-generated method stub
				view.loadUrl(url);
				return true;
			}

			@Override
			public void onPageStarted(WebView view, String url, Bitmap favicon) {
				// TODO Auto-generated method stub
				super.onPageStarted(view, url, favicon);
				((CLDWebView)view).showloding();
			}

			@Override
			public void onPageFinished(WebView view, String url) {
				// TODO Auto-generated method stub
				super.onPageFinished(view, url);
				((CLDWebView)view).hideloding();
				
			}
        	
        });
        
    }
}

 

package com.careland.bank;

import android.content.Context;
import android.util.AttributeSet;
import android.view.View;
import android.webkit.WebView;

import com.ant.liao.GifView;
import com.ant.liao.GifView.GifImageType;

public class CLDWebView extends WebView {

	private GifView gif;
	public CLDWebView(Context context, AttributeSet attrs) {
		super(context, attrs);
	
	}

	public CLDWebView(Context context) {
		super(context);
		// TODO Auto-generated constructor stub
	}

	public CLDWebView(Context context, AttributeSet attrs, int defStyle) {
		super(context, attrs, defStyle);
		
	}
	@Override
	protected void onMeasure(int w, int h)
	{
		super.onMeasure(w, h);
//		if(gif!=null)
//		{
//			gif.setShowDimension(128, 128);
//		}
	}
	//初始化gif 加入webview
	@Override
    protected void onAttachedToWindow()
	{
		super.onAttachedToWindow();
		if(gif==null)
		{
			gif=new GifView(this.getContext());
			gif.setGifImageType(GifImageType.COVER);
			gif.setShowDimension(128, 128);
			gif.setGifImage(R.drawable.a);
			this.addView(gif);
			
		}
		
	}
	//始终居中显示loading.gif
	@Override 
	protected void onSizeChanged(int w, int h, int ow, int oh)
	{
		super.onSizeChanged(w, h, ow, oh);
		if(gif!=null)
		{
			this.gif.setLayoutParams(new LayoutParams(128,128,(w-128)/2,(h-128)/2));
		}
	}
	public void showloding(){
		if(gif!=null)
		{
			
			gif.setVisibility(View.VISIBLE);
			gif.showAnimation();//显示动画
		}
			
	}
	public void hideloding(){
		if(gif!=null)
		{
			gif.setVisibility(View.INVISIBLE);
			gif.showCover();//gif 显示第一帧 降低内存
		}
	}
	
	
	

}

 

<?xml version="1.0" encoding="utf-8"?>
<AbsoluteLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical">
    
	<!-- 
	<WebView android:id="@+id/web" android:layout_width="fill_parent" android:layout_height="fill_parent"/>
	 -->
    <com.careland.bank.CLDWebView android:id="@+id/web" android:layout_width="fill_parent" android:layout_height="fill_parent"></com.careland.bank.CLDWebView>
</AbsoluteLayout>

 

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.careland.bank"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk android:minSdkVersion="8" />

    <application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name" >
        <activity
            android:label="@string/app_name"
            android:name=".AnroidBankActivity" >
            <intent-filter >
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
	<permission android:name="android.permission.INTERNET"></permission>
</manifest>

 

0
1
分享到:
评论

相关推荐

    Android用WebView播放gif

    这样,`WebView`就能正确地加载和播放GIF了。 另外,为了提高用户体验,你可能需要处理`WebView`的一些事件,例如加载开始、结束或者加载失败等: ```java webView.setWebChromeClient(new WebChromeClient()); ...

    Android代码-如何使用GIF图片.zip

    创建一个WebView并加载GIF图片的URL或Base64编码,如下: ```java WebView webView = new WebView(this); webView.getSettings().setJavaScriptEnabled(true); webView.loadUrl("data:image/gif;base64," + ...

    swift-WKWebView显示HTML中的GIF动图WebP无损图片最简单最方便的接入

    webView.webViewDelegate = self // 如果需要,设置代理来监听加载事件 view.addSubview(webView) let html = """ &lt;!DOCTYPE html&gt; """ webView.loadHTMLString(html, baseURL: nil) ``` 这里的`path_to_your...

    WebView详解

    1. **LoadUrl**:直接加载并显示本地或网络上的网页、图片或GIF。 ```java webView.loadUrl("http://www.example.com"); ``` 2. **LoadData**:仅在模拟器1.5和1.6版本中可用,用于显示文本和图片内容。 ```...

    webview demo

    在Android开发中,WebView是一个非常重要的组件,...同时,提供的"微信图片_20190128121357.gif"可能是对交互过程的一个示例图,而"Webview.zip"可能包含了一个完整的WebView交互演示项目,可以作为学习和参考的资源。

    IOS webview 图片弹出

    综上所述,"IOS webview 图片弹出"涉及到的主要知识点包括:iOS Webview的使用(`UIWebView`或`WKWebView`),JavaScript与Native代码的交互,图片加载与处理,以及用户交互体验的优化。在实际开发中,理解并熟练...

    android4.0以上可以放置gif的demo

    Glide 是一个非常流行的Android图片加载库,它也支持GIF加载。在使用Glide加载GIF时,我们需要添加Glide的依赖到项目的build.gradle文件中: ```gradle dependencies { implementation '...

    Android实现Gif动画

    在Android平台上,实现Gif动画是一项常见的任务,无论是用于加载指示器、按钮效果还是其他动态交互,Gif格式因其小巧且支持连续播放的特性而受到开发者们的青睐。本篇文章将详细探讨如何在Android应用中集成并播放...

    gif动画.zip

    GIF(Graphics Interchange Format)是一种广泛用于网络的图像文件格式,它支持透明度和循环播放的动画效果,这使得GIF在移动应用中的通知、图标、加载指示器等方面有着广泛应用。 标题“gif动画.zip”暗示我们将...

    JianDan-高仿煎蛋客户端.zip

    显著提高加载速度,节省大量流量修改图片详情页为完全沉浸效果添加图片列表滚动检测,滚动状态暂停加载,进一步提高加载速度,减少卡顿添加图片加载默认图片添加当前栏目标志,避免重复切换修改新鲜事列表页效果为...

    Android项目源码煎蛋网非官方客户端项目源码.zip

    WebView与JS通信,及加载本地缓存图片的实现 RecyclerView自动加载、加载完成回调,以及item进入动画 多楼层回复自定义控件的实现 严格模式(StrictMode)的设置及用法 使用GreenDao对数据进行本地缓存 对网络...

    android 显示gif图片实例详解

    - Android-Universal-Image-Loader:另一个强大的图片加载库,也支持GIF加载。 总结,虽然Android原生不支持在ImageView中显示GIF,但我们可以利用WebView或者第三方库来实现这一功能。在本例中,我们展示了如何...

    GifLoadingView-master.zip

    考虑到是加载指示器,它可能使用了帧动画(`AnimationDrawable`)或者`ObjectAnimator`来平滑地展示GIF加载过程。 4. **性能优化**:为了减少内存占用,`GifLoadingView`可能实现了暂停、恢复和释放GIF动画的功能。...

    播放动态图片

    3. **Glide或Picasso**:这些流行的图片加载库都支持GIF加载和播放。Glide通过集成GIFDecoder,可以直接在ImageView中显示GIF。 4. **AndroidX ImageLoader**:AndroidX库提供了一个名为`androidx.palette.graphics...

    Android中播放Gif动画取巧的办法

    总的来说,利用WebView播放Gif动画是一种实用的技巧,尤其适用于那些只需要简单Gif播放效果,而又不想引入额外依赖的项目。不过,对于更复杂的场景,还是建议使用专门为Android设计的Gif处理库。

    UIWebView+html+css

    一种常见方法是将GIF转换为一系列静态图片,然后用JavaScript动态切换图片来模拟动画效果。另一种方法是使用第三方库,如`SDWebImage`,它可以自动处理GIF动图并在UIWebView中显示。 五、HSWebViewSample ...

    Android高级应用源码-仿QQ聊天界面,可发png,gif,图文混排.zip

    - 为了提升用户体验,可以添加消息发送的动画效果,例如使用`ObjectAnimator`或`ValueAnimator`实现消息气泡的渐隐渐现,滑动进入屏幕等效果。 总的来说,这个项目涵盖了Android开发中的多个重要方面,对于提升...

    SpiderWebView.zip

    在这个项目中,"SpiderWebView" 可能是对WebView进行了扩展或定制,添加了特殊的视觉效果,如动态背景。 动态背景在Android中通常通过动画实现。Android提供了多种动画机制,包括属性动画(Property Animation)、...

    浅析IOS中播放gif动态图的方法

    只需要将GIF文件的URL设置为WebView的请求,或者直接将GIF数据作为HTML内容的一部分加载,WebView就会自动播放GIF动态图。这种方式虽然简单,但效率较低,且可能会引起额外的内存占用和性能问题。 为了在不使用...

Global site tag (gtag.js) - Google Analytics