动画时间和具体缩放动作

setTokenVisibilityLocked(AppWindowToken wtoken, WindowManager.LayoutParams lp,

applyAnimationLocked

frameworks/base/services/core/java/com/android/server/wm/WindowStateAnimator.java
applyAnimationLocked

frameworks/base/services/core/java/com/android/server/wm/AppTransition.java

<!-- Standard animations for a full-screen window or activity. -->
     <style name="Animation.Activity">
         <item name="activityOpenEnterAnimation">@anim/activity_open_enter</item>
         <item name="activityOpenExitAnimation">@anim/activity_open_exit</item>
         <item name="activityCloseEnterAnimation">@anim/activity_close_enter</item>
         <item name="activityCloseExitAnimation">@anim/activity_close_exit</item>
<!-- Standard animations for a non-full-screen window or activity. -->
     <style name="Animation.Dialog">
         <item name="windowEnterAnimation">@anim/activity_open_enter</item>
         <item name="windowExitAnimation">@anim/activity_close_exit</item>
     </style>

 

animLp.toString()

01-01 20:01:24.779  1780  1799 D WindowManager: fullscreenanim animLp.toString()-=WM.LayoutParams{(0,0)(fillxfill) sim=#120 ty=1 fl=#810500 fmt=-3 wanim=0x1030001 or=0 needsMenuKey=2}
01-01 20:01:24.779  1780  1799 D WindowManager: fullscreenanim animLp.toString()-=WM.LayoutParams{(0,0)(fillxfill) sim=#20 ty=3 fl=#1830118 pfl=0x11 wanim=0x1030001 or=0 needsMenuKey=2}

if (wtoken.appFullscreen) {                                                                                                                                                                                              
WindowState ws =wtoken.findMainWindow();     
    if (ws != null) { 
        animLp = ws.mAttrs;
        bestAnimLayer = ws.mLayer;
        fullscreenAnim = true; 
    } 
    else if (!fullscreenAnim) {   
        WindowState ws = wtoken.findMainWindow();   
        if (ws != null) {  
            if (ws.mLayer > bestAnimLayer) {    
                animLp = ws.mAttrs;
                bestAnimLayer = ws.mLayer; 
                
                
// Determine the visible rect to calculate the thumbnail clip
WindowState win = atoken.findMainWindow();
Rect containingFrame = new Rect(0, 0, width, height);    //父窗口大小
Rect contentInsets = new Rect();                        //窗口的内容区域边衬
Rect appFrame = new Rect(0, 0, width, height);            //窗口大小

Animation a = mAppTransition.loadAnimation(lp, transit, enter, width, height, mCurConfiguration.orientation, containingFrame, contentInsets, appFrame, isVoiceInteraction);

atoken.mAppAnimator.setAnimation(a, width, height,

WindowManagerService服务刷新系统UI是通过调用WindowManagerService类的成员函数performLayoutAndPlaceSurfacesLockedInner来实现的
//计算实际要显示的大小和位置
w.computeShownFrameLocked();

重写UnRect(int[] data)
(0, 0, 0, width, 0, height ,width, height);
String TRAPEZOID_DEFAULT = "0-0-1280-0-0-720-1280-720-";
mDataStorage = DataStorage.getInstance(context);
String dataStr = mDataStorage.readDataStorage(TRAPEZOID, TRAPEZOID_DEFAULT, STORAGE_TYPE);

    int data[]=new int[8];
    String[] strs = dataStr.split("-");
    for(int i=0; i<strs.length; i++) {
        data[i]=Integer.parseInt(strs[i]);
    }
    
    

动画时间和具体缩放动作:
diff --git a/frameworks/base/core/java/android/view/animation/Animation.java b/frameworks/base/core/java/android/view/animation/Animation.java
index be43952..070f916 100644
--- a/frameworks/base/core/java/android/view/animation/Animation.java
+++ b/frameworks/base/core/java/android/view/animation/Animation.java
@@ -839,7 +839,7 @@ public abstract class Animation implements Cloneable {
         }
 
         final long startOffset = getStartOffset();
-        final long duration = mDuration;
+        final long duration = SystemProperties.getInt("App.Animation", 2000);;//mDuration;
         float normalizedTime;
         if (duration != 0) {
             normalizedTime = ((float) (currentTime - (mStartTime + startOffset))) /
diff --git a/frameworks/base/core/java/android/view/animation/ScaleAnimation.java b/frameworks/base/core/java/android/view/animation/ScaleAnimation.java
index e9a8436..158989c 100644
--- a/frameworks/base/core/java/android/view/animation/ScaleAnimation.java
+++ b/frameworks/base/core/java/android/view/animation/ScaleAnimation.java
@@ -22,6 +22,7 @@ import android.content.res.TypedArray;
 import android.util.AttributeSet;
 import android.util.TypedValue;
 
+import android.util.Log;
 /**
  * An animation that controls the scale of an object. You can specify the point
  * to use for the center of scaling.
@@ -250,6 +251,7 @@ public class ScaleAnimation extends Animation {
             sy = mFromY + ((mToY - mFromY) * interpolatedTime);
         }
 
+               Log.d("animation","applyTransformation mFromX="+mFromX+", mToX="+mToX+", mFromY="+mFromY+", mToY="+mToY+", sx="+sx+", sy"+sy+", mPivotX"+mPivotX+", mPivotY"+mPivotY);
         if (mPivotX == 0 && mPivotY == 0) {
             t.getMatrix().setScale(sx, sy);
         } else {    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值