Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/208.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 并行平移和缩放动画_Android_Parallel Processing_Scale_Translate Animation - Fatal编程技术网

Android 并行平移和缩放动画

Android 并行平移和缩放动画,android,parallel-processing,scale,translate-animation,Android,Parallel Processing,Scale,Translate Animation,我想将一些视图从任何位置移动到屏幕的中心,并平行缩放。如果这太复杂,按顺序翻译和缩放也是可以接受的。但这两件事我都做不到。我认为这是轴心点的问题。但很抱歉,我没有找到解决办法。请帮忙。也许这对那些开发游戏的人来说很容易,而我却什么也没做 下面是我的代码: private void moveViewToScreenCenter( final View view ){ DisplayMetrics dm = new DisplayMetrics(); getWindowManager

我想将一些视图从任何位置移动到屏幕的中心,并平行缩放。如果这太复杂,按顺序翻译缩放也是可以接受的。但这两件事我都做不到。我认为这是轴心点的问题。但很抱歉,我没有找到解决办法。请帮忙。也许这对那些开发游戏的人来说很容易,而我却什么也没做

下面是我的代码:

private void moveViewToScreenCenter( final View view ){
    DisplayMetrics dm = new DisplayMetrics();
    getWindowManager().getDefaultDisplay().getMetrics( dm );
    int statusBarOffset = dm.heightPixels - rootLayout.getMeasuredHeight();

    int originalPos[] = new int[2];
    view.getLocationOnScreen( originalPos );

    int xDelta = (dm.widthPixels - view.getMeasuredWidth())/2 - originalPos[0];
    int yDelta = (dm.heightPixels - view.getMeasuredHeight())/2 + statusBarOffset - originalPos[1];

    AnimationSet animSet = new AnimationSet(true);
    animSet.setFillAfter(true);
    animSet.setDuration(1000);
    animSet.setInterpolator(new BounceInterpolator());
    TranslateAnimation translate = new TranslateAnimation( 0, xDelta , 0, yDelta);
    animSet.addAnimation(translate);
    ScaleAnimation scale = new ScaleAnimation(1f, 2f, 1f, 2f, ScaleAnimation.RELATIVE_TO_PARENT, .5f, ScaleAnimation.RELATIVE_TO_PARENT, .5f);
    animSet.addAnimation(scale);
    view.startAnimation(animSet);
}
更新:
上面的代码可以处理左上角区域的图像视图,右下角区域的图像视图斜穿过屏幕并消失。

经过几次毫无希望的尝试后,我成功了,这太令人惊讶了

下面是代码,可用于将布局中的任何视图移动到该布局的中心:

private void moveViewToScreenCenter( final View view ){
    DisplayMetrics dm = new DisplayMetrics();
    getWindowManager().getDefaultDisplay().getMetrics( dm );

    int originalPos[] = new int[2];
    view.getLocationOnScreen( originalPos );

    int xDelta = (dm.widthPixels - view.getMeasuredWidth() - originalPos[0])/2;
    int yDelta = (dm.heightPixels - view.getMeasuredHeight() - originalPos[1])/2;

    AnimationSet animSet = new AnimationSet(true);
    animSet.setFillAfter(true);
    animSet.setDuration(1000);
    animSet.setInterpolator(new BounceInterpolator());
    TranslateAnimation translate = new TranslateAnimation( 0, xDelta , 0, yDelta);
    animSet.addAnimation(translate);
    ScaleAnimation scale = new ScaleAnimation(1f, 2f, 1f, 2f, ScaleAnimation.RELATIVE_TO_PARENT, .5f, ScaleAnimation.RELATIVE_TO_PARENT, .5f);
    animSet.addAnimation(scale);
    view.startAnimation(animSet);
}
其核心思想是:

AnimationSet animationSet = new AnimationSet(true);

animationSet.addAnimation(
  new TranslateAnimation(0f, 64f, 0f, 32f),
  new ScaleAnimation(1f, 0f, 1f, 0f, ScaleAnimation.RELATIVE_TO_PARENT, 0f, ScaleAnimation.RELATIVE_TO_PARENT, 0f););

myView.startAnimation(
  animationSet);

您的
animSet.setFillAfter(true)保存了我的一天:)