我开始在视图动画中使用属性动画,因为我有一个需要扩展的视图,并将其他视图放在一边.我已经看到了一些例子,但我只是想知道是否有任何地方提供了可以使用这些类改变的属性列表.例如,我看到一个教程使用以下方法进行快速轮换:
ObjectAnimator.ofFloat(aniView, "rotation", 360)
Run Code Online (Sandbox Code Playgroud)
这很酷,但如果没有那个确切的教程,我就不会知道旋转属性,有什么可以做的全面列表吗?我想要设置动画的特定属性是LinearLayout中视图的权重,如果有人对此有任何建议.
如何使用Android中的属性动画增加视图高度?
ObjectAnimator a = ObjectAnimator.ofFloat(viewToIncreaseHeight, "translationY", -100);
a.setInterpolator(new AccelerateDecelerateInterpolator());
a.setDuration(1000);
a.start();
Run Code Online (Sandbox Code Playgroud)
translationY实际上移动视图而不是增加高度.如何增加视图的高度?
java android android-animation objectanimator viewpropertyanimator
我正试图在两个片段之间进行翻转卡片动画,例如 - > 显示卡片翻转动画,方法是:
private void switchFragment(Fragment fragment) {
FragmentManager fragmentManager = getSupportFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager
.beginTransaction();
if ((fragment != null) && !(fragment.equals(currentFragment))) {
if (transactionByMenu) {
fragmentTransaction.setCustomAnimations(android.R.anim.fade_in,
android.R.anim.fade_out);
} else {
fragmentTransaction.setCustomAnimations(
R.animator.card_flip_right_in,
R.animator.card_flip_right_out);
}
Fragment nextFragment = fragment;
fragmentTransaction.hide(currentFragment);
fragmentTransaction.show(nextFragment);
currentFragment = nextFragment;
}
fragmentTransaction.commit();
}
Run Code Online (Sandbox Code Playgroud)
交易if(transactionByMenu){...}有效,但没有else{...}
我检查我的库和东西,我目前的目标高于api 11但我仍然有这个错误消息:
05-22 11:32:34.706: E/AndroidRuntime(6801): FATAL EXCEPTION: main
05-22 11:32:34.706: E/AndroidRuntime(6801): java.lang.RuntimeException: Unknown animation name: objectAnimator
05-22 11:32:34.706: E/AndroidRuntime(6801): at android.view.animation.AnimationUtils.createAnimationFromXml(AnimationUtils.java:124)
05-22 11:32:34.706: E/AndroidRuntime(6801): …Run Code Online (Sandbox Code Playgroud) 我正在使用objectAnimator在Android中从下到上动画一个按钮.现在我使用下面的代码
ObjectAnimator transAnimation = ObjectAnimator.ofFloat(button,"translationY",0,440);
transAnimation.setDuration(440);
transAnimation.start();
Run Code Online (Sandbox Code Playgroud)
我也试过下面的示例代码.但问题仍然存在
ObjectAnimator transAnimation = ObjectAnimator.ofFloat(loginLayout, "translationY",0f,0.8f);
transAnimation.setDuration(480);
transAnimation.start();
Run Code Online (Sandbox Code Playgroud)
它适用于大屏幕设备.但是当谈到小屏幕设备时,它就会离开屏幕.无论屏幕大小不同,我都希望将其保留在屏幕顶部.我想我必须给出百分比值(比如0%到100%或0到100%p).所以我的问题是如何在Android中的objectAnimator中给出百分比值.我还注意到这个objectAnimator只在HoneyComb中引入了一件事.那么是否有任何向后兼容库可以在低版本中运行它.任何人都可以指导我找到解决方案.
我也试过扩展View并为该属性编写getter和setter offset().它仍然没有完全移动到屏幕顶部.这是我用过的代码.
@SuppressLint("NewApi") public float getXFraction()
{
int width = context.getWindowManager().getDefaultDisplay().getHeight();
return (width == 0) ? 0 : (getY());
}
@SuppressLint("NewApi") public void setXFraction(float xFraction) {
int width = context.getWindowManager().getDefaultDisplay().getWidth();
setY((width > 0) ? (width) : 0);
}
Run Code Online (Sandbox Code Playgroud)
提前致谢
这是我的解决方案
动画/ pulse.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<scale
android:duration="300"
android:fromXScale="1"
android:fromYScale="1"
android:pivotX="50%"
android:pivotY="50%"
android:repeatCount="infinite"
android:repeatMode="reverse"
android:toXScale="0.75"
android:toYScale="0.75"
android:interpolator="@android:interpolator/bounce" />
<scale
android:duration="100"
android:fromXScale="1"
android:fromYScale="1"
android:pivotX="50%"
android:pivotY="50%"
android:repeatCount="infinite"
android:repeatMode="reverse"
android:toXScale="1.25"
android:toYScale="1.25"
android:interpolator="@android:interpolator/bounce" />
</set>
Run Code Online (Sandbox Code Playgroud)
然后在activity.java中:
ImageView imageView = (ImageView) findViewById(R.id.image);
imageView.startAnimation(AnimationUtils.loadAnimation(this, R.anim.pulse));
Run Code Online (Sandbox Code Playgroud)
我不满意,因为真正的跳动的心脏有更优雅的收缩.怎么可以改进?
编辑:我认为一个很好的效果会模仿心跳.快速收缩然后是另一个收缩.也许最后一局在上半场可能很快,然后在下半场慢慢逆转.有没有办法让所有这些效果相互引发?
我有一个非常复杂的动画我需要编码,我正在使用一堆ObjectAnimators,如下所示:
ObjectAnimator objectAnimator1 = ObjectAnimator.ofFloat(view, TRANSLATION_X, value).setDuration(BASE_DURATION * 2);
ObjectAnimator objectAnimator2 = ObjectAnimator.ofFloat(view, TRANSLATION_Y, value).setDuration(BASE_DURATION * 2);
Run Code Online (Sandbox Code Playgroud)
是否可以将X和Y转换分组到同一个ObjectAnimator中,而不是创建一堆它们然后将它们全部添加到AnimatorSet中?
谢谢!
我正在使用动画师(ObjectAnimator)为视图的一些属性(缩放,旋转)设置动画.
当ObjectAnimators设置为目标视图时,目标视图可以正常设置动画.
但是还需要在一段时间后查看原始位置 (重置).
我试图取消()动画师,但它只取消动画并且不重置视图.
可能的解决方案:创建另一个与初始动画师完全相反的动画师.
有没有其他方法可以重置它?
像这样对待一个可绘制的工作:
if(mAlphaAnimation == null){
mAlphaAnimation = ObjectAnimator.ofFloat(this, "alpha", 0.0f,1.0f).setDuration(TARGET_ANIM_ALPHA_DURATION);
mAlphaAnimation.setInterpolator(new AccelerateDecelerateInterpolator());
mAlphaAnimation.setStartDelay(TARGET_ANIM_ALPHA_DELAY_BASE*power);
mAlphaAnimation.setRepeatCount(ValueAnimator.INFINITE);
mAlphaAnimation.setRepeatMode(ValueAnimator.REVERSE);
mAlphaAnimation.addUpdateListener(this);
}
Run Code Online (Sandbox Code Playgroud)
但是,如果我想像下面那样旋转一个抽屉,它就不起作用了.
private void createRotateAnim(float fromDegress,float toDegress,int duration){
if(mRotateAnimation == null){
mRotateAnimation = ObjectAnimator.ofFloat(this, "rotation",fromDegress,toDegress).setDuration(duration);
mRotateAnimation.setStartDelay(100);
mRotateAnimation.setInterpolator(new AccelerateInterpolator());
mRotateAnimation.addUpdateListener(this);
}
}
Run Code Online (Sandbox Code Playgroud)
任何人都可以帮我解决这个问题,或者这是创建旋转可绘制动画的任何其他方法.
我很遗憾我的英语不好.
我正在尝试使用淡入淡出动画来设置动画 AnimatorSet
Button fades in > Click button > Remaining buttons fade out
所以为了做到这一点,我想设置onClickListner after the animation is completed,但这似乎不起作用.单击动画中间的按钮triggers the onClick action:
setQuestion = new AnimatorSet();
setQuestion.playSequentially(fadeinAnimationQ,fadeinAnimation1,fadeinAnimation2,fadeinAnimation3,fadeinAnimation4,fadeinAnimation5);
setQuestion.start();
Run Code Online (Sandbox Code Playgroud)
这是检查的方法if the animation has finished.
private void checkAnimation() {
while (true) {
// Check if animation has ended
if (setQuestion.isRunning() == false) {
assignListners();
break;
}
}
}
Run Code Online (Sandbox Code Playgroud) 我试图停止ImageView点击按钮时的动画.我正在使用的动画是AnimatorSet由5组成ObjectAnimators...问题是我无法想象如何从ImageView点击按钮时停止和清除此动画,因为btn.clearAnimation()显然不起作用.
谢谢您的帮助.