Tag: 动画

Android:加载片段时启动动画

我试图用加载动画实现自定义片段。 相同的代码与活动正常工作,但不适用于片段。 这里我的片段布局代码: <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="pw.osin.musicexpert.fragments.BusyFragment"> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_gravity="center" android:orientation="vertical"> <ImageView android:id="@+id/fragment_animation_logo" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:layout_marginBottom="20dp" android:background="@drawable/vinyl" /> <FrameLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:layout_margin="20dp" android:background="@color/colorPrimaryDark"> <TextView android:id="@+id/fragment_animation_description" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_margin="16dp" android:gravity="center_horizontal" android:text="@string/message_data_is_loading" android:textColor="@color/colorPrimaryYellow" android:textSize="20dp" android:textStyle="bold" /> </FrameLayout> </LinearLayout> 我在OnCreate方法调用片段中的方法 private fun setAnimation() { Log.i(TAG, "Установка анимации") val drawable = AnimationUtils.loadAnimation(this.context, R.anim.rotate_anim) mAnimationDescription?.setText(R.string.message_data_is_loading); […]

在ObjectAnimator中使用不同视图大小时的不同目标位置

我试图实现一个动画,我创建一个ImageView的副本,缩小它,并沿曲线移动到另一个视图的位置。 目标是视图到达目标视图的位置时消失。 我的动画代码如下(代码简化了这个问题): fun animate(imageViewToCopy: ImageView, targetView: ImageView) { // create copy of ImageView val copy = imageViewToCopy.createCopy() // draw it on the decor view (params excluded, from example code) activity.window.decorView.addView(copy) startAnimation(copy, targetView) } private fun startAnimation(imageView: ImageView, targetView: ImageView) { val dest = IntArray(2) targetView.getLocationOnScreen(dest) val targetX = dest[0] val targetY = dest[1] val […]

Android中的布局参数动画性能低下

目前我使用下面的代码来动画对象的宽度: val animation = ValueAnimator.ofInt(layoutParams.width, value) .setDuration(duration) animation.interpolator = interpolator ?: LinearInterpolator() animation.start() animation.addUpdateListener { val animatedValue = it.animatedValue as Int layoutParams.width = animatedValue requestLayout() } animation.addListener(object: Animator.AnimatorListener { override fun onAnimationRepeat(p0: Animator?) {} override fun onAnimationEnd(p0: Animator?) { endHandler?.invoke() } override fun onAnimationCancel(p0: Animator?) {} override fun onAnimationStart(p0: Animator?) {} }) 但是,即使在简单的布局上,动画也是非常滞后的。 有没有什么办法来改善layoutParams更改动画的性能?

动态地动画BottomSheet peekHeight

有没有人设法动画BottomSheet peekHeight? 我目前执行以下操作: bottom_sheet?.let { val behavior = BottomSheetBehavior.from(bottom_sheet) behavior.peekHeight = 500 behavior.state = BottomSheetBehavior.STATE_COLLAPSED } bottom_sheet窥视高度被改变,但我想要一个动画,就像当你将状态从STATE_COLLAPSED更改为STATE_EXPANDED 。

“with”功能的用法

有没有人可以解释我用什么“用”功能? 签名 public inline fun <T, R> with(receiver: T, f: T.() -> R): R = receiver.f() 文件 用给定的接收者作为接收者调用指定函数f并返回结果。 我发现它在这个项目Antonio Leiva上使用 。 它用于移动视图: fun View.animateTranslationY(translationY: Int, interpolator: Interpolator) { with(ObjectAnimator.ofFloat(this, "translationY", translationY.toFloat())) { setDuration(context.resources.getInteger(R.integer.config_mediumAnimTime).toLong()) setInterpolator(interpolator) start() } } 我在想,我知道我把它转移到的意义 fun View.animateTranslationX(translationX: Int, interpolator: Interpolator) { with(ObjectAnimator()) { ofFloat(this, "translationX", translationX.toFloat()) setDuration(context.resources.getInteger(R.integer.config_mediumAnimTime).toLong()) setInterpolator(interpolator) start() } } 但它不能编译…但我认为ObjectAnimaton是接收器,它将得到我将在括号中调用的所有内容。 […]

无效的可绘制标记动画矢量

我已经看遍了所有的stackoverflow,没有问题能够解决我的问题。 我试图播放一个带有API 15的设备上绘制的动画矢量,但我一直得到下面的运行时异常: com.karim.test E/AvdcInflateDelegate: Exception while inflating <animated-vector> android.content.res.Resources$NotFoundException: File res/drawable-ldpi-v4/feedback.png from xml type xml resource ID #0x7f020066 at android.content.res.Resources.loadXmlResourceParser(Resources.java:2152) at android.content.res.Resources.loadXmlResourceParser(Resources.java:2107) at android.content.res.Resources.getXml(Resources.java:906) at android.support.graphics.drawable.VectorDrawableCompat.create(VectorDrawableCompat.java:408) at android.support.graphics.drawable.AnimatedVectorDrawableCompat.inflate(AnimatedVectorDrawableCompat.java:356) at android.support.graphics.drawable.AnimatedVectorDrawableCompat.createFromXmlInner(AnimatedVectorDrawableCompat.java:162) at android.support.v7.widget.AppCompatDrawableManager$AvdcInflateDelegate.createFromXmlInner(AppCompatDrawableManager.java:905) at android.support.v7.widget.AppCompatDrawableManager.loadDrawableFromDelegates(AppCompatDrawableManager.java:356) at android.support.v7.widget.AppCompatDrawableManager.getDrawable(AppCompatDrawableManager.java:197) at android.support.v7.widget.AppCompatDrawableManager.getDrawable(AppCompatDrawableManager.java:192) at android.support.v7.widget.AppCompatImageHelper.setImageResource(AppCompatImageHelper.java:66) at android.support.v7.widget.AppCompatImageView.setImageResource(AppCompatImageView.java:71) at com.karim.test.MainActivity.initialize(MainActivity.java:428) at com.karim.test.MainActivity.onCreate(MainActivity.java:210) Caused by: java.io.FileNotFoundException: Corrupt XML binary file at […]

我如何动画layer_list的项目?

我有layer_list和其中一个项目是vectorDrawable我需要使用两层的动画圈(背景)应该缩放比例时完成复选标记应淡入淡出。 我完全是虚拟的动画,我该如何解决这个问题。 <?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_checked="true"> <shape> <solid android:color="@color/light_green" /> <corners android:radius="150dp" /> <size android:width="120dp" android:height="120dp"/> </shape> </item> <item android:width="30dp" android:gravity="center" android:height="30dp" android:drawable="@drawable/ic_checkmark" /> </layer-list> <vector xmlns:android="http://schemas.android.com/apk/res/android" android:width="24dp" android:height="24dp" android:viewportHeight="56.7" android:viewportWidth="56.7"> <path android:fillColor="#010101" android:pathData=""/>

如何开始创建类似于Google Play音乐的交互式转换

我正在创建一个视图,在用户与之交互时滑出。 我想制作一个小型的酒吧,当用户向上拖动它时,它会在他们的手指下动画,并随着它们一起移动,直到最终开启全景。 仔细观察Google Play音乐,我猜测他们正在使用片段,并且有两个滚动视图,一个滚动整个屏幕,但触摸区域只定义为底部的栏,并以占位符视图滚动看起来像真正的玩家,然后在最后一秒切换片段。 这个,或者根本不是片段,只是在编程的时候,视图是100%滚动的,并且改变了按钮的位置 有任何想法吗? 我找不到任何代码示例。 Kotlin或Java

强制使用API​​ 21和22中的AnimatedVectorDrawableCompat来使用registerAnimationCallback

我正在使用支持Android API 19-26的应用程序绘制的动画矢量。 为了重新开始动画(这是一个自定义的圆形加载动画),我使用AnimatedVectorDrawable.registerAnimationCallback,在onAnimationEnd回调中重新开始动画。 这适用于API> = 23,并且由于AnimatedVectorDrawableCompat,它也适用于API 19。 但是,它不适用于API 21和22,因为AnimatedVectorDrawable类已经存在于这些API中,但是registerAnimationCallback方法仅在API 23中添加。我怎样才能强制运行API 21或22的设备使用AnimatedVectorDrawableCompat他们的AnimatedVectorDrawable类,以便我可以使用registerAnimationCallback? 以下是我为不同的API版本开始动画的方法(在Kotlin中): private fun startAnimation() { if (Build.VERSION.SDK_INT >= 23) { ((circular_progress.drawable as LayerDrawable) .findDrawableByLayerId(R.id.loading_circle) as AnimatedVectorDrawable).apply { registerAnimationCallback(@TargetApi(23) object : Animatable2.AnimationCallback() { override fun onAnimationEnd(drawable: Drawable?) { super.onAnimationEnd(drawable) this@apply.start() } override fun onAnimationStart(drawable: Drawable?) = super.onAnimationStart(drawable) }) }.start() } else if (Build.VERSION.SDK_INT >= […]