Android One活动转换不同视图

时间:2016-01-16 07:18:57

标签: android android-activity layout transition

我想知道是否有人可以建议最好的方法来执行以下操作:我创建了一个应用程序,我问用户一个问题并且用户要么回答问题要么继续问到下一个问题使用动画师代替动画淡入和淡出动画的问题。截至目前,我有一个活动,在活动中,我将加载我在XML中创建的布局,然后删除视图并加载新视图。

我不确定这是否是在一个Activity中呈现多个视图并防止需要使用多个活动的最佳方式。我之所以这样做是因为我有几个对象,我根据问题的类别(无论是数学,科学,社会研究等)存储数据。

如果它有助于可视化,这是一张图片: enter image description here


如果有更好的方法,请告诉我。我遇到的唯一问题是活动A java类在代码中不断增长,因为尽管在其他java文件中定义了对象的类,但我必须处理其中的所有内容。谢谢。

1 个答案:

答案 0 :(得分:0)

我认为你可以像这样构建布局 RelativeLayout(see the structure)首先在.xml中设置layout1 android:visibility =“visible”和layout2 android:visibility =“invisible”

    layout1 = findViewById(R.id.layout1);
    layout1.setVisibility(View.VISIBLE);
    layout2 = findViewById(R.id.layout2);
    layout2.setVisibility(View.GONE);

    Button buttonNext = (Button)findViewById(R.id.buttonNext);
    buttonNext.setOnClickListener(new Button.OnClickListener(){
        @Override
        public void onClick(View v) {
            layout1.setVisibility(View.GONE);
            layout2.setVisibility(View.VISIBLE);
                    viewTransAnimation();
        }

    });

并在viewTransAnimation()中设置动画,例如:

private void viewTransAnimation() {
    layout2.setScaleX(0.1f);
    layout2.setPivotX(layout2.getX() + layout2.getLeft() );

    layout2.animate()
            .scaleX(1)
            .setDuration(500)
            .setInterpolator(new AccelerateInterpolator())
            .start();
}

然后单击后将更改为layout2。 (使用一些标志使动画仅适用于您的要求。)

你也可以用2个RelativeLayout替换2个视图,并以相同的方式进行。