使用Android上的webview控件时需要跳转到下一个html时,要求当前界面缓缓的向左移动,下一个html界面缓缓的从右边出现。这与常规动画不同,一般方式将无法制作出动画。主要实现方法可以先保存上一个网页的快照,与将要跳转的页面结合起来,制作相关动画。

下面是主要代码:

@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);          }
<span style="color: rgb(51, 51, 51); font-family: tahoma, 宋体; font-size: 14px; line-height: 22.3999996185303px; text-align: justify; background-color: rgb(250, 250, 252);">其中的iamgeView:自己定义的ImageView控件。</span>
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>
<span style="color: rgb(51, 51, 51); font-family: tahoma, 宋体; font-size: 14px; line-height: 22.3999996185303px; text-align: justify; background-color: rgb(250, 250, 252);">R.drawable.translate_out:出的translate动画</span>
<span style="color: rgb(51, 51, 51); font-family: tahoma, 宋体; font-size: 14px; line-height: 22.3999996185303px; text-align: justify; background-color: rgb(250, 250, 252);"></span><pre name="code" class="html"><?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();

之后将bitmap加到imageview中:imageview.setImageBitmap(bitmap);

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

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

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

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

iamgeView=null;

最后一点要注意清除截图,否则android虚拟机可能会出现报错。
  

版权声明:本文为博主原创文章,未经博主允许不得转载。

更多相关文章

  1. Android动画之属性动画(Property Animation)(三)
  2. android屏幕旋转可能带来的问题
  3. Android(安卓)图片库Glide - Glide3.x 官方wiki文档
  4. Android网络图片加载框架的选择
  5. 关于 android 加载 res 图片 out of memory 问题 解决 同样适用
  6. android仿美团底部导航栏的点击效果——揭露动画
  7. 【Android(安卓)Linux内存及性能优化】(九) 进程启动速度优化篇
  8. Android网格布局(GirdView)学习
  9. 启动一个没有界面的Activity

随机推荐

  1. 网页支付宝支付,通过form表单提交,在苹果手
  2. 【转】Android:Bluetooth 的打开和关闭--
  3. android 模拟器启动报错:Failed to open
  4. 获取数字签名(.keystore)SHA1、MD5值
  5. Android(安卓)View体系(三)--实现 View 的
  6. Android(安卓)USB调试开关设置
  7. android播放网络或者本地视频(截取某帧做
  8. Android(安卓)Bitmap Api总结和使用方法
  9. android alertdialog布局 dialog布局
  10. Android(安卓)Intent的几种用法全面总结