标签: android-animation

缩放和翻译动画

我需要在我的应用程序中为图像添加动画.图像应从左上角开始直到屏幕中间.初始阶段的图像尺寸会变小.当到达屏幕中间时,它的大小应该增加(即应该进行缩放).图像不应该回到原来的位置.它应该在动画之后放置在屏幕中间.

谁能请帮忙.

android android-animation

27
推荐指数
1
解决办法
7万
查看次数

动画直到UI更新或触摸事件才开始

我有一个奇怪的问题AlphaAnimation.它应该在AsyncTask调用处理程序时重复运行.

但是,第一次调用处理程序时Activity,除非我触摸屏幕或更新UI(例如按下手机的菜单按钮),否则动画将无法启动.

奇怪的是,一旦动画至少运行一次,如果再次调用处理程序,它将毫无问题地启动.

这是代码的样子:

// AsyncTask handler
public void onNetworkEvent()
{
  this.runOnUiThread(new Runnable() {
    @Override
    public void run()
    {
      flashScreen(Animation.INFINITE);
    }
  });
}

// Called method
private void flashScreen(int repeatCount)
{
  final View flashView = this.findViewById(R.id.mainMenuFlashView);

  AlphaAnimation alphaAnimation = new AlphaAnimation(1, 0);
  alphaAnimation.setRepeatCount(repeatCount);
  alphaAnimation.setRepeatMode(Animation.RESTART);
  alphaAnimation.setDuration(300);
  alphaAnimation.setInterpolator(new DecelerateInterpolator());
  alphaAnimation.setAnimationListener(new Animation.AnimationListener() {
    @Override
    public void onAnimationStart(Animation animation)
    {
      flashView.setVisibility(View.VISIBLE);
    }

    @Override
    public void onAnimationEnd(Animation animation)
    {
      flashView.setVisibility(View.GONE);
    }

    @Override
    public void onAnimationRepeat(Animation animation) { }
  }); …
Run Code Online (Sandbox Code Playgroud)

android android-ui android-animation

27
推荐指数
2
解决办法
2万
查看次数

动画师只能在Looper线程Android上运行

我正在尝试在任务完成时动画一些东西.这里的问题是我收到此错误消息:

android.util.AndroidRuntimeException: Animators may only be run on Looper threads
   at android.animation.ValueAnimator.cancel(ValueAnimator.java:1004)
   at android.view.ViewPropertyAnimator.animatePropertyBy(ViewPropertyAnimator.java:965)
   at android.view.ViewPropertyAnimator.animateProperty(ViewPropertyAnimator.java:921)
   at android.view.ViewPropertyAnimator.alpha(ViewPropertyAnimator.java:735)
   at com.design.zaton.prototypei.MainActivity$1$1.run(MainActivity.java:93)
   at java.lang.Thread.run(Thread.java:761)
Run Code Online (Sandbox Code Playgroud)

该应用程序使用相同的确切代码工作正常,但现在它根本没有.我真的很困惑.

这是错误发生的地方:

new Thread(new Runnable() {
    @Override
    public void run() {
        final String s = getGiphyViews(String.valueOf(mEdit.getText()));
        runOnUiThread(new Runnable() {
            @Override
            public void run() {
                result.setText(s);
            }
        });

        loading.animate()
                .alpha(0)
                .setDuration(100);

        done.animate()
                .scaleY(1)
                .scaleX(1)
                .setDuration(300);
    }
}).start();
Run Code Online (Sandbox Code Playgroud)

该错误概述了该loading.animate()方法.

提前致谢!

java multithreading android android-animation

27
推荐指数
3
解决办法
2万
查看次数

底部的动画版面更改

在我的应用程序中,我使用底部工作表(来自支持库),它非常有用.现在,我想在拖动工作表时设置布局更改动画.为此,我创建了一个子类BottomSheetCallback(这通常是片段的内部类,所以不是这个calss中使用的所有对象都在这里初始化):

public class MyBehavior extends BottomSheetBehavior.BottomSheetCallback {

    Transition transition;
    float lastOffset = 0;
    Scene scene;

    public PlayerBehavior() {
        TransitionInflater inflater = TransitionInflater.from(getContext());
        transition = inflater.inflateTransition(R.transition.player);
        //transition.setDuration(300);

        scene = fullLayout;

        transition.setInterpolator(new Interpolator() {
            @Override
            public float getInterpolation(float v) {
                return lastOffset;
            }
        });
    }

    @Override
    public void onStateChanged(@NonNull View bottomSheet, int newState) {
        if(newState == BottomSheetBehavior.STATE_DRAGGING) {
            TransitionManager.go(scene, transition);
        }
    }

    @Override
    public void onSlide(View bottomSheet, final float slideOffset) {
        scene = (slideOffset > lastOffset) ? smallLayout : fullLayout; …
Run Code Online (Sandbox Code Playgroud)

android android-animation android-transitions

27
推荐指数
1
解决办法
1万
查看次数

如何使用动画在Android画布上绘制路径?

我正在制作Android应用程序而且我有一件棘手的事情要做.我需要在画布上绘制一条路径,但绘图应该是动画的(即,稍微延迟后逐点绘制).

是否可以使用Android SDK制作这样的东西?如果没有,我怎么能产生这种效果?

android android-animation android-canvas

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

动画淡入淡出

使用此代码我只有淡入淡出,我正在寻找如何添加淡出.我添加了另一个名为"fadeout"的xml,但我无法将其集成到我的代码中.

ImageView imageView = (ImageView)findViewById(R.id.imageView);
Animation fadeInAnimation = AnimationUtils.loadAnimation(this, R.anim.fadein);
imageView.startAnimation(fadeInAnimation);

button1.setOnClickListener(new View.OnClickListener() {
    public void onClick(View v) {
        imageView.startAnimation(fadeInAnimation);
    }
}
Run Code Online (Sandbox Code Playgroud)

fadein.xml

<?xml version="1.0" encoding="UTF-8"?>
  <set xmlns:android="http://schemas.android.com/apk/res/android">
    <alpha android:fromAlpha="0.0" android:toAlpha="1.0" 
     android:interpolator="@android:anim/accelerate_interpolator" 
   android:duration="Your Duration(in milisecond)"
    android:repeatCount="infinite"/>
 </set>
Run Code Online (Sandbox Code Playgroud)

android android-animation

26
推荐指数
3
解决办法
10万
查看次数

Android:animateLayoutChanges ="true",如果淡出效果不受欢迎,该怎么办?

在我的布局XML文件中:

<LinearLayout
   ...
   animateLayoutChanges="true"
   ... />
Run Code Online (Sandbox Code Playgroud)

当我添加和a View和这个布局并删除它时,我可以看到淡入和淡出效果.但是,我只需要淡出效果.谁能告诉我应该怎么做?

android android-animation

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

从上到下使活动变为动画

我正在编写一个Android应用程序,我希望通过从屏幕底部到顶部的动画来显示活动.我可以使用此处的代码执行此操作:

但是,我无法执行反之亦然动画,其中Activity将通过从屏幕的顶部滑动到底部而消失.

我使用了上面链接中的代码; 通过向上滑动显示活动,但当消失时,它会淡出,而不是滑到底部.

我甚至尝试将代码放入onCreate():

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    this.requestWindowFeature(Window.FEATURE_NO_TITLE);
    overridePendingTransition(R.anim.appear_from_bottom, R.anim.disappear_to_bottom);
    setContentView(R.layout.activity_all_metadata_display);
    initializePage();
}
Run Code Online (Sandbox Code Playgroud)

android android-animation android-transitions

26
推荐指数
3
解决办法
3万
查看次数

类型动画师的预期资源[ResourceType]

我已将我的SDK更新到最新版本,但现在我收到了一个lint错误.

错误:animator类型的预期资源[ResourceType]

此行发生错误:

AnimatorInflater.loadAnimator(context, R.anim.right_slide_in)
Run Code Online (Sandbox Code Playgroud)

引用的资源/res/anim/right_slide_in.xml如下所示:

<?xml version="1.0" encoding="utf-8"?>
<objectAnimator xmlns:android="http://schemas.android.com/apk/res/android"
    android:interpolator="@android:anim/linear_interpolator"
    android:valueTo="0"
    android:valueFrom="1.0"
    android:propertyName="xFraction"
    android:valueType="floatType"
    android:duration="450" />
Run Code Online (Sandbox Code Playgroud)

它以前总是奏效.有人可以解释为什么我会收到这个错误吗?

android android-animation android-lint

26
推荐指数
1
解决办法
2万
查看次数

ObjectAnimator没有淡入

我正在尝试使用该Animator集顺序播放一组动画.除了alpha动画(set1)之外,一切正常.它从0.25f变为1但在整个动画中并没有消失,在动画结束时set1它从0.25变为1而没有考虑到setDuration(因此我没有得到淡入效果).所以我没有淡出效果......当我自己做这个动画时,淡入效果就在那里......任何想法?

我正在使用精彩的nineoldandroids库来实现这一点.

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    final ImageView image = (ImageView) findViewById(R.id.image);
    final AnimatorSet set = new AnimatorSet();
    set.play(ObjectAnimator.ofFloat(image, "translationX", 0, 100).setDuration(3000));

    final AnimatorSet set1 = new AnimatorSet();
    //THIS IS THE PROBLEMATIC ANIMATION!!
    set1.play(ObjectAnimator.ofFloat(image, "alpha", 0.25f, 1).setDuration(3000));

    final AnimatorSet set2 = new AnimatorSet();
    set2.play(ObjectAnimator.ofFloat(image, "translationX", 100, 200).setDuration(3000));

    final AnimatorSet set3 = new AnimatorSet();
    set3.playSequentially(set,set1,set2);
    set3.start();
}   
Run Code Online (Sandbox Code Playgroud)

android android-animation

25
推荐指数
2
解决办法
2万
查看次数