android上webview界面切换效果

     大家有没有遇到过这种需求,使用android上的webview控件时需要跳转到下一个html时,要求当前界面缓缓的向左移动,下一个html界面缓缓的从右边出现。

     这是当时在公司做基于phonegap的项目时用到的,在extends WebChromeClient的类中实现的方法里加上如下代码:

@Override
		public void onProgressChanged(WebView view, int newProgress) {
			if(newProgress==100){
				if(iamgeView!=null)
				iamgeView.setVisibility(View.GONE);
				//view.setVisibility(View.VISIBLE);
			
				//DroidGap.this.root.addView(view);
			
				System.out.println("加载完成");
				Animation translate_in=AnimationUtils.loadAnimation(DroidGap.this, R.drawable.translate_in);
				
				
    			translate_in.setFillAfter(true);
    			translate_in.setDuration(1000);
    			translate_in.setDetachWallpaper(true);
    		//	translate_in.
    			view.setAnimation(translate_in); 
    			
    			
    			
	Animation translate_out=AnimationUtils.loadAnimation(DroidGap.this, R.drawable.translate_out);
				
	translate_out.setAnimationListener(new AnimationListener(){

		@Override
		public void onAnimationEnd(Animation animation) {
			if(null!=iamgeView){
				DroidGap.this.root.removeView(iamgeView);
				iamgeView=null;
			}
			
		}

		@Override
		public void onAnimationRepeat(Animation animation) {
			// TODO Auto-generated method stub
			
		}

		@Override
		public void onAnimationStart(Animation animation) {
			// TODO Auto-generated method stub
			
		}
		
	});
	translate_out.setFillAfter(true);
	translate_out.setDuration(1000);
	translate_out.setDetachWallpaper(true);
    		//	translate_in.
	if(null!=iamgeView){
		iamgeView.setAnimation(translate_out); 
	}  			
			}else{
				
				if(null==iamgeView){
					
					iamgeView=new ImageView(DroidGap.this);

					view.setDrawingCacheEnabled(true);
					Bitmap bitmap=view.getDrawingCache();
					if(null!=bitmap){
						Bitmap b=	Bitmap.createBitmap(bitmap);
						iamgeView.setImageBitmap(b);
					}
							DroidGap.this.root.addView(iamgeView);
				}
				}
			super.onProgressChanged(view, newProgress);
		}

 

iamgeView:自己定义的ImageView控件。

R.drawable.translate_in:进入的translate动画,

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" >
     <translate android:fromXDelta="100%" android:toXDelta="0%p"  
	        android:duration="100" />  
    
</set>

R.drawable.translate_out:出的translate动画,

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
     <translate android:fromXDelta="0%" android:toXDelta="-100%p"  
	        android:duration="100" />  
    
</set>



该代码详细描述:在onProgressChanged方法中,首先判定是否加载进度是否到100,

在没有执行完的情况下,先去new ImageView对象,iamgeView=new ImageView(DroidGap.this);

然后进行设置view.setDrawingCacheEnabled(true);很重要的一句话,

为了下面能够对webview界面截取图片,即 Bitmap bitmap=view.getDrawingCache();

然后添加到当前的Linearlayout布局中即DroidGap.this.root.addView(iamgeView);

如果下面的页面加载完成了,就执行进入动画,即view.setAnimation(translate_in);

同时对该Imageview执行out动画,并且在动画的监听的结束时执行 

DroidGap.this.root.removeView(iamgeView);即清除掉当前生成的屏幕截图。
iamgeView=null;

 

第一次写,因为是一个小功能模块,这里大家可以放到自己的项目里试一下,主要代码就这么多,OK的,有问题的话再交流。

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值