标签: objectanimator

如何在较旧的Android版本中使用Fragments和objectAnimator?

我尝试使用片段和objectAnimator来制作这里的翻转动画,并且在Android 4.1上一切正常,但是当我尝试添加时android-support-v13. jar,使用FragmentActivity并在旧版本上启动它,片段之间的动画会使应用程序崩溃并出现此错误:

java.lang.RuntimeException: Unknown animation name: objectAnimator
Run Code Online (Sandbox Code Playgroud)

请问,您能说我如何使用objectAnimator或如何使用常见的Android动画创建翻转动画?

UPD:我也尝试过使用http://nineoldandroids.com/,但我无法理解它如何用于活动过渡动画.

android android-fragments objectanimator

5
推荐指数
1
解决办法
908
查看次数

对象动画师在电池保护模式下不能使用JellyBean(> Android 5.x)

我的应用程序大量使用ObjectAnimator.但我最近注意到,当打开省电模式时,使用ObjectAnimator的动画不起作用,有时甚至会崩溃.由于应用UI的流畅性很大程度上依赖于动画,因此我不能省略它们中的任何一个.请提供解决方法,以便即使在省电模式下也可以使用这些动画.所有的动画师都会造成这个问题吗?提前致谢.

animation android objectanimator battery-saver android-5.0-lollipop

5
推荐指数
1
解决办法
1035
查看次数

可绘制对象上的 ObjectAnimator

ObjectAnimator我想在 a 上使用 an Drawable(而不是 a View)。假设我有一个ImageViewand 以 aDrawable作为源:

<ImageView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/imageView"
    android:background="@color/myColor"
    android:src="@drawable/myDrawable/>
Run Code Online (Sandbox Code Playgroud)

我想要的是只有myDrawable动画,而不是例如在ImageView.

现在,如果我ObjectAnimator在可绘制对象上应用 an ,则什么也不会发生:

ImageView imageView = (ImageView) findViewById(R.id.imageView);
Drawable myDrawable = imageView.getDrawable();
ObjectAnimator animator = ObjectAnimator.ofFloat(myDrawable, "alpha", 1f, 0f);
animator.setDuration(1000);
animator.start();
Run Code Online (Sandbox Code Playgroud)

为什么?

android objectanimator android-drawable

5
推荐指数
1
解决办法
4222
查看次数

3窗格布局片段动画是口吃

实现信息: 我已经在他自己的问题上发布了CommonsWare响应之后实现了3个窗格布局:Gmail三片段动画场景的完整工作示例?

总的来说,我的布局包括以下级别(1到3):

  1. MainActivity
  2. SlidingMenu(侧面抽屉UI图案)片段隐藏在左侧,而一个ContentFragment片段包含3个窗格布局.
  3. 内部的ContentFragment:LeftListFragment,(每3个TextViews行)MiddleListFragment(每个8个TextViews行), DetailFragment.

LeftListFragmentMiddleListFragment用于CursorLoadersContentProvider每个列表中加载数据.DetailFragment在需要时还要求带有数据的游标.所以我甚至没有实现自定义Adapters(这种方式更好的设计).然后我添加了3个窗格布局+动画.就工作而言,它按预期工作,没有问题.Animation时间是500毫秒.

问题: 动画口吃不多.一些丢帧.当左侧和中间都可见时,我单击中间列表项以打开详细信息; 当我点击"返回"按钮再次查看左侧和中间列表(当没有实际装载时).

我尝试过的:

  1. 删除了加载片段的代码DetailView.我只是点击一个项目,MiddleFragment动画开始,没有任何细节实际加载.仍然口吃.此外,当击中,没有任何负载,它仍然口吃,所以我认为加载器/光标不是这个的原因.
  2. 我使用dumpsys gfxinfo来查看计算每帧的平均时间(以ms为单位).实际上,计算的平均时间是18ms,高于16ms阈值.这是否意味着口吃是因为在制作动画时再次绘制列表所需的时间?如果是这样,为什么?我的意思是......在行视图中我根本没有任何图像.我无法搞砸Adapters代码,因为我没有写过任何代码......
  3. Animation时间从500毫秒减少到200毫秒.如果你仔细观察它仍然是口吃,它只是更快.

编辑:我切换rightPaneWidthleftPaneWidth下面(是的,这删除了重新定尺寸的动画),口吃现在已经消失.列表仍然向左侧滑动,但宽度不会变小.因此,如果现在没有更多的口吃,这是否意味着我的代码中的ObjectAnimator存在问题?

ObjectAnimator.ofInt(this, "middleWidth", rightPaneWidth, leftPaneWidth)
                    .setDuration(ANIM_DURATION).start();
Run Code Online (Sandbox Code Playgroud)

谢谢你的时间 !

3窗格布局代码:

package com.xyz.view.widget;

import android.animation.ObjectAnimator;
import android.annotation.SuppressLint;
import android.annotation.TargetApi;
import android.content.Context;
import android.util.AttributeSet;
import android.view.View;
import android.view.ViewPropertyAnimator;
import android.widget.LinearLayout;


public class …
Run Code Online (Sandbox Code Playgroud)

android android-animation android-fragments objectanimator

4
推荐指数
1
解决办法
5358
查看次数

如何对具有View Animators的Android代码进行单元测试?

我有一个实例,其中显示和隐藏了几个按钮,具体取决于ViewPager中的哪个页面正在显示.使用Animators显示和隐藏.有没有办法检查/延迟单元测试,直到完成为止?

我正在使用Robolectric,因为这可能是相关的.我试着打电话,Robolectric.runUiThreadTasksIncludingDelayedTasks();但这似乎没有解决任何问题.

动画代码如下:

public static void regularFadeView(final boolean show, final View view) {
    view.animate()
            .setInterpolator(mDecelerateInterpolator)
            .alpha(show ? 1 : 0)
            .setListener(new SimpleAnimatorListener() {
                @Override
                public void onAnimationStart(Animator animation) {
                    if (show) view.setVisibility(View.VISIBLE);
                }

                @Override
                public void onAnimationEnd(Animator animation) {
                    if (!show) view.setVisibility(View.INVISIBLE);
                }
            })
            .start();
}
Run Code Online (Sandbox Code Playgroud)

android unit-testing robolectric objectanimator

4
推荐指数
2
解决办法
2896
查看次数

让Android AnimatorSet停止制作动画

我有以下AnimatorSet方法:

private AnimatorSet dialCenterThrob() {
    int bpm = workoutStream.getHeartRate();
    dialCenterImageView.clearAnimation();
    AnimatorSet finalSet = new AnimatorSet();

    ObjectAnimator pulseX = ObjectAnimator.ofFloat(dialCenterImageView, View.SCALE_X, 0.98f, 1.06f);
    ObjectAnimator pulseY = ObjectAnimator.ofFloat(dialCenterImageView, View.SCALE_Y, 0.98f, 1.06f);

    pulseX.setRepeatMode(ObjectAnimator.REVERSE);
    pulseX.setRepeatCount(ObjectAnimator.INFINITE);
    pulseY.setRepeatMode(ObjectAnimator.REVERSE);
    pulseY.setRepeatCount(ObjectAnimator.INFINITE);
    pulseX.setDuration(bpm);
    pulseY.setDuration(bpm);
    pulseX.setInterpolator(new AccelerateInterpolator());
    pulseY.setInterpolator(new AccelerateInterpolator());

    finalSet.playTogether(pulseX, pulseY);

    return finalSet;
}
Run Code Online (Sandbox Code Playgroud)

这是在var上设置的,称为throbber,偶尔会通过以下方法更新:

private void updateThrobbing() {
    if (hasThrob()) {
        throbber = dialCenterThrob();
        throbber.start();
    } else {
        if (throbber != null && throbber.isRunning()) {
            stopThrobbing();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

但我不能让它停止动画,这是目前尝试这样做的方法:

public void stopThrobbing() {
    List<Animator> throbbers = throbber.getChildAnimations();
    for(Animator …
Run Code Online (Sandbox Code Playgroud)

android objectanimator

4
推荐指数
1
解决办法
7641
查看次数

使ObjectAnimator动画持续时间与开发人员选项中的全局动画持续时间比例设置无关

当常量和不可修改的速度至关重要时,如何使ObjectAnimator独立于"Animator持续时间刻度"开发人员选项设置?

animation android duration objectanimator animator

4
推荐指数
2
解决办法
1639
查看次数

如何使用 Object Animator 制作放大动画

当使用动画时,我可以做这样的事情

ScaleAnimation animation = new ScaleAnimation(0, 1.0, 0, 1.0, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);
Run Code Online (Sandbox Code Playgroud)

从 0 缩放到对象的原始大小。

我怎样才能对ObjectAnimatoror做同样的事情ValueAnimator

android android-animation objectanimator

4
推荐指数
1
解决办法
6523
查看次数

找不到属性设置方法 setAlpha

这是用于创建 alpha 动画对象的 Java 代码。

ObjectAnimator objectAnimator = ObjectAnimator.ofFloat(myView, "alpha", 0.5f, 0f);
Run Code Online (Sandbox Code Playgroud)

这是用于执行相同操作的 Kotlin 代码。

val objectAnimator = ObjectAnimator.ofFloat(myView, "alpha", 0.5f, 0f)
Run Code Online (Sandbox Code Playgroud)

在我将上面的 Java 代码转换为 Kotlin 之后,当鼠标悬停在发生错误的行上时,Android Studio 会向我发出红色错误警告并显示此消息。 在 java.lang.Void 上找不到属性设置器方法 setAlpha 更多

尽管 IDE 给出了这个错误,但我仍然能够编译和运行它。知道为什么它会在 Kotlin 中给出这个错误以及如何摆脱这个错误警告吗?

java android kotlin objectanimator

4
推荐指数
1
解决办法
1240
查看次数

Android ObjectAnimator如何识别属性setter方法?

setX如果将属性x指定为字符串,ObjectAnimator如何调用适当的方法?我的意思是,用什么技术来识别我想要为rotation我的视图的属性设置动画并调用该视图的适当方法setRotation

我已经了解了ObjectAnimator如何工作并设法使用它,它非常简单,我只是对操作原理感到好奇.

java android android-animation objectanimator

3
推荐指数
1
解决办法
2601
查看次数