Articles of animation

在Android的RecyclerView中检测animation完成

与ListView不同, RecyclerView没有一种简单的方法来设置空视图,因此必须手动管理它,以便在适配器的项数为0时使空视图可见。 实现这一点,起初我尝试在修改底层结构(在我的情况下为ArrayList )后立即调用空视图逻辑,例如: btnRemoveFirst.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { devices.remove(0); // remove item from ArrayList adapter.notifyItemRemoved(0); // notify RecyclerView’s adapter updateEmptyView(); } }); 它做了这件事,但有一个缺点:当删除最后一个元素时,在删除animation完成之前立即显示空视图。 所以我决定等到animation结束然后更新UI。 令我惊讶的是,我找不到在RecyclerView中监听animation事件的好方法。 首先想到的是使用isRunning方法,如下所示: btnRemoveFirst.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { devices.remove(0); // remove item from ArrayList adapter.notifyItemRemoved(0); // notify RecyclerView’s adapter recyclerView.getItemAnimator().isRunning(new RecyclerView.ItemAnimator.ItemAnimatorFinishedListener() { @Override […]

如何在设置View的alpha之前创建1秒的延迟?

在我的应用程序中,我将在一个animation后设置alpha。 如: hideMenu = AnimationUtils.loadAnimation( getApplication(), R.anim.menu_layout_hide); menuLayout.startAnimation(hideMenu); menuLayout.setVisibility(View.GONE); 但我想在Alpha设置View之前设置1秒的延迟。 因为我无法看到该布局的animation。 那怎么可能呢? 谢谢。

如何在android中同时启动两个animation?

我有两个线性布局,我想在这两个布局上同时执行两个不同的animation。 现在它以顺序的方式工作。 即,在完成一个之后,另一个开始。 这是我的代码。 Animation inFromRight = new TranslateAnimation( Animation.RELATIVE_TO_PARENT, +0.0f, Animation.RELATIVE_TO_PARENT, 0.0f, Animation.RELATIVE_TO_PARENT, 0.0f, Animation.RELATIVE_TO_PARENT, 0.0f); inFromRight.setDuration(500); inFromRight.setInterpolator(new AccelerateInterpolator()); Animation outtoLeft = new TranslateAnimation( Animation.RELATIVE_TO_PARENT, 0.0f, Animation.RELATIVE_TO_PARENT, -1.0f, Animation.RELATIVE_TO_PARENT, 0.0f, Animation.RELATIVE_TO_PARENT, 0.0f); outtoLeft.setDuration(500); outtoLeft.setInterpolator(new AccelerateInterpolator()); @Override public void onClick(View v) { switch (v.getId()) { case R.id.menu: mainLayout.startAnimation(outtoLeft); sideBar.startAnimation(inFromRight); break; } } outtoLeft.setAnimationListener(new AnimationListener() { […]

基于多个ScrollViewanimation单个视图

我正在开发一个应用程序,我正在尝试根据多个ScrollView的滚动位置animationView 。 这就是屏​​幕的外观。 上面的屏幕有两个部分 Top上的View组件 底部的TabNavigator组件 TabNavigator中的每个标签都有一个ScrollView (在这种情况下有2个但可以更多),我想要实现的是当用户向下滚动时折叠View并在用户向上滚动时展开它。 在一个标签上,我做得很好,它正是我想要它的工作方式,但是当我添加第二个标签时出现了问题。 问题 当我在tab1上滚动一点并移动到tab2并尝试滚动时,它会变得生涩。 看到GIF了解我想说的话 更新 在expo.io上查看这个小吃以查看问题 snack.expo.io/SytBkdBAW 我尝试了什么 App.js export default class App extends Component { constructor (props) { super(props) this.state = { /* omitted – not related */ scrollY: new Animated.Value(0) } } render () { let translateY = this.state.scrollY.interpolate({ inputRange: [0, 600], outputRange: [0, -290], […]

Android TranslateAnimation在animation后重置

我正在创建像SlideDrawer这样的东西,但是大多数自定义,基本上这个东西都在工作,但animation最后会闪烁。 为了进一步解释,我得到了一个TranslateAnimation然后在这个animation之后它返回到原始位置,如果我设置了setFillAfter,那么布局内的按钮就会停止工作。 如果我听onAnimationEnd并将其他布局设置为View.GONE布局fickers。 从它的判断来看,在animation结束时,视图会在调用View.GONE之前返回到原始位置。 任何建议都很棒。 谢谢

ViewPager碎片 – 共享元素转换

我正在开发的应用程序显示图像网格。 点击图像时,它会进入详细信息视图。 详细信息视图包含一个ViewPager,允许您在网格中的每个图像之间滑动。 这是通过传递路径列表(包含网格中的每个图像)以及被点击的图像的偏移来完成的,因此可以将ViewPager设置为最初显示该页面。 在ViewPager中当前偏移页面的Fragment内部进行共享元素转换的最佳方法是什么? 网格(RecyclerView)图像应扩展为当前页面中的全屏图像。 我看到了推迟和恢复活动转换的能力,因此应用程序将等待显示共享元素转换,直到从磁盘加载图像。 但是我希望能够使它在视图寻呼机中对正确的页面进行animation处理,并且当用户返回时也退出到当前页面的任何内容(因为您可以在页面之间滑动)。 如果您现在滑动到另一个页面,初始页面将animation回到网格中。 目前,我使用“image_ [index]”格式的transitionName为视图寻呼机的片段中的每个图像分配。 当我开始详细信息活动时,我使用相同的transitionName,索引是偏移量。 与此相关,我也想知道如何使用长按压使涟漪起作用。 当您更改视图的激活状态时,它似乎取消了波纹。 我想要一个类似于Gmail的效果,其中涟漪重新开始并在长按完成后快速完成并触发激活状态。

使用GSAP的Android webview:尝试删除非JNI本地引用,转储线程

在使用Nexus5仿真器的Android Studio 1.4中,每次在webview中使用GSAP都有3Danimation(x,y,rotationX,rotationY,rotationZ)时,logcat会发出大量此消息: Attempt to remove non-JNI local reference, dumping thread 这似乎不会影响我的webapp的行为,除了产生消息时的一些口吃,这对于需要几秒钟完成的animation来说是多次。 关于如何停止的任何想法,或者这甚至是一个问题? 更新:我的测试设备,三星Galaxy S4上没有出现错误。 所以它可能只是一个模拟器问题。

Android:如何停止在ImageView上应用无限animation?

我有一个ImageView,我已经应用了旋转animation。 由于我希望旋转继续进行,因此我在rotate.xml中将repeatCount视为无限: android:repeatCount=”infinite” 在onCreate()中,我加载animation并启动它。 Animation myAnim = AnimationUtils.loadAnimation(this, R.anim.rotate); objectImg.startAnimation(myAnim); 按下按钮时,必须停止旋转。 因此在我的onClick()中,我调用了clearAnimation()。 objectImg.startAnimation(myAnim); 我的简单问题是停止animation是否正确。 我假设clearAnimation()对应于loadAnimation(),但是没有与startAnimation()对应的stopAnimation()。

ANDROID – 如何在开始新animation之前检查animation是否正在运行

好吧,我有一个活动,我有多个ImageViews,当你点击它时,ImageView将淡出并淡入。我想弄清楚的是我如何点击一个ImageView并启动animation,当我点击第二个,animation仍在运行,它将忽略第二个。 我想我需要对animationListener做一些事情,但是在我发起新animation之前,我无法弄清楚如何使用它来检查animation是否正在运行。 我本来可以发誓我看到了一个这样做的例子,但我已经找了好几天而又找不到了,我希望有人能够在这里帮忙…..下面是我的代码animation: // Create Animation protected void fadeAnimation() { tempImg.startAnimation(fadeout); //Allow animation to finish mHandler.postDelayed(new Runnable() { public void run() { tempImg.startAnimation(fadein); } }, 1000); }

Androidanimation – 翻转

我需要创建一个animation – 翻转视图并显示另一个视图。 当前显示的视图的宽度缓慢减小到零,之后,要显示的视图的宽度必须从零增加。 在此期间,高度从当前显示的高度变为略微减小的高度并再次返回。 我怎样才能实现这一点…使用ViewFlipper。