标签: android-animation

相对于中心点的Android图像缩放动画

我有一个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 scale android-animation android-layout

80
推荐指数
4
解决办法
8万
查看次数

Android:使用动画显示/隐藏视图

我一直在浏览这里的许多谷歌搜索结果/问题,以确定如何通过垂直动画显示/隐藏视图,但我似乎找不到一个完全正确或不太模糊的视图.

我有一个布局(撤消栏),它位于另一个布局下方和多个其他小部件之上; 根据具体情况,此撤销栏应垂直滑动打开并滑动关闭.

目前,我现在所做的只是将视图设置为可见或消失.

android android-animation android-layout android-relativelayout

79
推荐指数
6
解决办法
10万
查看次数

Android - 片段事务上的自定义动画未运行

我正在使用支持包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)

有谁知道这里发生了什么?

android android-animation android-fragments

78
推荐指数
3
解决办法
5万
查看次数

展开/折叠棒棒糖工具栏动画(电报应用程序)

我正在试图弄清楚工具栏的展开/折叠动画是如何完成的.如果您查看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

72
推荐指数
3
解决办法
8万
查看次数

在android中摇动/摆动视图动画

我创建了一个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)

android android-animation

71
推荐指数
9
解决办法
6万
查看次数

FragmentTransaction动画在顶部滑动

我试图使用FragmentTransaction.setCustomAnimations实现以下效果.

  1. 片段A正在显示
  2. 用碎片B替换碎片A.碎片A在更换过程中应保持可见.片段B应从右侧滑入.片段B应该在片段A的顶部滑动.

在动画设置中获取幻灯片没问题.我的问题是,我无法弄清楚如何使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)

android android-animation android-fragments

68
推荐指数
4
解决办法
5万
查看次数

如何制作像Timely一样美观时尚的应用程序

谷歌在设计方面的引用,以及一些应用示例:

根据谷歌在设计部分的http://developer.android.com/中所说的,开发人员应该考虑三个目标:

  • 让我着迷
  • 简化我的生活
  • 让我惊叹

我们(开发人员)知道哪些BTW.

通过查看Play商店中的许多成功应用程序,您可以看到它们是按照Google设计指南设计的,并且几乎使用谷歌在他们自己的应用程序中使用的相同 组件主题以及样式.

许多人确实喜欢这些设计以及主题和组件方面的这些Android标准,但当你看到Playstore中的一些应用程序或某些硬件制造商的应用程序(如三星)已经构建了他们的特殊应用程序(如galaxy note 10.1 note take app)或asus天气应用程序或在Playstore中Timely应用程序,在功能和课程设计方面很棒,你可以看到他们使用不同类型的设计和组件.


现在让我们深入了解Google 所说的内容:

典型的Android应用程序使用操作栏,许多应用程序将包含导航抽屉.

像这些:

动作栏: 在此输入图像描述

导航抽屉:

在此输入图像描述

和Android上的其他标准组件.

但是,一些开发人员如何使应用程序如此美观和功能完美(几乎!)像Timely应用程序,而不是使用谷歌定义的许多Android典型组件.


让我们来看看Timely app:

这是用户可以看到他/她可以设置一个或只是观看时钟的警报的屏幕:

在此输入图像描述 在此输入图像描述

现在我想到的问题是:

  • 我怎么能像这样主题我的应用程序?
  • 如何制作这样的背景动画并在我的应用中使用它?
  • 他们的开发人员是否一起使用unity和eclipse使其作为Android应用程序运行?
  • 如果他们确实使用了统一,那么应用程序如何运行得非常流畅?
  • 在它的操作栏中,它们是如何着色的并为对象定义了不透明度?
  • 什么样的动画类可以做他们在应用程序中做的事情?(比如时钟变换动画)
  • 如果他们使用统一,那么他们的应用程序的大小为何是10MB?

还有许多其他类似的应用程序(没有100%那么相似)都有自己独特的设计.

据我所知,没有太多的网站提供Android的自定义组件,如http://androidviews.net/所以我们似乎被迫制作我们自己的组件,这是耗时的,在这个时候(2013年)isn不完美,而对于ios,其他公司生产的定制组件很多.

我还查看了Timely应用程序网站,在他们的FAQ部分中有一个地方,他们说他们会透露他们做了主题,着色和组件的内容和方式,但因为他们的公告没有时间表,我不知道我喜欢呆在黑暗的地方,我来这里问你专家.

这是报价他们的网站:

我是开发人员,无法弄清楚你是如何做这些动画和色彩效果的.

我们计划将来有一个工程博客.敬请关注!

如果你们知道如何制作这样的应用程序,或者你知道他们使用的动画,组件,技巧和黑客的一部分那么你就是我的一天.

android android-animation android-layout android-theme android-view

68
推荐指数
1
解决办法
3万
查看次数

Android FragmentTransaction自定义动画(未知动画名称:翻译)

我正在尝试使用自定义动画来处理我的片段.

我已经按照在线教程,但我得到了以下错误:

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)

我无法理解其他线程中的解决方案.如果有人能为我愚蠢,我真的很感激.

android android-animation android-fragments

67
推荐指数
2
解决办法
5万
查看次数

安卓动画未在onAnimationEnd中完成

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)

animation android background drawable android-animation

65
推荐指数
4
解决办法
6万
查看次数

无法在独立视图上启动此动画师!揭示效果

我正在尝试在我的应用程序中创建显示效果,但没有成功.我想要的是当我打开一个片段时显示一个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)

java android android-animation

63
推荐指数
5
解决办法
2万
查看次数