下面是主要代码:
<a href="http://my.oschina.net/u/2448717/blog/499633#">?</a>
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
<code>@override</code>
<code> </code><code>public</code> <code>void</code> <code>onprogresschanged(webview view,</code><code>int</code> <code>newprogress) { </code>
<code> </code><code>if</code><code>(newprogress==</code><code>100</code><code>){ </code>
<code> </code><code>if</code><code>(iamgeview!=</code><code>null</code><code>) </code>
<code> </code><code>iamgeview.setvisibility(view.gone); </code>
<code> </code><code>//view.setvisibility(view.visible); </code>
<code> </code>
<code> </code><code>//droidgap.this.root.addview(view); </code>
<code> </code><code>system.out.println(</code><code>"加载完成"</code><code>); </code>
<code> </code><code>animation translate_in=animationutils.loadanimation(droidgap.</code><code>this</code><code>, r.drawable.translate_in); </code>
<code> </code>
<code> </code><code>translate_in.setfillafter(</code><code>true</code><code>); </code>
<code> </code><code>translate_in.setduration(</code><code>1000</code><code>); </code>
<code> </code><code>translate_in.setdetachwallpaper(</code><code>true</code><code>); </code>
<code> </code><code>// translate_in. </code>
<code> </code><code>view.setanimation(translate_in); </code>
<code> </code><code>animation translate_out=animationutils.loadanimation(droidgap.</code><code>this</code><code>, r.drawable.translate_out); </code>
<code> </code><code>translate_out.setanimationlistener(</code><code>new</code> <code>animationlistener(){ </code>
<code> </code>
<code> </code><code>@override</code>
<code> </code><code>public</code> <code>void</code> <code>onanimationend(animation animation) { </code>
<code> </code><code>if</code><code>(</code><code>null</code><code>!=iamgeview){ </code>
<code> </code><code>droidgap.</code><code>this</code><code>.root.removeview(iamgeview); </code>
<code> </code><code>iamgeview=</code><code>null</code><code>; </code>
<code> </code><code>} </code>
<code> </code><code>} </code>
<code> </code><code>public</code> <code>void</code> <code>onanimationrepeat(animation animation) { </code>
<code> </code><code>// todo auto-generated method stub </code>
<code> </code><code>public</code> <code>void</code> <code>onanimationstart(animation animation) { </code>
<code> </code>
<code> </code><code>}); </code>
<code> </code><code>translate_out.setfillafter(</code><code>true</code><code>); </code>
<code> </code><code>translate_out.setduration(</code><code>1000</code><code>); </code>
<code> </code><code>translate_out.setdetachwallpaper(</code><code>true</code><code>); </code>
<code> </code><code>if</code><code>(</code><code>null</code><code>!=iamgeview){ </code>
<code> </code><code>iamgeview.setanimation(translate_out); </code>
<code> </code><code>} </code>
<code> </code><code>}</code><code>else</code><code>{ </code>
<code> </code><code>if</code><code>(</code><code>null</code><code>==iamgeview){ </code>
<code> </code>
<code> </code><code>iamgeview=</code><code>new</code> <code>imageview(droidgap.</code><code>this</code><code>); </code>
<code> </code><code>view.setdrawingcacheenabled(</code><code>true</code><code>); </code>
<code> </code><code>bitmap bitmap=view.getdrawingcache(); </code>
<code> </code><code>if</code><code>(</code><code>null</code><code>!=bitmap){ </code>
<code> </code><code>bitmap b= bitmap.createbitmap(bitmap); </code>
<code> </code><code>iamgeview.setimagebitmap(b); </code>
<code> </code><code>} </code>
<code> </code><code>droidgap.</code><code>this</code><code>.root.addview(iamgeview); </code>
<code> </code><code>} </code>
<code> </code><code>super</code><code>.onprogresschanged(view, newprogress); </code>
<code> </code><code>}</code>
<code><span style=</code><code>"color: rgb(51, 51, 51); font-family: tahoma, 宋体; font-size: 14px; line-height: 22.3999996185303px; text-align: justify; background-color: rgb(250, 250, 252);"</code><code>>其中的iamgeview:自己定义的imageview控件。</span></code>
r.drawable.translate_in:进入的translate动画
<code><?</code><code>xml</code> <code>version</code><code>=</code><code>"1.0"</code> <code>encoding</code><code>=</code><code>"utf-8"</code><code>?> </code>
<code> </code><code><</code><code>translate</code> <code>android:fromxdelta</code><code>=</code><code>"100%"</code> <code>android:toxdelta</code><code>=</code><code>"0%p"</code>
<code> </code><code>android:duration</code><code>=</code><code>"100"</code> <code>/> </code>
<code> </code>
<code></</code><code>set</code><code>></code>
<code><</code><code>span</code> <code>style</code><code>=</code><code>"color: rgb(51, 51, 51); font-family: tahoma, 宋体; font-size: 14px; line-height: 22.3999996185303px; text-align: justify; background-color: rgb(250, 250, 252);"</code><code>>r.drawable.translate_out:出的translate动画</</code><code>span</code><code>></code>
<code><</code><code>span</code> <code>style</code><code>=</code><code>"color: rgb(51, 51, 51); font-family: tahoma, 宋体; font-size: 14px; line-height: 22.3999996185303px; text-align: justify; background-color: rgb(250, 250, 252);"</code><code>></</code><code>span</code><code>><</code><code>pre</code> <code>name</code><code>=</code><code>"code"</code> <code>class</code><code>=</code><code>"html"</code><code>><?</code><code>xml</code> <code>version</code><code>=</code><code>"1.0"</code> <code>encoding</code><code>=</code><code>"utf-8"</code><code>?> </code>
<code> </code><code><</code><code>translate</code> <code>android:fromxdelta</code><code>=</code><code>"0%"</code> <code>android:toxdelta</code><code>=</code><code>"-100%p"</code>
该代码详细描述:在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虚拟机可能会出现报错。