- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
在 Android 中,是否可以在 layout_gravity
上应用动画?例如,假设我想将 View
(例如 Button
)的 layout_gravity
从右更改为左
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent" android:layout_height="match_parent">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="New Button"
android:id="@+id/button"
android:layout_gravity="right|top" />
</FrameLayout>
在上面的布局文件中,我想在运行时使用动画将布局引力从 right|top
更改为 left|top
,这可能吗?谢谢
最佳答案
您可以在父 ViewGroup 上使用 LayoutTransition 以使其对 subview 的更改进行动画处理,例如布局更改。在下面的示例中,我将 float 操作按钮从屏幕右下角移动到右上角,同时旋转它(因此“+”图标变为“x”图标)。
在包含布局上将 animateLayoutChanges 设置为 true:
<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/pnlFabContainer"
android:animateLayoutChanges="true"
android:clipChildren="false">
<ExpandableListView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@android:color/white"
android:id="@+id/lstWhatever"
android:divider="@color/DividerDarkGrey"
android:dividerHeight="1dp"
android:choiceMode="singleChoice"
android:groupIndicator="@null"
android:padding="20dp"/>
<com.melnykov.fab.FloatingActionButton
android:id="@+id/fabMultiSelect"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom|end"
android:layout_margin="24dp"
android:src="@drawable/button_plus"
android:scaleType="center"
fab:fab_type="normal"
fab:fab_colorNormal="@color/FloatingActionButton"
fab:fab_colorPressed="@color/FloatingActionButtonPressed"
fab:fab_colorRipple="@color/FloatingActionButtonRipple" />
</FrameLayout>
在您的容器上启用“更改”转换:
FrameLayout pnlFabContainer = (FrameLayout)view.findViewById(R.id.pnlFabContainer);
LayoutTransition transition = pnlFabContainer.getLayoutTransition();
transition.enableTransitionType(LayoutTransition.CHANGING);
animateFabButton(fab);
然后以编程方式更改布局引力 - 我同时也在做旋转动画:
protected void animateFabButton(FloatingActionButton fab) {
if (fab.isSelected()) {
FrameLayout.LayoutParams layoutParams = (FrameLayout.LayoutParams)fab.getLayoutParams();
layoutParams.gravity = Gravity.TOP | Gravity.END;
layoutParams.topMargin = -(fab.getMeasuredHeight() / 2);
fab.setLayoutParams(layoutParams);
Animation rotate = new RotateAnimation(0, 45, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);
rotate.setFillBefore(true);
rotate.setFillAfter(true);
rotate.setFillEnabled(true);
rotate.setDuration(750);
rotate.setRepeatCount(0);
rotate.setInterpolator(new LinearInterpolator());
fab.startAnimation(rotate);
}
else {
FrameLayout.LayoutParams layoutParams = (FrameLayout.LayoutParams)fab.getLayoutParams();
layoutParams.gravity = Gravity.BOTTOM | Gravity.END;
layoutParams.topMargin = layoutParams.bottomMargin;
fab.setLayoutParams(layoutParams);
Animation rotate = new RotateAnimation(45, 0, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);
rotate.setFillBefore(true);
rotate.setFillAfter(true);
rotate.setFillEnabled(true);
rotate.setDuration(750);
rotate.setRepeatCount(0);
rotate.setInterpolator(new LinearInterpolator());
fab.startAnimation(rotate);
}
}
关于android - layout_gravity 上的动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21349989/
以下是我的xml 我想将 button1 设置为居中垂直,将 button2 设置为居中垂直,但对我来说 android:layout_gravity="center_vertical|right"
我有这样的布局:
我有这个线性布局垂直方向,包含三个 View , 我希望第一个 View 位于父线性布局的顶部,第二个位于中心,第三个位于父线性布局的底部,我正在对布局的子级应用 layout_gravity 但此属
在 Android 中,是否可以在 layout_gravity 上应用动画?例如,假设我想将 View(例如 Button)的 layout_gravity 从右更改为左 在上面的布局
为什么我的 TextView 不正确? 更新:好吧,现在我不仅需要将 TextView 设置到右侧。现在非常有趣的是,为什么 layout_gravity 没有按预期工作,即 - 将 View 设置到
这是我的布局:
我一直在尝试在水平 linear layout 中使用 layout_gravity。但这似乎不起作用。我不想使用相对布局或任何其他布局。我想知道为什么它不能与 linear layout 一起使用。
我的问题很简单, 如何以编程方式设置我的按钮 layout_gravity? 我在互联网上找到了这个,但它只是抛出了一个 Nullpointer 异常: Button MyButton = new
我可能是个白痴,但似乎添加了一个 Button水平LinearLayout休息 layout_gravity="top" 这看起来像这样(在布局编辑器中): 请注意
您好 stackoverflow 社区!我在编程和这个网站上都是新手,但让我们进入正题。我写了一个应用程序:
在我的 android 布局中,我有两个 EditText 元素。它们并排出现在屏幕底部。但是当我在第一个 EditText(左边)中输入多行时,第二个(右边)即使它是空的也一直向上移动。我为第二个
我有一个问题,这可能很愚蠢,但我就是想不通为什么这不起作用。 基本上,我的 Activity 中有一个标题。此 header 应居中。 布局-XML styles.xml 中的定义
我想做什么 我试图通过 Java 代码设置我的 ImageButton 的 layout_gravity,我希望 ImageButton 的显示方式如下在下图中的橙色框内: Blue 框架是一个垂直的
我的问题 我似乎无法弄清楚为什么 android:layout_gravity="center_vertical" 在我的情况下不起作用。 请注意,我对解决使其垂直对齐的问题不感兴趣,以至于出于教学原
我想知道 android:layout_gravity 发生了什么。我的代码如下所示: 但是中心在按钮上完全没有做任何事情,eclipse 甚至在他们的下拉菜单中也没有。他们现在有另一种方法吗? 最
我有一个带有一个 TextView 和一个 ImageView 的简单 LinearLayout。我希望 TextView 中的文本向右对齐,但结果显示 Text 向左对齐。我的布局 xml 有什么问
我真的是android新手,我知道 android:layout_gravity 在其父级中设置 View 或 Layout 的重力。而 android:gravity 设置View 中使用的内容的重
1、gravity与layout_gravity的区别 gravity 属性是对该view 内容的限定.比如一个button 上面的text. 你可以设置该text 在view的靠左,靠右等位置
这个问题在这里已经有了答案: What is the difference between gravity and layout_gravity in Android? (22 个答案) 关闭 9
布局 XML 是: 最终的布局是: 为什么 progressBar 没有在垂直和水平方向上都居中。它是功能还是错误:) 最佳答案 您可以给出包含进度条的线性
我是一名优秀的程序员,十分优秀!