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> |
?
| 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界面切换动画效果的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 关于如何修改Redmine系统中的字段问
- 下一篇: Ubuntu系统如何卸载并安装新版本的j