我在 google 上看到了这个视频,它演示了通过使用onClick
添加或删除子视图来创建子视图的动画过渡。作为学习过程的一部分:我将代码分解,并进行了一些更改(我不是复制和粘贴程序员)。
我的问题是:如何在创建子视图时添加TextView
,和其他各种元素?Button
(如果您有兴趣,请从谷歌下载项目:完整项目)
以下是我的活动:
/**
* Custom view painted with a random background color and two different sizes which are
* toggled between due to user interaction.
*/
public class ColoredView extends View {
private boolean mExpanded = false;
private LinearLayout.LayoutParams mCompressedParams = new LinearLayout.LayoutParams(
ViewGroup.LayoutParams.MATCH_PARENT, 50);
private LinearLayout.LayoutParams mExpandedParams = new LinearLayout.LayoutParams(
ViewGroup.LayoutParams.MATCH_PARENT, 200);
private ColoredView(Context context) {
super(context);
int red = (int)(Math.random() * 128 + 127);
int green = (int)(Math.random() * 128 + 127);
int blue = (int)(Math.random() * 128 + 127);
int color = 0xff << 24 | (red << 16) |
(green << 8) | blue;
setBackgroundColor(color);
setLayoutParams(mCompressedParams);
setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// Size changes will cause a LayoutTransition animation if the CHANGING transition is enabled
setLayoutParams(mExpanded ? mCompressedParams : mExpandedParams);
mExpanded = !mExpanded;
requestLayout();
}
});
}
}
我在onCreate
显示动画的方法中也有这个
LayoutTransition transition = eventContainer.getLayoutTransition();
transition.enableTransitionType(LayoutTransition.CHANGING);
这是我的 XML,LinearLayout
其中创建了所有子视图:
<LinearLayout
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:animateLayoutChanges="true"
android:id="@+id/eventContainer">
</LinearLayout>
通过向线性布局添加一个按钮或一个编辑文本,它会将其视为一个全新的视图,每个视图只允许一个对象。有没有办法可以将一堆对象猛烈撞击到那个 ONE 布局中?
我对获取context
视图和布局的概念也有些困惑……我可能在这里的某个地方误用了它。