在我的应用程序中,我将在一个动画后设置alpha.如:
hideMenu = AnimationUtils.loadAnimation( getApplication(), R.anim.menu_layout_hide);
menuLayout.startAnimation(hideMenu);
menuLayout.setVisibility(View.GONE);
Run Code Online (Sandbox Code Playgroud)
但是我想在Alpha设置View之前设置1秒的延迟.因为我无法看到该布局的动画.那怎么可能呢?
谢谢.
我想在从一个Activity转到另一个Activity时设置共享元素转换.
第一个Activity有一个包含项目的RecyclerView.单击某个项目时,该项目应为新活动设置动画.
所以我在最终活动视图上设置了android:transitionName ="item",以及recycleler-view项目视图.
我还在进行下一个活动时使用此代码:
this.startActivity(intent, ActivityOptions.makeSceneTransitionAnimation(this, itemView, "boomrang_item").toBundle());
Run Code Online (Sandbox Code Playgroud)
单击某个项目时,它会正确转换并显示新视图.真的很好.但是当我点击后退按钮时.有时它工作正常,但大多数时候我的活动崩溃与下面的堆栈跟踪:
java.lang.NullPointerException: Attempt to invoke virtual method 'void android.view.ViewGroup.transformMatrixToGlobal(android.graphics.Matrix)' on a null object reference
at android.view.GhostView.calculateMatrix(GhostView.java:95)
at android.app.ActivityTransitionCoordinator$GhostViewListeners.onPreDraw(ActivityTransitionCoordinator.java:845)
at android.view.ViewTreeObserver.dispatchOnPreDraw(ViewTreeObserver.java:847)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1956)
at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1054)
at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:5779)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:767)
at android.view.Choreographer.doCallbacks(Choreographer.java:580)
at android.view.Choreographer.doFrame(Choreographer.java:550)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:753)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5221)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?它看起来像android 5中的一个bug
android android-animation activity-transition shared-element-transition android-recyclerview
我有一个DialogFragment,我在onActivityCreated方法中为进入/退出设置动画,如下所示
@Override
public void onActivityCreated(Bundle arg0) {
super.onActivityCreated(arg0);
getDialog().getWindow()
.getAttributes().windowAnimations = R.style.DialogAnimation;
}
Run Code Online (Sandbox Code Playgroud)
我的DialogAnimation样式文件如下
<style name="DialogAnimation">
<item name="android:windowEnterAnimation">@android:anim/fade_in</item>
<item name="android:windowExitAnimation">@android:anim/fade_out</item>
</style>
Run Code Online (Sandbox Code Playgroud)
这对我有用......
现在我的问题是我希望有两个不同的退出动画,一个用于点击确定按钮,一个用于取消按钮.所以我做的是我尝试在解雇之前更改转换,但它没有工作..任何解决方案如何实现......这就是我的尝试.
@Override
public void onClick(View v) {
getDialog().getWindow()
.getAttributes().windowAnimations = R.style.DialogAnimation2;
this.dismiss();
}
Run Code Online (Sandbox Code Playgroud) 我希望有一个View最初是不可见的,当我按下一个按钮时,它会以淡入淡出的动画显示出来.我正在使用AlphaAnimation褪色效果.问题是,如果我使视图不可见,则无法看到动画.
非常感谢,
的Gratzi
我有一个带有a RelativeLayout和私有类的活动,它扩展了SimpleOnScaleGestureListener.在onScale收听者的方法中,我想放大/缩小整个布局(用户看到的一切),用户传播/捏住他的手指.
我希望布局的更改不是永久性的,即当展开/捏合手势结束时,我希望布局回到最初的位置(任何重置都可以在onScaleEnd方法中完成)SimpleOnScaleGestureListener例如).
我试图通过调用来实现它setScaleX和setScaleY上RelativeLayout,也使用ScaleAnimation.两者都没有导致平滑缩放(或者任何可以称为缩放的东西).甚至可以放大/缩小RelativeLayout?
我留下的唯一想法是从缓存中读取屏幕截图并将其作为ImageView整个布局的顶部并通过此图像放大/缩小setImageMatrix.但是,我不知道如何实现这一点.
May布局还包含片段的容器,该片段在应该可以进行缩放时为空.在onScaleEnd手势中,片段被放入其容器中(已经实现并且正常工作).这是我的布局:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/layout_pinch"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#ffffff" >
<!-- Layout containing the thumbnail ImageViews -->
<LinearLayout
android:id="@+id/thumbnail_group_pui"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:orientation="horizontal" >
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/tn_c1"/>
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/tn_c2"/>
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/tn_c3"/>
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/tn_c4"/>
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/tn_c5"/>
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/tn_c6"/>
<ImageView …Run Code Online (Sandbox Code Playgroud) 新的Google日历应用有我想在我的应用中执行的动画.创建新事件时,您可以选择事件的颜色.执行此操作时,状态栏和工具栏将更改为该颜色,并具有覆盖它们的圆形效果.

我可以更改状态栏和工具栏的颜色,但是当颜色更改时,如何将圆形动画效果(或类似)应用于它们?
我如何设置RecyclerView第一次显示项目的时间以及用户滚动时的动画,就像它对google plus应用程序或google新闻站点应用程序的工作方式一样.
我还读到RecyclerView了用户滚动时不直接支持动画的地方; 如果这是真的,我们还有什么方法可以做到吗?
我有android翻译动画.我有一个随机生成位置的ImageView(next1,next2).我每隔3秒就调用一次虚空.它生成视图的新位置,然后制作动画并将视图移动到目标位置.翻译动画已实现AnimationListener.动画完成后,我将View永久移动到新位置(在OnAnimationEnd中).我的问题是动画位置与设置layoutParams位置不对应.当动画结束时,它会跳转到一个新位置,大约50-100像素.我认为位置应该是相同的,因为我在两种情况下都使用相同的值(next1,next2).请问您能找到找到溶剂的方法吗?
FrameLayout.LayoutParams pozice_motyl = (FrameLayout.LayoutParams) pozadi_motyl.getLayoutParams();
TranslateAnimation anim = new TranslateAnimation(Animation.ABSOLUTE,pozice_motyl.leftMargin, Animation.ABSOLUTE, next1, Animation.ABSOLUTE, pozice_motyl.topMargin, Animation.ABSOLUTE, next2);
anim.setDuration(1000);
anim.setFillAfter(true);
anim.setFillEnabled(true);
anim.setAnimationListener(new Animation.AnimationListener() {
@Override
public void onAnimationStart(Animation animation) {
}
@Override
public void onAnimationEnd(Animation animation) {
FrameLayout.LayoutParams layoutParams = new FrameLayout.LayoutParams(100, 100);
layoutParams.leftMargin = (int)(next1);
layoutParams.topMargin = (int)(next2);
pozadi_motyl.setLayoutParams(layoutParams);
}
@Override
public void onAnimationRepeat(Animation animation) {
}
});
pozadi_motyl.startAnimation(anim);
Run Code Online (Sandbox Code Playgroud)
这是XML布局:
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:ads="http://schemas.android.com/apk/lib/com.google.ads"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@+id/pozadi0"
android:gravity="center_vertical"
android:layout_gravity="center_vertical"
android:background="@drawable/pozadi2"
>
<LinearLayout
android:id="@+id/pozadi_motyl"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
>
<ImageView android:id="@+id/obrazek_motyl"
android:src="@drawable/motyl"
android:layout_width="100dip" …Run Code Online (Sandbox Code Playgroud) 在继续执行程序之前,我想等到Android ImageView中的动画结束*,这样做的正确方法是什么?
研究/猜测:
答:我的问题似乎是Java线程问题,因为Android AnimationDrawable实现了Java.lang.Runnable.也许线程是解决方案.也许答案会包括加入?
B.其他人的方法似乎是使用AnimationListener,这对于我的简单需求来说似乎很困难且不必要地复杂.另外,我不确定如何做到这一点.
C. AnimationDrawable类有一个(boolean)isRunning方法,它可能在while循环中使用(即while(anim.isRunning()){wait(100ms)}).但我有一种直觉,认为这是错误的做法.虽然在并发教程中似乎提到了类似的东西
代码片段
this.q_pic_view.setImageResource(0);
this.q_pic_view.setBackgroundResource(R.drawable.animation_test);
AnimationDrawable correct_animation = (AnimationDrawable) this.q_pic_view.getBackground();
correct_animation.start();
//here I tried to implement option C but it didn't work
while(correct_animation.isRunning()){
try {
Thread.sleep(20);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
Run Code Online (Sandbox Code Playgroud)
动画
<?xml version="1.0" encoding="utf-8"?>
<animation-list android:id="@+id/AnimTest" android:oneshot="true" xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/animtest001" android:duration="33"/>
<item android:drawable="@drawable/animtest002" android:duration="100"/>
<item android:drawable="@drawable/animtest003" android:duration="66"/>
<item android:drawable="@drawable/animtest004" android:duration="66"/>
<item android:drawable="@drawable/animtest005" android:duration="33"/> …Run Code Online (Sandbox Code Playgroud)