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

下面是主要代码:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
@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); 
        }

?
1
<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动画

?
1
2
3
4
5
6
<?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>

?
1
<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>
?
1
2
3
4
5
6
<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虚拟机可能会出现报错。

Android上webview界面切换动画效果相关推荐

  1. android图片跳转动画效果,Android实现Activity界面切换添加动画特效的方法

    本文以实例形式展示了Android实现Activity界面切换添加动画特效的方法,对于Android程序设计人员来说有很好的参考借鉴价值.具体方法如下: 了解Android程序设计的人应该知道,在An ...

  2. android开发界面转换,Android开发Activity界面切换添加动画特效的方法

    释放双眼,带上耳机,听听看~! 随着互联网的快速发展,现在我们开发的界面或者动画特效效果都非常好,其实这对于程序员的挑战是非常大的,下文是技术狗小编为大家带来的Android实现Activity界面切 ...

  3. Android 动画之View动画效果和Activity切换动画效果

    View动画效果: 1.>>Tween动画 通过对View的内容进行一系列的图形变换(平移.缩放.旋转.透明度变换)实现动画效果,补间动画需要使用<set>节点作为根节点,子节 ...

  4. android动画篇——仿小米计算器切换动画效果

    实现思路 此效果实现用到了:LayoutTransition和ObjectAnimator的相关知识 思路:当点击切换按钮时顶部ViewGroup和左侧ViewGroup可见性设置为Gone,并自动开 ...

  5. android学习笔记---56_activity切换动画与页面切换动画,自定义activity窗口切换动画效果的实现.

    2013/5/17 Java技术qq交流群:JavaDream:251572072 56_activity切换动画与页面切换动画 ----------------------------------- ...

  6. android+百叶窗动画效果,js实现横向百叶窗效果网页切换动画效果的方法

    本文实例讲述了js实现横向百叶窗效果网页切换动画效果的方法.分享给大家供大家参考.具体分析如下: 这是一款很简洁但是效果却不错的网页切换效果,点击新网页后,网页会出现蓝白相间的百叶窗线条自动切换,直到 ...

  7. 转 Android的Activity屏幕切换动画(一)-左右滑动切换

    这段时间一直在忙Android的项目,总算抽出点时间休息一下,准备把一些项目用到的Android经验分享一下. 在Android开发过程中,经常会碰到Activity之间的切换效果的问题,下面介绍一下 ...

  8. 利用MATLAB实现图片切换动画效果详解

    内容摘要:本博文介绍MATLAB图片切换动画效果的制作以及GIF文件保存,并结合具体代码详细解释.介绍了利用MATLAB编程进行几幅图片的轮流切换,切换时实现与幻灯片切换相似的炫酷的图片切换特效.其中 ...

  9. Android的Activity屏幕切换动画左右滑动切换

    在Android开发过程中,经常会碰到Activity之间的切换效果的问题,下面介绍一下如何实现左右滑动的切换效果,首先了解一下Activity切换的实现,从Android2.0开始在Activity ...

最新文章

  1. HackerRank:JavaScript 是最知名的编程语言
  2. 4.QT4中的connect的实现
  3. hive sqoop 分区导入_使用sqoop将hive分区表的数据导入到mysql的解决方案:shell脚本循环...
  4. 蓝桥杯python青少年_蓝桥杯大赛青少年组省赛结果公布
  5. No changes detected
  6. java实现一个单例设计模式_Java正确实现一个单例设计模式的示例
  7. ik分词和jieba分词哪个好_Pubseg:一种单双字串的BiLSTM中文分词工具
  8. 二叉树最近公共祖先 LCA
  9. centos系统在Visual Studio Code 中使用超级管理员权限保存文件
  10. NLP语言资源 | 汽车、金融等9大领域预训练词向量与依存、拼音等4类特殊向量开放...
  11. 收藏!示波器探头的选择与使用
  12. 网络序、主机序、点分十进制的IP地址转换
  13. zeros函数和ones函数的用法
  14. Intellij Idea 所有快捷键列表,工欲善其事必先利其器。
  15. 学校计算机信息固定资产编号,学校固定资产的分类和编号(仅供参考).doc
  16. 根式为什么是根式?(我可能疯了?)
  17. linux使用gcc实现扫雷,基于linux环境下扫雷应用程序
  18. Java中POJO及其细分XO、DAO的概念
  19. Python入门习题大全——检查用户名
  20. conda 导出环境文件的方法(文件方法)

热门文章

  1. Spring AOP Capability and goals
  2. javaScript tips —— z-index 对事件机制的影响
  3. git上的分支命名规范
  4. 计算机:2014年考研大纲解析之数据结构
  5. 2016年,C语言该怎样写
  6. Spark编程指南笔记
  7. ffmpeg转码速度控制方法
  8. 如何评估深度学习模型效果?阿里工程师这么做
  9. zxing开源库工作流程源码详解
  10. 网络基础相关知识内容