正文 基於Android的數字機頂盒桌麵啟動器的設計與實現(2 / 3)

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(); }