Articles of android animation

如何为新的Design Support Library的FloatingActionButton设置animation

我正在使用带有5个不同片段的TabLayout。 在其中3个片段中应该出现android.support.design.widget.FloatingActionButton 。 现在我只是在选项卡更改时设置FAB的可见性,但我希望有一个animation,FAB进出。 我怎样才能在Android中实现这一目标?

Android:Listview反弹到scrollview

有什么方法可以将ListView的弹跳效果添加到常规的scrollview中? 通过弹跳我的意思是当你触到列表的底部时橡皮筋就像效果一样。

animation师只能在Looper线程Android上运行

我正在尝试在任务完成时animation一些东西。 这里的问题是我收到此错误消息: 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) 该应用程序使用相同的确切代码工作正常,但现在它根本没有。 我真的很困惑。 这是错误发生的地方: 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() […]

在滑动ViewPager时查看翻译

我正在阅读一个关于自定义ViewPager的滑动页面animation的示例,该animation需要将页面( View )翻译成一定量。 这个例子来自文档 。 具体来说,它是一个名为ZoomOutPageTransformer的实现,可以通过setPageTransformer()在ViewPager上设置,以自定义页面的滑动方式(在其中包含缩放animation)。 这是最终结果应该是这样的: 现在,他们描述了他们将如何做到这一点: 在transformPage()实现中,您可以创建自定义幻灯片animation,方法是根据屏幕上页面的位置确定需要转换哪些页面,这是从transformPage()方法的position参数获得的。 position参数指示给定页面相对于屏幕中心的位置。 它是一个动态属性,随着用户滚动页面而变化。 当页面填满屏幕时,其position值为0.当页面刚刚从屏幕右侧绘制时,其position值为1.如果用户在第1页和第2页之间滚动,则第1页的position为-0.5和第二页的position为0.5。 根据屏幕上页面的position ,您可以通过使用setAlpha() , setTranslationX()或setScaleY()等方法设置页面属性来创建自定义幻灯片animation。 这是他们提供的PageTransformer的实现: public class ZoomOutPageTransformer implements ViewPager.PageTransformer { private static final float MIN_SCALE = 0.85f; private static final float MIN_ALPHA = 0.5f; public void transformPage(View view, float position) { int pageWidth = view.getWidth(); int pageHeight = view.getHeight(); if (position < […]

Android片段animationonResume

情况如下: 我正在使用API​​ 17引入的子片段。说我有 ActivityA -> FragmentA ActivityA -> FragmentB FragmentA -> ChildFragmentA FragmentA -> ChildFragmentB 所以我在ActivityA->FragmentA->ChildFragmentA ,我使用ActivityA->FragmentA->ChildFragmentB转换到ActivityA->FragmentA->ChildFragmentB ,使用animation添加到backstack并popupbackstack(当我转到ChildFragmentB和animation时有一个animation当我按回并转移到ChildFragmentA)。 现在我导航到ActivityA->FragmentB (FragmentA不再附加)。 当我导航回ActivityA->FragmentA ,其中ChildFragmentB可见时, ChildFragmentB像来自ChildFragmentA时ChildFragmentBanimation。 我想在恢复Activity->FragmentA时禁用此animation。 但是在儿童片段之间转换时要保持它。 此animation在FragmentTransaction中设置。 有没有办法让这种情况发生?

场景转换闪烁

我有一个简单的视图,包含一个scene root FrameLayout , ListView和底部的几个按钮。 scene root用于加载和显示不同的场景,大小根据当前scene动态变化。 ListView在两个方向上都设置为match_parent ,并位于scene root后面。 这是问题所在: 如果我使用底部的按钮开始转换,一切正常,没问题,魔术。 但是,如果我在滚动(✝✝)时将(✝)转换到不同的场景,则转换似乎在开始之前闪烁。 看起来渲染引擎无法在ListView因滚动而使层次结构无效之前加载animation的第一帧。 谢谢您的帮助 ;) ✝TransitionManager.go TransitionManager.go(Scene, Transition) ✝✝我已经为ListView添加了几个方法来实现这一点

在animation制作时,在RecyclerView内部折叠CardView

我想做什么 我有一个CardView ,底部有一个支持文本,默认为GONE 。 我想只在用户点击“操作箭头”时才能看到卡片的这一部分,如下图所示: 我知道我可以通过简单地将View可见性设置为VISIBLE来实现这一点,但我还想为expand和collapse事件设置animation。 问题和我到目前为止所尝试的内容 要做到这一点,我在我的CardView xml上使用了android:animateLayoutChanges=”true”属性,它在扩展时工作得很好。 但是,一旦我再次点击箭头折叠支持文本,下面的卡片就会重叠我在animation期间点击过的卡片。 我该如何避免这种重叠? 编辑:我知道有可能做一些像这个问题的解决方案 ,但它似乎过于复杂,因为android:animateLayoutChanges选项存在。 我想知道是否可以使用该XML属性解决我的问题,以保持简单。 我的animation代码如下: Java代码 protected void expandCard() { if (isExpanded) { ibt_show_more.animate().rotation(0).start(); isExpanded = false; tv_support.setVisibility(View.GONE); } else { ibt_show_more.animate().rotation(180).start(); isExpanded = true; tv_support.setVisibility(View.VISIBLE); } } XML代码 GIF的完整性(错误的崩溃行为)

animation两层可绘制项目前蜂窝

我试图animation两层drawable,以达到后蜂窝不确定进度指标的效果。 XML非常简单,但似乎只有一个层在Honeycomb之前的平台上运行时才会生成animation。 这仅仅是这些平台的限制,还是我可以使用的替代语法(通常是在API11之前或专门针对API11)来实现所需的function?

CursorAdapter支持ListView删除animation“闪烁”删除

我正在尝试使用SwipeToDismissUndoList库实现滑动删除和在ListView中,该库扩展了Roman Nurik的SwipeToDismiss示例。 我的问题在于删除animation。 由于ListView由CursorAdapter支持,因此animation触发onAnimationEnd的onDismiss回调,但这意味着animation在CursorAdapter使用delete更新之前已经运行并重置。 这最终看起来像是闪烁给用户,他们通过将其擦掉来删除一个音符,然后视图返回一瞬间然后消失,因为CursorAdapter已经拾取了数据更改。 这是我的OnDismissCallback : private SwipeDismissList.OnDismissCallback dismissCallback = new SwipeDismissList.OnDismissCallback() { @Override public SwipeDismissList.Undoable onDismiss(ListView listView, final int position) { Cursor c = mAdapter.getCursor(); c.moveToPosition(position); final int id = c.getInt(Query._ID); final Item item = Item.findById(getActivity(), id); if (Log.LOGV) Log.v(“Deleting item: ” + item); final ContentResolver cr = getActivity().getContentResolver(); cr.delete(Items.buildItemUri(id), null, null); mAdapter.notifyDataSetChanged(); […]

animation中的延迟(TranslateAnimation)

有没有办法让Animation暂停半秒? 我正在尝试使用TranslateAnimation API制作无限animation。 所以,我使用RepeatCount作为Infinite 。 我还注意到有一个setStartOffset(…)方法,它涵盖了我希望延迟启动animation的情况。 但是,我无法在每次“重启”之前find延迟的方法。 由于animation会发生无限次,每次animation重新启动时我都需要延迟。 有任何想法吗? 谢谢!!