标签: android-animation

使用向上/向下滑动动画显示和隐藏视图

我有一个LinearLayout我希望显示或隐藏的内容Animation,只要我改变其可见性,就会向上或向下推动布局.

我在那里看到了一些样品,但它们都不适合我的需要.

我为动画创建了两个xml文件,但是当我更改a的可见性时,我不知道如何启动它们LinearLayout.

animation android android-animation

287
推荐指数
9
解决办法
33万
查看次数

Android在设置时添加简单的动画(view.Gone)

我设计了一个简单的布局.我已经完成了没有动画的设计,但现在我想在textview点击事件时添加动画,我不知道如何使用它.我的xml设计看起来好不好?任何建议,将不胜感激.

我的XML

<?xml version="1.0" encoding="UTF-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:longClickable="false"
    android:orientation="vertical"
    android:weightSum="16" >

<LinearLayout 
    android:layout_width="fill_parent"
    android:layout_height="0dp"
    android:orientation="vertical"
    android:background="#00DDA0"
    android:layout_weight="3" >
</LinearLayout>
 <TextView
        android:id="@+id/Information1"
        android:layout_width="match_parent"
        android:layout_height="1dp" 
        android:text="Child Information" 
        android:background="#0390BE"
        android:layout_weight="0.75"
        android:textColor="#FFFFFF"
        android:layout_gravity="center|fill_horizontal"/>

 <LinearLayout
     android:id="@+id/layout1"
     android:layout_width="fill_parent"
     android:layout_height="0dp"
     android:layout_weight="8.5"
     android:background="#BBBBBB"
     android:orientation="vertical" >

     <TextView
         android:id="@+id/textView1"
         android:layout_width="match_parent"
         android:layout_height="match_parent"        
         android:text="TextView" />
 </LinearLayout>

  <TextView
        android:id="@+id/Information2"
        android:layout_width="match_parent"
        android:layout_height="0dp" 
        android:text="Parent Information" 
        android:background="#0390BE"
        android:layout_weight="0.75"
        android:textColor="#FFFFFF"
        android:layout_gravity="center|fill_horizontal"/>
  <LinearLayout 
          android:id="@+id/layout2"
    android:layout_width="fill_parent"
    android:layout_height="0dp"
    android:orientation="vertical"
    android:background="#BBBBBB"
    android:layout_weight="8.5" >
     <TextView
         android:id="@+id/textView2"
         android:layout_width="match_parent"
         android:layout_height="match_parent"        
         android:text="TextView" />
      </LinearLayout>
   <TextView
        android:id="@+id/Information3"
        android:layout_width="match_parent"
        android:layout_height="0dp" 
        android:text="Siblings" 
        android:background="#0390BE"
        android:layout_weight="0.75"
        android:textColor="#FFFFFF"
        android:layout_gravity="center|fill_horizontal"/> …
Run Code Online (Sandbox Code Playgroud)

java android android-animation

204
推荐指数
8
解决办法
19万
查看次数

android屏幕坐标如何工作?

我正在使用Android Animation,我发现Android坐标系非常混乱,所以我在这里问一下这个问题,关于坐标在Android中是如何工作的.我正在关注此图像以将一个视图移动到另一个视图,但它似乎无法正常工作:

图片

android coordinate-systems android-animation

149
推荐指数
3
解决办法
10万
查看次数

Gmail三片段动画场景的完整工作示例?

TL; DR:我正在寻找一个完整的工作样本,我将其称为"Gmail三片段动画"场景.具体来说,我们想从两个片段开始,如下所示:

两个片段

在一些UI事件(例如,点击片段B中的某些内容)时,我们希望:

  • 片段A从屏幕向左滑动
  • 片段B滑动到屏幕的左边缘并收缩以占据片段A腾出的点
  • 片段C从屏幕右侧滑入并占据片段B腾出的位置

并且,在按下BACK按钮时,我们希望反转这组操作.

现在,我已经看到了很多部分实现; 我将在下面回顾其中的四个.除了不完整之外,他们都有自己的问题.


@Reto迈尔促成这种普遍的回答相同的基本问题,表明你会使用setCustomAnimations()一个FragmentTransaction.对于双片段场景(例如,您最初只看到片段A,并希望使用动画效果将其替换为新的片段B),我完全同意.然而:

  • 由于您只能指定一个"in"和一个"out"动画,我无法看到如何处理三片段场景所需的所有不同动画
  • <objectAnimator>他的代码示例使用像素的硬连线的位置,这似乎是不切实际给出不同的屏幕尺寸,但setCustomAnimations()需要动画资源,排除在Java中定义这些事情的可能性
  • 我很茫然以对比例的对象动画师如何配合之类的东西android:layout_weightLinearLayout为按百分比分配空间
  • 我很茫然,以C片段是如何在开始处理(GONEandroid:layout_weight0?预动画为0?别的一个规模?)

@Roman Nurik指出,您可以动画任何属性,包括您自己定义的属性.这可以帮助解决硬连线位置的问题,代价是发明自己的自定义布局管理器子类.这有些帮助,但我仍然对Reto的其余解决方案感到困惑.


这个pastebin条目的作者显示了一些诱人的伪代码,基本上说所有三个片段最初都会驻留在容器中,片段C通过hide()事务操作在开始时隐藏.当UI事件发生时,我们接着是show()C和hide()A. 但是,我没有看到它如何处理B改变大小的事实.它还依赖于你显然可以在同一个容器中添加多个片段的事实,我不确定这是否是长期可靠的行为(更不用说它应该打破findFragmentById(),尽管我可以忍受它).


此博客文章的作者表示Gmail根本不使用setCustomAnimations(),而是直接使用对象动画师("您只需更改根视图的左边距+更改右视图的宽度").然而,这仍然是一个双片段解决方案AFAICT,并且再次显示的实现硬连线尺寸以像素为单位.


我将继续关注此问题,所以有一天我可能会自己回答这个问题,但我真的希望有人为这个动画场景制定了三片段解决方案,并且可以发布代码(或链接).Android中的动画让我想要脱掉头发,而那些见过我的人知道这是一个毫无结果的努力.

android android-animation android-fragments

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

如何在BackStack上反转片段动画?

我认为当使用以下代码使用片段时按下后退按钮时,系统会反转backstack上的动画:

FragmentManager fm = getFragmentManager();
FragmentTransaction ft = fm.beginTransaction();
ft.setCustomAnimations(R.anim.slide_in, R.anim.hyperspace_out);
ft.replace(R.id.viewContainer, new class(), "layout").addToBackStack(null).commit();
Run Code Online (Sandbox Code Playgroud)

android android-animation android-fragments back-stack

112
推荐指数
3
解决办法
4万
查看次数

ActionItem的动画图标

我一直在寻找适合我问题的解决方案,但我似乎找不到一个.我有一个ActionBar(ActionBarSherlock),其菜单从XML文件中膨胀,该菜单包含一个项目,并且该项目显示为ActionItem.

菜单:

<menu xmlns:android="http://schemas.android.com/apk/res/android" >    
    <item
        android:id="@+id/menu_refresh"       
        android:icon="@drawable/ic_menu_refresh"
        android:showAsAction="ifRoom"
        android:title="Refresh"/>    
</menu>
Run Code Online (Sandbox Code Playgroud)

活动:

[...]
  @Override
  public boolean onCreateOptionsMenu(Menu menu) {
    getSupportMenuInflater().inflate(R.menu.mymenu, menu);
    return true;
  }
[...]
Run Code Online (Sandbox Code Playgroud)

ActionItem显示时带有图标而没有文本,但是当用户点击ActionItem时,我希望图标开始动画,更具体地说,是在适当的位置旋转.有问题的图标是刷新图标.

我意识到ActionBar支持使用自定义视图(添加动作视图)但是这个自定义视图被扩展为覆盖ActionBar的整个区域并且实际上阻止了除应用程序图标之外的所有内容,在我的情况下这不是我想要的.

所以我的下一次尝试是尝试使用AnimationDrawable并逐帧定义我的动画,将drawable设置为菜单项的图标,然后在onOptionsItemSelected(MenuItem item)获取图标并开始使用动画((AnimationDrawable)item.getIcon()).start().但这并不成功.有谁知道有任何方法来实现这种效果?

android android-animation actionbarsherlock

91
推荐指数
3
解决办法
6万
查看次数

通过动画在活动中交换片段

我想通过动画在一个活动中交换两个片段.假设PageA用于屏幕A和左侧屏幕,PageB用于片段B,即屏幕右侧.现在我希望当我点击pageA上的一个按钮时,PageA将移动到屏幕的右侧,带有一些过渡动画.

我尝试了以下代码来替换位置

FragmentManager fragmentManager = getSupportFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
fragmentTransaction.replace(R.id.container, new FragB());
fragmentTransaction.commit();
Run Code Online (Sandbox Code Playgroud)

寻找一些线索.

提前致谢.

android android-animation

86
推荐指数
1
解决办法
9万
查看次数

显示DialogFragment,动画从一个点开始增长

我正在显示DialogFragment当用户点击一行中的一行时ListView.我想为对话框的显示设置动画,使其从行的中心开始增长.从启动器打开文件夹时可以看到类似的效果.

,我已经有一个想法是组合TranslateAnimationScaleAnimation.还有另外一种方法吗?

android android-animation android-fragments

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

将Ripple效果添加到RecyclerView项目

我正在尝试将Ripple Effect添加到RecyclerView的项目中.我在网上看了一下,但找不到我需要的东西.我认为它必须是自定义效果.我已经尝试了android:background属性到RecyclerView本身并将其设置为"?android:selectableItemBackground"但它没有工作:

    <android.support.v7.widget.RecyclerView
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:focusable="true"
    android:clickable="true"
    android:background="?android:selectableItemBackground"
    android:id="@+id/recyclerView"
    android:layout_below="@+id/tool_bar"/>
Run Code Online (Sandbox Code Playgroud)

这是我试图将效果添加到的RecyclerView:

在此输入图像描述

android android-animation android-recyclerview

83
推荐指数
5
解决办法
6万
查看次数

结束动画事件android

我在视图中有一个淡出动画(在片段内),每次动画发生时,视图结束后再次重绘.我发现了一项工作view.SetVisibility(View.GONE).但它并不等待动画完成.我想在动画完成后才执行此setVisibility代码.最好的方法是什么?

android android-animation android-fragments

82
推荐指数
5
解决办法
6万
查看次数