2.2 特效的設計與實現
2.2.1 主頁菜單焦點放大動畫的設計與實現
主頁菜單焦點的放大主要采用Tweened Animation動畫中的Scale(縮放效果)類型的動畫來實現。其主要代碼如下:
(1)放大動畫的代碼
v.bringToFront();
ScaleAnimation myAnimation_Scale = new ScaleAnimation(1.0f, 1.1f,1.0f, 1.1f, Animation.RELATIVE_TO_SELF, 0.5f,
Animation.RELATIVE_TO_SELF, 0.5f); myAnimation_Scale.setDuration(300);
v.startAnimation(myAnimation_Scale);
myAnimation_Scale.setFillAfter(true);
其中,v.bringToFront();函數用於把當前視圖置於其他視圖上方。
(2)縮小動畫的代碼
ScaleAnimation myAnimation_Scale = new ScaleAnimation(1.1f, 1.0f, 1.1f, 1.0f, Animation.RELATIVE_TO_SELF, 0.5f,Animation.RELATIVE_TO_SELF, 0.5f);
myAnimation_Scale.setDuration(300);
v.startAnimation(myAnimation_Scale);
2.2.2 主頁麵Tab菜單焦點動畫的設計與實現
主頁麵Tab菜單焦點動畫將主要借助幀動畫實現,在文件main_menu_animation.xml中定義了兩幀圖片,間隔時間為0.3秒。其實現的主要代碼如下:
(1)獲得焦點代碼
v.setBackgroundResource(R.anim.main_menu_animation);
mFrameAnimation = (AnimationDrawable) v.getBackground();
mFrameAnimation.start();
(2)失去焦點的代碼
v.setBackgroundColor(Color.TRANSPARENT);
2.2.3 電影菜單二級菜單的翻頁動畫設計與實現
電影菜單二級菜單的翻頁動畫將主要采用ViewPager自帶的setPageTransformer()來設置切換動畫。
2.2.4 主頁麵倒影效果的設計與實現
主頁麵倒影效果的主要設計思路是:首先獲得需要設置倒影的View的緩存,然後通過mMatrix.preScale(1,-1)利用該緩存創建一個和原View一模一樣的圖像 ;調用Bitmap.createBitmap(originalImage,o,height/2, width,height/2.mMatrix,false)使該圖像倒過來創建一個倒過來圖像,調用canvas.drawBitmap(reflectionImage,o,height/3f,null),把倒過來的圖像畫到畫布上。這樣就實現了倒影效果。其主要代碼如下:
/*為需要設置倒影的View設置緩存*/
for (int i = 0; i <;reflectNum; i++){
mFrameLayoutReflectArray[i].measure( MeasureSpec.makeMeasureSpec(0,
MeasureSpec.UNSPECIFIED), MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED));
mFrameLayoutReflectArray[i].layout(0, 0,
mFrameLayoutReflectArray[i].getMeasuredWidth(),mFrameLayoutReflectArray[i].getMeasuredHeight());mFrameLayoutReflectArray[i].buildDrawingCache();mBitmapArray[i] = mFrameLayoutReflectArray[i].getDrawingCache(); }