Articles of animation

RecyclerView项目和CollapsingToolbar之间的共享元素animation在相同的活动

在我的应用程序中,我有一个通过RecyclerView适配器显示的项目列表。 如果我点击一个项目,在同一个Activity中启动一个新的Fragment 。 我的项目和我的活动外观(简化)的布局是这样的: 活动布局: <android.support.design.widget.CoordinatorLayout> <android.support.design.widget.AppBarLayout> <android.support.design.widget.CollapsingToolbarLayout> <ImageView android:id="@+id/image" android:transitionName="image" … /> <android.support.v7.widget.Toolbar … /> </android.support.design.widget.CollapsingToolbarLayout> <android.support.design.widget.TabLayout … /> </android.support.design.widget.AppBarLayout> <FrameLayout… /> </android.support.design.widget.CoordinatorLayout> 项目布局: <RelativeLayout > <ImageView android:id="@id/itemImage" android:transitionName="image" /> <LinearLayout> <TextView … /> <TextView … /> </LinearLayout> </RelativeLayout> 现在,如果新的片段是通过项目点击开始的,我想将项目图像的animation添加到CollapsingToolbarLayout的ImageView中。 我阅读了有关ShareElementanimation的文章 ,但这不起作用,因为这不是真正的ShareElementanimation。 目标ImageView不在新的片段中,我也不必开始新的活动(我只在新的Fragment中使目标ImageView可见)。 那么如何在这种情况下创build这样的animation呢?

animation不会在当前可见的ListView项目中启动

我被卡住了,我无法在任何地方find解决scheme。 🙁 我有我的ListView(GridView),由BaseAdapter提供的每个项目的Layout中的ImageView。 当图像被加载,我分配加载的BitmapDrawable到ImageView使用 imageView.setImageDrawable( newImage ); 该项目popup没有任何问题。 但如果我通过使用TransitionDrawable或分配一个简单的animation分配新的BitmapDrawable: //this is inoperative – animation will not start for currently displayed items! No solution found 🙁 Animation a = LibResource.getResourceAnimation( activity, R.anim.fade_in ); imageView.setImageDrawable( newImage ); imageView.startAnimation( a ); animation不会为我的GridView的当前显示的项目启动。 如果我向下滚动GridView并将其滚动回所提到的项目,将显示图像并执行animation! 我已经尝试了以下修复: imageView.invalidateDrawable( newImage ); imageView.invalidate(); 在分配animation之后,我也尝试了以下语句 – 当然,我在UI-Thread上调用了它们,之后在UI-THREAD上分配和启动animation: myGridView.invalidate(); myGridView.invalidateViews(); myGridView.getAdapter().notifyDataSetChanged(); 如上所述,这个问题只发生在我的ListView中的可见项目。 为什么animation或者TransitionDrawable不能启动,即使在所有涉及的视图上调用了invalidate()之后呢? 问题发生在我的XPeria-Arc-S(API-Level 10)和Android-Emulators […]

活动开始时的animation跳转

我正在为我的Android应用程序animation自定义视图。 我已经通过属性animation完成了这一点,并根据https://developer.android.com/guide/topics/graphics/prop-animation.html在onAnimationUpdate()callback视图上调用invalidate() : 根据您正在animation的属性或对象,您可能需要在视图上调用invalidate()方法来强制屏幕使用更新后的animation值重绘本身。 您可以在onAnimationUpdate()callback中执行此操作。 我的问题是,当这些animation在新启动的 Activity开始时运行时,它们会在开始时跳过帧,导致它们非常明显地跳跃。 我已经尝试了两个: 立即从Activity的onCreate()方法开始animation 在OnGlobalLayout()callback中使用Activity根视图的OnGlobalLayout()启动animation。 我做了后者,因为我认为也许animation是在布局完成之前调用的,但结果是一样的。 使用日志,我确定onAnimationUpdate()callback在整个animation中(即从开始到结束每10-20毫秒左右onAnimationUpdate()一致地调用。 onAnimationUpdate()简单地调用invalidate() ,这应该强制视图重新绘制自己,理想情况下立即(但文档只声称这发生在“未来的某个时刻”)。 这似乎正是问题所在: onDraw()只在一开始被调用一次或两次,而不被调用大约250毫秒。 之后,每10-20毫秒重新开始一次,因为它应该有整个时间。 但是这段时间会导致animation非常明显的滞后。 要明确,这个问题只发生在活动的开始。 如果我在开始animation之前简单地设置一个300毫秒的延迟,它会一直运行。 但是我不喜欢这个解决scheme,因为它很好。 看来问题在于, onDraw()不会立即在Activity的开始附近的invalidate()处被调用。 但是,我不明白为什么这是什么阻止onDraw() ,或如何解决它。 我发现只有这个StackOverFlow线程: 活动开始时的animation跳过海报有相同问题的帧 。 基本代码在那里,video使问题变得清晰。 我也可以发布我的代码,但是我认为问题出现在最基本的testing应用程序中的事实表明还有其他事情正在发生。

为什么硬件加速不能在我的视图上工作?

我正在使用Facebook的回弹库来复制聊天头实现中看到的弹性animation。 问题是,大部分时间animation口吃。 一些图片将更好地解释这一点。 这里是平滑的聊天头animation: 这里是我的尝试(请注意白色View的animation几乎跳过所有的帧): 有一段时间它运作顺利: 下面是我目前使用的代码(如果你想快速设置,整个项目在Github上)。 我猜这与硬件加速没有在我的View上正确启用有关。 我的SpringSystem有两个Spring ,一个用于“泡泡”(Android图标),另一个用于内容(点击泡泡时显示的白色View )。 任何帮助如何解决这个问题将不胜感激。 谢谢。 AndroidManifest.xml : <application android:hardwareAccelerated="true" …> … </application> AppService.java : // the following code is in AppService#onCreate() // AppService extends android.app.Service // full code at https://github.com/vickychijwani/BubbleNote mContent.setLayerType(View.LAYER_TYPE_HARDWARE, null); final Spring bubbleSpring = system.createSpring(); bubbleSpring.setCurrentValue(1.0); bubbleSpring.addListener(new SpringListener() { @Override public void onSpringUpdate(Spring spring) { […]

setOffscreenPageLimit()如何通过保留更多的屏幕外片段来提高ViewPager的性能?

我有一个ViewPager控制五个Fragments 。 当我从索引1处的Fragment向索引0处的Fragment滑动时,我想消除animation中的短暂停顿 。 目前,我并没有调用setOffscreenPageLimit() ,所以我知道在Fragment 1处于空闲状态时, Fragment 0被ViewPager保留在内存中,因为屏幕外页面限制默认为1(任一当前Fragment一面)。 这是令人困惑的地方。 如果我在我的ViewPager上调用setOffscreenPageLimit(4) , 从1到0animation的滑动暂停就消失了 – animation是平滑的 。 因此,我总结道,在内存中保留Fragments 2-4将animation从Fragment 1改进为Fragment 0。 如何保留Fragments 2-4改善从Fragment 1到Fragment 0的滑动animation? 编辑 我运行TraceView,使用onPageScrollStateChanged(int state)来确定何时开始和停止跟踪,如下所示: @Override public void onPageScrollStateChanged(int state) { if (state == 1 && mViewPager.getCurrentItem() == 1) { Debug.startMethodTracing("ViewPagerTesting", 100000000); } if (state == 0 && mViewPager.getCurrentItem() == 0) { Debug.stopMethodTracing(); […]

在Android中实现类似于iOS的旋转活动指示器

我正在尝试执行类似于我在Android中放置的旋转活动。 我相信我应该使用ProgressDialog。 我的问题来自于如何实际操作ProgressDialog,使其像活动指示符一样出现。 任何想法都欢迎。 一个例子的链接甚至会更好。 谢谢。 重新编辑: myProgress.java public class myProgress extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); ProgressDialog d = (ProgressDialog)findViewById(R.id.progres); main.xml中 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/progres" android:layout_width="fill_parent" android:layout_height="fill_parent" android:gravity="center" > <ProgressBar android:id="@+id/progressBar" android:indeterminate="true" style="?android:attr/progressBarStyleLarge" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerInParent="true" /> </RelativeLayout>

Android – 使用animation的工件

在应用此处find的3D转换时,我遇到了屏幕上的视觉工件问题。 我已经改变了这个,所以它围绕X轴而不是Y旋转。 当我做了一个完整的180旋转(首先离开你的顶部)即时通讯应用到其他每个视图的底部区域(底部10-20%)单个像素线文物。 我使用select器作为LinearLayout的背景,然后将此animation应用于它。 任何人都可以想到一个快速解决这个问题? 谢谢你的帮助!

在翻译animation中,是否有可能获得ImageView的实时坐标?

我有一个ImageView中的子弹的图像做翻译animation。 我需要显示实时坐标来实时显示目标距离多远。 ImageView myimage = (ImageView)findViewById(R.id.myimage); Animation animation = new TranslateAnimation(100, 200, 300, 400); animation.setDuration(1000); myimage.startAnimation(animation); animation.setRepeatCount(Animation.INFINITE); 在做TranslateAnimation时,是否可以获得图像的实时x和y坐标? 如果它不可能使用TranslateAnimation,那么有没有其他方法可以在运动时给出图像的实时坐标? 我试过了 – int x = myimage.getLeft(); int y = myimage.getTop(); 和 int[] firstPosition = new int[2]; myimage.measure(View.MeasureSpec.EXACTLY, View.MeasureSpec.EXACTLY); myimage.getLocationOnScreen(firstPosition); int x = firstPosition[0]; int y = firstPosition[1]; 但是在两种方式中,都给出了ImageView的初始静态坐标。

TextView展开Android Market中的animation

任何人都可以指出解决scheme如何在Android Marketanimation中扩展描述TextView的animation? 有TextView包装到FrameLayout后,点击“更多”标签后展开。

animation视图的顶部和底部尺寸

我需要做两件事情: 将顶部维度移至窗口的顶部 将底部尺寸移到窗口的最底部。 总之,我需要的观点覆盖了父视图的100%。 翻译animation不起作用,因为它移动了视图,但不会增加大小。 缩放animation的作品,但它延伸了视图的内容,我不希望这一点。 我想增加可见区域,而不是扩展内容以适应新的维度。 什么是正确的方法来做到这一点?