Articles of objectanimator

任何在同时运行多个animation时减少延迟的技巧?

一旦我的应用程序同时运行~4 +animation,animation开始滞后一点。 有什么办法可以解决/优化吗? 我正在使用ObjectAnimator和ValueAnimator。

Android ObjectAnimator与ViewPropertyAnimator

ObjectAnimator和ViewPropertyAnimator改变属性值有什么区别? ObjectAnimator objectAnimator = ObjectAnimator.ofFloat(myObject, “X”, 0.0f, 100.0f); 当objectAnimator正在进行时,我尝试了myObject.getX() ,并且我在0.0f到100.0之间获得了一个在路上的值。 myObject.setX(0.0f); myObject.animate().x(100.0f); 但是,当myObject.getX() ‘在ViewPropertyAnimator上方正在进行时,我得到精确的100.0。 我无法弄清楚是什么造成了这种差异。 提前致谢。

缩放视图到父版面大小

我试图通过使用对象animation师将视图缩放到布局大小。 该视图是LinearLayout 。 视图确实拉伸,但直到两个方向(即X和Y)的屏幕尺寸。 这是代码。 我觉得问题是这个: 计算必须进行多少缩放的公式。 zoomTillX = screen_width/zoomView_width; zoomTillY = screen_height/zoomView_height; 或者使用以错误方式完成的Animation属性代码。 请让我知道如何实现放大。 public class MainActivity extends AppCompatActivity { TextView tv; double screen_height; LinearLayout zoomView; double screen_width; double zoomTillX; double zoomTillY; double zoomView_width; double zoomView_height; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); tv = (TextView) findViewById(R.id.tv); zoomView = (LinearLayout) findViewById(R.id.zoomView); DisplayMetrics dm […]

当我反向运行animation时,Android会跳过onDraw()

我有一个Sliding Fragments DevByte的实现 。 除了将片段滑入视图之外,我想在它遮挡的内容上画一个阴影。 我已经从video中修改了FractionalLinearLayout ,以屏幕宽度的两倍来measure自身,并将其子项放在右半部分。 在animation循环期间,我在左半部分绘制一个增加alpha的黑色矩形,并将我的X坐标设置为负值,使右半部分进入视图。 我的问题是,当我将内容滑入视图时,这种方法很好,但是当我将内容滑回到视图之外时,它会失败。 在路上,我得到了我想要的行为:翻译和变暗的阴影。 在出路的时候,我只得到了翻译,阴影仍然只是animation中的第一帧颜色。 我在日志记录中看到的是,在进入的过程中, setPercentOnScreen()和onDraw()方法被交替调用,正如预期的那样。 然而,在出路的时候,我接到一次调用setPercentageOnScreen() ,然后调用onDraw() ,然后只调用setPercentOnScreen() 。 Android正在优化绘图,但我无法弄清楚原因。 更新:有趣的是,我只在运行Android 4.4的模拟器上看到此行为。 运行4.0.3和4.3的仿真器在两个方向上按预期运行animation。 旧的Nexus 7出现了问题,不同的模拟器4.4没有。 它似乎在设备上是一致的,但在设备之间有所不同。 再次更新:我已经提取了一个示例项目并将其放在GitHub上: barend / android-slidingfragment 。 GitHub上的自述文件包含十几个设备上的测试结果。 对于模拟器,问题与“启用主机GPU”function相关,但仅限于Jelly Bean和KitKat; 不在ICS上。 再次更新:进一步测试显示问题发生在运行Jelly Bean及更高版本的物理设备上,以及启用了“使用主机GPU”运行Jelly Bean或更高版本的ARM仿真器上。 无论Android版本如何,在没有“使用主机GPU”的x86仿真器和ARM仿真器上都不会发生这种情况。 我的测试的确切表可以在上面链接的github项目中find。 // Imports left out public class HorizontalSlidingLayout extends FrameLayout { /** * The fraction by which the […]

Android ObjectAnimatoranimation翻译在所有屏幕尺寸上的比例相同

我正在使用ObjectAnimator向上滑动背景图像以显示下面的listView 。 listView的weight为0.7f因此在所有屏幕尺寸上的比例都相同。 使用ObjectAnimator然后可以用相同的0.7比例向上滑动我的背景图像,在所有屏幕上是相同的吗? 背景图片和listView : animation代码: FrameLayout mainView = (FrameLayout)findViewById(R.id.mainView); ObjectAnimator mover = ObjectAnimator.ofFloat(mainView, “translationY”, !historyShown ? -500 : 0); mover.setDuration(300); mover.start();

FragmentTransacation具有> 4性能的幻灯片进/出animation

我正在尝试使用幻灯片输入/输出animation实现片段事务。 我正在开发至少14 sdk所以ObjectAnimator对我来说是唯一的选择( 还有其他方法吗?根据我的理解,翻译animation不可用)。 守则很简单: AnimationView.java – 包装类 public class AnimationView extends LinearLayout { public AnimationView(Context context, AttributeSet attrs) { super(context, attrs); } public float getYFraction() { return getHeight(); } public void setYFraction(float yFraction) { final int height = this.getHeight(); setY((height > 0) ? (yFraction * height) : -9999); } } 滑入和滑出xml animation效果很好 ,你可以看到我使用自定义属性yFraction。 但性能非常糟糕……在某些平板电脑中,我注意到animation期间有一条水平的白线(大约3像素高),在其他智能手机设备中,它只是变慢(不是持续时间慢而是闪烁)。 […]

可以在animation开始时更改ObjectAnimator结束值吗?

我有一个对象animation师启动,我想有时在animation启动时更改结束值,但没有停止并重新启动它。 怎么能实现这一目标? 我在谷歌找不到任何信息。 样品: XMovement = ObjectAnimator.ofFloat(view, “x”, startX, endX); XMovement.setDuration(ANIMATION_TIME); XMovement.start(); 我想在animation启动时实时更改endX值。 谢谢

如何使用ObjectAnimator删除animation的慢速结束?

我有这个ObjectAnimator: cloudAnim2 = ObjectAnimator.ofFloat(cloud2ImageView, “x”,500, 1000); cloudAnim2.setDuration(3000); cloudAnim2.setRepeatCount(ValueAnimator.INFINITE); cloudAnim2.setRepeatMode(ValueAnimator.RESTART); cloudAnim2.start(); cloudAnim2.addListener(new AnimatorListener() { @Override public void onAnimationCancel(Animator animation) {} @Override public void onAnimationEnd(Animator animation) {} @Override public void onAnimationRepeat(Animator animation) {} @Override public void onAnimationStart(Animator animation) {} }); 如您所见,云将从位置500开始,并将animation到位置1000,然后它将重复animation。 问题是animation在接近完成时变得越来越慢。 我的意思是,运动的速度并不总是一样的。 我希望速度变得总是一样的。 如何才能做到这一点? 谢谢

用户滚动时,如何在工具栏中为视图设置animation?

我想在我的应用程序中添加一些animation。 请find附带的照片以获得animation创意。 我使用过CoordinatorLayout。 我的搜索布局和工具栏托管在AppBarLayout / CollapsingToolbarLayout中。 下面是我的NestedScrollView托管片段。 当用户使用滚动标志滚动时,我能够隐藏搜索布局。 我正在尝试实现一个CoordinatorLayout.Behavior,它将开始向左移动购物车图标并启动搜索图标以从0缩放到1; 一旦用户滚动并且搜索布局开始隐藏。 当搜索布局完全隐藏时,我想在第二个屏幕中显示工具栏。 当用户向下滚动并且通过向右移动推车并缩小搜索图标开始显示搜索布局时,它将返回到原始状态,如第一个屏幕所示。 最初我将工具栏上的搜索图标设为隐藏,购物车图标和搜索图标位于线性布局内。 请找我的xml activity_home_page.xml 我的xml for layout_primary_toolbar.xml是 我坚持了7个小时。 我是androidanimation的新手。 最初我是以编程方式隐藏rl_search(搜索框)。 我希望当ll_search_layout向上滚动(在工具栏下方)时,rl_cart应该向左移动(这是它的原始位置,因为rl_search没有被隐藏)并且rl_search应该从0扩展到1。 我使用了ObjectAnimator和LinearInterpolator但它根本不工作。 任何建议如何实现这一目标? PS – 我可以发布代码,如果你们需要它作为参考。 谢谢

android objectanimator scaleX仅在一个方向上

我正在使用ObjectAnimator并且无法弄清楚如何仅在一个方向上缩放x ax,例如向右侧。 因为当我缩放它时,它会两种方式缩放,然后我的ImageView就不在屏幕上了。 我知道我可以添加transitionX来防止离屏,但更好的解决方案是在一个方向上缩放。 ObjectAnimator headAnim = ObjectAnimator.ofFloat(imageHead, “scaleX”, 1f, 1.5f); headAnim.setDuration(1000); headAnim.start();