我目前有一个工作的Android程序,它以编程方式将视图添加到LinearLayout。我希望这些观点在动画中找到,并且找不到任何好的资源来解决如何做到这一点。Android:LinearLayout addView动画
难道有人指着我正确的方向吗?
我目前有一个工作的Android程序,它以编程方式将视图添加到LinearLayout。我希望这些观点在动画中找到,并且找不到任何好的资源来解决如何做到这一点。Android:LinearLayout addView动画
难道有人指着我正确的方向吗?
你可以使用ViewFlipper并从那里设置动画,你可以看看这个tutorial 。祝你好运。
这是一个非常古老的问题,但仍有趣:你可以使用属性android:animateLayoutChanges="true"
例如:
<LinearLayout
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:animateLayoutChanges="true"
/>
可以与Scenes and Transitions API完成。
框架给了我们三个Transition
类型开箱:Fade
,Slide
和Explode
,但你也可以创建过渡扩展Visibility
类和压倒一切适当的方法的自定义类型。
所以,有任何ViewGroup
,我们可以这样做:
viewGroup.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(final View v) {
Transition t = null;
if (i == 1) {
t = new Fade();
} else if (i == 2) {
t = new Slide(Gravity.BOTTOM);
} else if (i == 3) {
t = TransitionInflater.from(v.getContext())
.inflateTransition(R.transition.my_transition);
}
Button button = new Button(v.getContext());
button.setText("My button " + i++);
TransitionManager.beginDelayedTransition(customLayout, t);
viewGroup.addView(button);
}
});
凡my_transition.xml是以下几点:
<?xml version="1.0" encoding="utf-8"?>
<transitionSet xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="3000"
android:interpolator="@android:interpolator/fast_out_slow_in">
<fade/>
<slide android:slideEdge="bottom"/>
</transitionSet>
我们会得到这样的结果:
请注意,我们必须在对布局进行任何更改之前执行TransitionManager.beginDelayedTransition()
(即在调用addView()
之前)。然后框架将照顾其余的。
也有另一种超负荷TransitionManager.beginDelayedTransition(ViewGroup)
,在这里你不需要指定要应用什么确切的过渡,并且系统将执行AutoTransition
动画,基本上会褪色,改变动画视图的边界。
更新总结从谈话中的注释框架的TransitionManager
可从API 19,并从API 21完全支持
(说全我的意思是如Slide
转变可从API 21)。虽然有support package available,但它不支持所有功能。或者,您也可以移动到TransitionsEverywhere库,该库将所有内容都支持到Android 4.0。
尝试
1.添加以线性布局
linearLayout.addView(customView);
2。添加slide_up.xml
到res/anim
文件夹
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:fillAfter="true">
<translate
android:duration="500"
android:fromYDelta="100%"
android:toYDelta="0%" />
</set>
应用动画如果要动画意见逐一添加视图
Animation animation = AnimationUtils.loadAnimation(context, R.anim.slide_up);
customView.startAnimation(animation);
之后,然后用以下行
new Handler(Looper.getMainLooper()).postDelayed(new Runnable() {
@Override
public void run() {
linearLayout.addView(customView);
Animation animation = AnimationUtils.loadAnimation(context, R.anim.slide_up);
customView.startAnimation(animation);
}
}, 500);
我想当我像这样添加'for(int i = 0; i
2017-04-26 10:12:49
在'for'循环之前放置'TransitionManager.beginDelayedTransition()'。 – azizbekian 2017-04-26 10:15:19
我想添加my_transition.xml我得到** @ android:interpolator/fast_out_slow_in需要API level 21(当前最小值为15)** on android:interpolator =“@ android:interpolator/fast_out_slow_in” – 2017-04-26 10:20:16