Android上webview界面切换动画效果

使用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虚拟机可能会出现报错。

				
时间: 2024-09-21 07:51:18

Android上webview界面切换动画效果的相关文章

Android实现Activity界面切换添加动画特效的方法_Android

本文以实例形式展示了Android实现Activity界面切换添加动画特效的方法,对于Android程序设计人员来说有很好的参考借鉴价值.具体方法如下: 了解Android程序设计的人应该知道,在Android 2.0之后有了overridePendingTransition(),其中里面两个参数,一个是前一个activity的退出,另一个activity的进入. 现看看下面这段示例代码: @Override public void onCreate(Bundle savedInstanceSt

Android实现Activity界面切换添加动画特效的方法

本文以实例形式展示了Android实现Activity界面切换添加动画特效的方法,对于Android程序设计人员来说有很好的参考借鉴价值.具体方法如下: 了解Android程序设计的人应该知道,在Android 2.0之后有了overridePendingTransition(),其中里面两个参数,一个是前一个activity的退出,另一个activity的进入. 现看看下面这段示例代码: @Override public void onCreate(Bundle savedInstanceSt

Android实现定制返回按钮动画效果的方法_Android

今天我们来讲一讲Andorid中如何定制返回按钮的动画效果.我将结合实际应用来阐述如何使用. 首先来看一个效果截图,有一个搜索按钮在一个页面的顶部: 我之前实现的方式是和百度/Google首页搜索的效果一样的,类似web开发中的ajax请求,结果直接在当前页面显示出来(下拉效果).后来参考了众多APP之后发现都是进入到一个新的页面,所以我也就改过来试试..废话说多了.. 那我们点击了搜索框之后呢,会进入到一个新的activity,这里的动画效果很简单,直接使用overridePendingTra

Android的Activity屏幕切换动画(二)-左右滑动深入与实战

http://blog.csdn.net/wangjia55/article/details/8104586 上一篇文章将了 Android的左右滑动切换(见 Android的Activity屏幕切换动画(一)-左右滑动切换),实现过程是非常简单,一些新手可能会向深入了了解Activity切换的原理,下面主要对左右滑动进行深入的探讨,并以项目中的一个切换效果来进一步了解. Activity的切换效果使用的是Android的动画效果,Android的动画在官方有相关资料:http://develo

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

在Android开发过程中,经常会碰到Activity之间的切换效果的问题,下面介绍一下如何实现左右滑动的切换效果,首先了解一下Activity切换的实现,从Android2.0开始在Activity增加了一个方法: public void overridePendingTransition (int enterAnim, int exitAnim) 其中: enterAnim 定义Activity进入屏幕时的动画 exitAnim 定义Activity退出屏幕时的动画 overridePend

Android实现定制返回按钮动画效果的方法

今天我们来讲一讲Andorid中如何定制返回按钮的动画效果.我将结合实际应用来阐述如何使用. 首先来看一个效果截图,有一个搜索按钮在一个页面的顶部: 我之前实现的方式是和百度/Google首页搜索的效果一样的,类似web开发中的ajax请求,结果直接在当前页面显示出来(下拉效果).后来参考了众多APP之后发现都是进入到一个新的页面,所以我也就改过来试试..废话说多了.. 那我们点击了搜索框之后呢,会进入到一个新的activity,这里的动画效果很简单,直接使用overridePendingTra

我的Android进阶之旅------&amp;gt;Android利用温度传感器实现带动画效果的电子温度计

     要想实现带动画效果的电子温度计,需要以下几个知识点: 1.温度传感器相关知识. 2.ScaleAnimation动画相关知识,来进行水印刻度的缩放效果. 3.android:layout_weight属性的合理运用,关于android:layout_weight属性的讲解,可以参考:<我的Android进阶之旅------>关于android:layout_weight属性的一个面试题> 地址为:http://blog.csdn.net/ouyang_peng/article/

太赞了!超炫的页面切换动画效果【附源码下载】

原文:太赞了!超炫的页面切换动画效果[附源码下载] 今天我们想与大家分享一组创意的页面切换熊效果集合.我们已经在示例中罗列了一组动画,可以被应用到页面切换过程中,创造出很有趣的导航效果.虽然有些效果都非常简单,只是简单的滑动动作,但另外的一些则是利用了视角(Perspective)和 3D 转换(3D Transforms)来创造一些立体动感的效果.   立即下载      在线演示   温馨提示:为保证最佳的效果,请在 IE10+.Chrome.Firefox 和 Safari 等现代浏览器中

js实现横向百叶窗效果网页切换动画效果的方法

 这篇文章主要介绍了js实现横向百叶窗效果网页切换动画效果的方法,实例分析了javascript实现百叶窗效果的技巧,需要的朋友可以参考下     本文实例讲述了js实现横向百叶窗效果网页切换动画效果的方法.分享给大家供大家参考.具体分析如下: 这是一款很简洁但是效果却不错的网页切换效果,点击新网页后,网页会出现蓝白相间的百叶窗线条自动切换,直到网页全部显示完全.代码如下: 代码如下: <html> <head> <title>js网页百叶窗动态切换效果</tit