我有一个ImageView,我做了一个简单的比例动画.非常标准的代码.
我的scale_up.xml:
<set xmlns:android="http://schemas.android.com/apk/res/android">
<scale android:fromXScale="1"
android:fromYScale="1"
android:toXScale="1.2"
android:toYScale="1.2"
android:duration="175"/>
</set>
Run Code Online (Sandbox Code Playgroud)
我的动画代码:
Animation a = AnimationUtils.loadAnimation(this, R.anim.scale_up);
((ImageView) findViewById(R.id.circle_image)).startAnimation(a);
Run Code Online (Sandbox Code Playgroud)
问题:
当图像缩放时,它不会从中心缩放,而是从左上角缩放.换句话说,图像的缩放版本与中心不具有相同的点,但它具有相同的左上角点.这是一个解释我的意思的链接.第一个图像是动画如何缩放,第二个图像是我希望它如何缩放.它应该保持中心点相同.我已尝试在图像上设置重力,在容器上,左对齐或右对齐,它始终按比例缩放.我正在使用RelativeLayout作为主屏幕,ImageView位于另一个RelativeLayout,但我尝试了其他布局,没有改变.
我一直在浏览这里的许多谷歌搜索结果/问题,以确定如何通过垂直动画显示/隐藏视图,但我似乎找不到一个完全正确或不太模糊的视图.
我有一个布局(撤消栏),它位于另一个布局下方和多个其他小部件之上; 根据具体情况,此撤销栏应垂直滑动打开并滑动关闭.
目前,我现在所做的只是将视图设置为可见或消失.
android android-animation android-layout android-relativelayout
我正在使用支持包v4的Google API 8(Android 2.2).
它不会给出任何错误或动画.
交易:
FragmentTransaction transaction = manager.beginTransaction();
transaction.replace(R.id.content, myFragment);
transaction.setCustomAnimations(R.anim.slide_in_left, R.anim.slide_out_right);
transaction.commit();
Run Code Online (Sandbox Code Playgroud)
动画:
slide_in_left.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" >
<translate
android:duration="700"
android:fromXDelta="-100%"
android:toXDelta="0%" >
</translate>
</set>
Run Code Online (Sandbox Code Playgroud)
slide_out_right.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
android:duration="700"
android:fromXDelta="0%"
android:toXDelta="100%" >
</translate>
</set>
Run Code Online (Sandbox Code Playgroud)
有谁知道这里发生了什么?
我正在试图弄清楚工具栏的展开/折叠动画是如何完成的.如果您查看Telegram应用程序设置,您将看到列表视图和工具栏.向下滚动时,工具栏会折叠,向上滚动时会展开.还有配置文件pic和FAB的动画.有人有任何线索吗?你认为他们建立了所有的动画吗?也许我错过了新API或支持库中的一些东西.
我注意到Google日历应用程序中的相同行为,当您打开Spinner时(我不认为它是一个微调器,但它看起来像):工具栏展开,当您向上滚动时,它会崩溃.
只是为了澄清:我不需要QuickReturn方法.我知道可能Telegram应用程序正在使用类似的东西.我需要的确切方法是Google日历应用效果.我试过了
android:animateLayoutChanges="true"
Run Code Online (Sandbox Code Playgroud)
并且expand方法运行良好.但显然,如果我向上滚动ListView,工具栏不会崩溃.
我也想过添加一个,GestureListener但我想知道是否有任何API或更简单的方法来实现这一点.
如果没有,我想我会跟着GestureListener.希望能有一个平滑的动画效果.
谢谢!
android android-animation android-toolbar android-6.0-marshmallow android-7.0-nougat
我创建了一个anim.xml文件,如下面的动摇图像视图像IOS图标震动在android中.但它并没有给我同样的结果.有什么好主意吗?
<?xml version="1.0" encoding="utf-8"?>
<rotate xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="300"
android:fromDegrees="-2"
android:pivotX="50%"
android:pivotY="50%"
android:repeatCount="infinite"
android:toDegrees="2" />
Run Code Online (Sandbox Code Playgroud) 我试图使用FragmentTransaction.setCustomAnimations实现以下效果.
在动画设置中获取幻灯片没问题.我的问题是,我无法弄清楚如何使Fragment A停留在原来的位置,并且在动画幻灯片运行时将其置于片段B之下.无论我做什么,似乎片段A都在顶部.
我怎样才能做到这一点?
这是FragmentTransaction代码:
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
ft.setCustomAnimations(R.anim.slide_in_right, R.anim.nothing, R.anim.nothing,
R.anim.slide_out_right);
ft.replace(R.id.fragment_content, fragment, name);
ft.addToBackStack(name);
ft.commit();
Run Code Online (Sandbox Code Playgroud)
正如你所看到的,我已经为"out"动画定义了一个动画R.anim.nothing,因为我实际上不希望Fragment A做任何事情,只是在事务中保持原样.
以下是动画资源:
slide_in_right.xml
<translate xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="@android:integer/config_mediumAnimTime"
android:fromXDelta="100%p"
android:toXDelta="0"
android:zAdjustment="top" />
Run Code Online (Sandbox Code Playgroud)
nothing.xml
<alpha xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="@android:integer/config_mediumAnimTime"
android:fromAlpha="1.0"
android:toAlpha="1.0"
android:zAdjustment="bottom" />
Run Code Online (Sandbox Code Playgroud) 根据谷歌在设计部分的http://developer.android.com/中所说的,开发人员应该考虑三个目标:
我们(开发人员)知道哪些BTW.
通过查看Play商店中的许多成功应用程序,您可以看到它们是按照Google设计指南设计的,并且几乎使用谷歌在他们自己的应用程序中使用的相同 组件和主题以及样式.
许多人确实喜欢这些设计以及主题和组件方面的这些Android标准,但当你看到Playstore中的一些应用程序或某些硬件制造商的应用程序(如三星)已经构建了他们的特殊应用程序(如galaxy note 10.1 note take app)或asus天气应用程序或在Playstore中的Timely应用程序,在功能和课程设计方面很棒,你可以看到他们使用不同类型的设计和组件.
典型的Android应用程序使用操作栏,许多应用程序将包含导航抽屉.
像这些:
动作栏: 
导航抽屉:

和Android上的其他标准组件.
但是,一些开发人员如何使应用程序如此美观和功能完美(几乎!)像Timely应用程序,而不是使用谷歌定义的许多Android典型组件.
这是用户可以看到他/她可以设置一个或只是观看时钟的警报的屏幕:

现在我想到的问题是:
还有许多其他类似的应用程序(没有100%那么相似)都有自己独特的设计.
据我所知,没有太多的网站提供Android的自定义组件,如http://androidviews.net/所以我们似乎被迫制作我们自己的组件,这是耗时的,在这个时候(2013年)isn不完美,而对于ios,其他公司生产的定制组件很多.
我还查看了Timely应用程序网站,在他们的FAQ部分中有一个地方,他们说他们会透露他们做了主题,着色和组件的内容和方式,但因为他们的公告没有时间表,我不知道我喜欢呆在黑暗的地方,我来这里问你专家.
这是报价从他们的网站:
我是开发人员,无法弄清楚你是如何做这些动画和色彩效果的.
我们计划将来有一个工程博客.敬请关注!
如果你们知道如何制作这样的应用程序,或者你知道他们使用的动画,组件,技巧和黑客的一部分那么你就是我的一天.
android android-animation android-layout android-theme android-view
我正在尝试使用自定义动画来处理我的片段.
我已经按照在线教程,但我得到了以下错误:
java.lang.RuntimeException:未知的动画师名称:translate
动画的XML如下:
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
android:fromXDelta="100%"
android:toXDelta="0"
android:duration="300" />
</set>
Run Code Online (Sandbox Code Playgroud)
Java文件如下所示:
public void goCategory(View v) {
FragmentTransaction ft = fm.beginTransaction();
ft.setCustomAnimations(R.animator.anim_in_left, R.animator.anim_out_left);
ft.show(fragment);
ft.commit();
}
Run Code Online (Sandbox Code Playgroud)
我无法理解其他线程中的解决方案.如果有人能为我愚蠢,我真的很感激.
onAnimationEnd虽然animation.hasEnded设置为true,但是当事件被触发时,似乎没有真正完成Android动画.
我希望我的视图可以改变它的背景可绘制的背景ScaleAnimation,但你可以清楚地看到它在完成之前已经改变了几毫秒.问题是,它会闪烁,因为新的背景会出现(=)缩放很短的时间,直到动画完成.
有没有办法获得动画的真实结束,或者只是阻止新背景在这么短的时间内缩放?
谢谢!
//编辑:我正在使用一个AnimationListener来接听以下电话:
@Override
public void onAnimationEnd(Animation animation)
{
View view = (MyView) ((ExtendedScaleAnimation) animation).getView();
view.clearAnimation();
view.requestLayout();
view.refreshBackground(); // <-- this is where the background gets changed
}
Run Code Online (Sandbox Code Playgroud) 我正在尝试在我的应用程序中创建显示效果,但没有成功.我想要的是当我打开一个片段时显示一个cardview.到目前为止我尝试的是:
private void toggleInformationView(View view) {
infoContainer = view.findViewById(R.id.contact_card);
int cx = (view.getLeft() + view.getRight()) / 2;
int cy = (view.getTop() + view.getBottom()) / 2;
float radius = Math.max(infoContainer.getWidth(), infoContainer.getHeight()) * 2.0f;
if (infoContainer.getVisibility() == View.INVISIBLE) {
infoContainer.setVisibility(View.VISIBLE);
ViewAnimationUtils.createCircularReveal(infoContainer, cx, cy, 0, radius).start();
} else {
Animator reveal = ViewAnimationUtils.createCircularReveal(
infoContainer, cx, cy, radius, 0);
reveal.addListener(new AnimatorListenerAdapter() {
@Override
public void onAnimationEnd(Animator animation) {
infoContainer.setVisibility(View.INVISIBLE);
}
});
reveal.start();
}
}
Run Code Online (Sandbox Code Playgroud)
并在onCreateView我开始的方法:
toggleInformationView(view);
Run Code Online (Sandbox Code Playgroud)
这是cardview:
<android.support.v7.widget.CardView
xmlns:card_view="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:id="@+id/contact_card"
android:visibility="invisible" …Run Code Online (Sandbox Code Playgroud)