Articles of animation

Android:animation自定义视图

编辑:答案总结 我发现了5种在Android中animation的方法: 使用“ 属性animation” Viewanimation的属性 ,以平滑地更改rotation , alpha , scale等。 帧animation ( AnimationDrawable ):快速更改图片,使其看起来animation 使用vector ( VectorDrawable )devise图像,并使用AnimatedVectorDrawable随着时间的推移对它们进行编辑来为它们设置 animation 。 覆盖 View上的onDraw() ,并通过在canvas上绘画来执行自定义绘图 。 使用Lottie ,从After Effects中复制animation。 LottieFiles提供了许多animation。 但是,Android也提供了一些内置工具 ,例如Scenes (可以让您在多个共享Views布局之间进行animation转换), Shared elements (可以让您将View从一个Activity传递到另一个Activity )等等 API 21中添加了许多(如果不是全部)这些function,请点击这里获取更多信息。 这里有一些有趣的文章/animation博客: Google制作的网站上的一个子类别叫做material.io : 创意定制 。 我们如何devise一个漂亮的animation :用animationvector来训练animation。 Android转换的工作原理 animation到无限 :蓝牙animation与vector Android中的框架animation :通过图像旋转填充心脏。 最后,一些有趣的工具: Mac工具在GitHub上录制Android屏幕。 video到GIF转换器在线 。 注意 我知道Android提供了诸如scale […]

使用dynamic位图设置在Android上实现KenBurns效果

背景 我正在操作栏上执行“ KenBurns效果 ”(演示这里 ),就像这个库的示例(除了移动的图标,我自己做的那样)。 事实上,我甚至在很久以前就问过这个问题,在这个问题上,我甚至不知道它的名字。 我确信我find了一个解决scheme,但它有一些问题。 另外,由于我有时会显示设备上的图像,有些图像甚至需要旋转,所以我使用了一个可旋转的图像(如图所示)。 问题 当前的实现不能处理dynamic给出的多个位图(例如,来自Internet),甚至不会查看input图像的大小。 相反,它只是以随机的方式进行缩放和翻译,很多时候它可以放大/缩小,并且可以显示空白空间。 代码 以下是与问题相关的代码: private float pickScale() { return MIN_SCALE_FACTOR + this.random.nextFloat() * (MAX_SCALE_FACTOR – MIN_SCALE_FACTOR); } private float pickTranslation(final int value, final float ratio) { return value * (ratio – 1.0f) * (this.random.nextFloat() – 0.5f); } public void animate(final ImageView view) { final float fromScale […]

如何在设置视图的alpha之前创build1秒的延迟?

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

如何实现平滑的展开/折叠animation

我指的是在这里find的展开/折叠animation代码。 Android:展开/折叠animation 虽然有用,但它不能很好地完成工作。 animation不平滑。 我在代码中做了一些日志logging。 public static void expand(final View v) { v.measure(MeasureSpec.makeMeasureSpec(((View)v.getParent()).getWidth(), MeasureSpec.EXACTLY), MeasureSpec.makeMeasureSpec(1024, MeasureSpec.AT_MOST)); final int targtetHeight = v.getMeasuredHeight(); v.getLayoutParams().height = 0; v.setVisibility(View.VISIBLE); Animation a = new Animation() { @Override protected void applyTransformation(float interpolatedTime, Transformation t) { v.getLayoutParams().height = interpolatedTime == 1 ? LayoutParams.WRAP_CONTENT : (int)(targtetHeight * interpolatedTime); Log.i("CHEOK", "E v.getLayoutParams().height = " […]

将setDisplayHomeAsUpEnabled中的抽屉图标变成箭头?

我使用setDisplayHomeAsUpEnabled为了显示箭头,而不是抽屉“汉堡”图标,但它没有得到animation或任何东西。 相反,它显示了即时绘制的箭头。 主屏幕:( 专辑1) 当你点击一个电影:( 专辑2) 问题是,当我滑动抽屉时,图标会使animation变得很好,这让我觉得也许我不应该为此使用setDisplayHomeAsUpEnabled 🙁 专辑3) 专辑: http : //imgur.com/a/LkXbh 这是我的抽屉切换代码: Toolbar toolbar = (Toolbar) findViewById(R.id.my_awesome_toolbar); setSupportActionBar(toolbar); drawerAdapter = new DrawerAdapter(this, App.getNavItems(), getSupportFragmentManager()); drawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout); drawerList = (ExpandableListView) findViewById(R.id.left_drawer); // Set onGroupClick and onChildClick drawerAdapter.setClickEvents(MainActivity.this, drawerLayout, drawerList); drawerList.setAdapter(drawerAdapter); ActionBarDrawerToggle toolbarDrawerToggle = new ActionBarDrawerToggle( this, drawerLayout, toolbar, R.string.drawer_open, R.string.drawer_close ) { […]

replace碎片具有错误的高程值

你好,再次堆栈溢出。 我有另一个片段问题。 (我使用android.app.Fragment不支持碎片) 我试图replace一个片段。 但是这不像使用那样简单: fragmentTransaction .replace(containerId, newFragment) .addToBackStack("unique tag") .commit() 为什么不? 好的问题朋友,因为我的newFragment有一个过渡animation。 animation在哪里定义? 另一个很好的问题,它定义在片段onCreateAnimator() 为什么在那里定义? 为什么可以find一个长的答案: 嵌套片段转换不正确 。 现在你需要相信这是我的项目需要完成的事情。 什么是animation在做什么? 从屏幕边缘到其中心的简单滚动,完全覆盖原始片段。 请记住,在这种情况下,旧的片段只是坐在原地。 它有一个不动的animation效果。 问题是什么? 问题是newFragment的高程(或z?)值比旧的高。 所以过渡是不能被观察到的,因为旧的片段位于新的片段之上。 在到达animation持续时间结束时,您会看到新的片段在旧的片段之上闪烁。 我希望这个新片段能够在animation开始的时候覆盖旧片断。 为什么不使用添加? 这似乎造成了更多的问题,因为我有很多我想要交换和切换的片段。 使用add似乎会在下一次使用replace时触发它们的退出animation,即使它前面有1 … n个碎片。 他们也不会停下来。 为什么不设置高程? 因为我支持没有海拔属性的api 19。 为什么不使用ViewCompat.setElevation()为api 19? 我尝试过,并有相同的失败的结果。 有没有人find解决这个问题的方法?

在折叠/展开时为可扩展列表视图的子元素生成animation

我试图在可扩展列表视图中animation我的子视图。 在展开组时,我希望子视图从上到下滑动,并在折叠组时从下到上滑动。 我已经看了几个方法(animation视图组或子视图),但没有一个看起来工作得很好,或者我做得不对。 我已经从BaseExpandableListAdapter扩展了一个类来创build我自己的自定义适配器。 我也有我在getChildView和getGroupView方法中膨胀的组/子对象的自定义(xml)视图。 我只想让当前的折叠/展开组animation它的孩子。 任何人都可以指向正确的方向吗? 如果你需要更多的信息或代码,请让我知道! 问候,伊沃

Androidanimation中的java.util.ConcurrentModificationException

Android中的同步代码的概念是我想念的东西。 脚本 屏幕上总是绘制3个项目。 每个图像都存储在一个ArrayList(lstGraphics)中。 为此我使用一个SurfaceView。 一旦用户点击图像,图像获取的市场将被删除,并将添加一个新的。 代码示例: AnimationHideThread … @Override public void run() { Canvas c; while (run) { c = null; try { c = panel.getHolder().lockCanvas(null); synchronized (panel.getHolder()) { panel.updatePhysics(); panel.manageAnimations(); panel.onDraw(c); } } finally { if (c != null) { panel.getHolder().unlockCanvasAndPost(c); } } } } … 所以,你可以看到,我updatePhysics()。 这意味着我计算每个图像移动的方向。 在这里,我也将删除从列表中点击图像。 之后,我检查是否需要在manageAnimations()的列表中添加一个新项目,然后最后一步绘制整个项目。 public class Panel […]

android imageview onClickanimation

我想这是一个奇怪的问题,但我已经尝试在ImageView上设置onClicklistener,它已经工作。 但问题是用户无法感知点击。 我的意思是,如果你已经在其他移动环境(如苹果iphone)的工作,那么我们点击一​​个在其他地方的图像,然后给图像的影响,使用户可以明白,图像已被点击。 我已经尝试使用“setalpha”方法设置alpha,但它不工作。 虽然onFocusListener实现同样可以正常工作。 可以some1build议一个不同的方式来修改点击图像… 我是新来的机器人所以没有学习简单animation的细微差别也…如果有任何简单的animation,我可以使用相同的然后plzz plzzz让我知道… 感谢名单…

AnimationDrawable不能播放

所以我希望我的animation在创build活动后立即开始,但是由于某种原因,无论我尝试什么,都会让它开始。 我可以通过点击事件开始,但是我希望它自己开始。 这是我有什么,我如何得到这个工作? package tween.learn; import android.app.Activity; import android.graphics.drawable.AnimationDrawable; import android.os.Bundle; import android.widget.ImageView; public class Animate extends Activity { public ImageView image; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); ImageView tweenImage = (ImageView) findViewById(R.id.imageView1); tweenImage.setBackgroundResource(R.anim.cubicfacetween); AnimationDrawable frameAnimation = (AnimationDrawable) tweenImage.getBackground(); frameAnimation.start(); } } 谢谢