我的屏幕有XML结构。我希望我的相对布局与id journeyLandingView在点击某个按钮时向上滑动并显示具有id journeyRootView的视图RelativeLayout,它将从底部向上滑动,因为journeyLandingView将Fill_Parent设置为高度和宽度,因此journeyRootView必须低于遍历覆盖整个行程的journeyLandingView屏幕。我怎么能这样做?
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical">
<RelativeLayout android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@+id/journeyLandingView">
</RelativeLayout>
<RelativeLayout android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@+id/journeyRootView"
android:background="@drawable/root_layer">
</RelativeLayout>
</LinearLayout>
答案 0 :(得分:7)
我相信你想要的动画类型可以使用ViewFlipper来实现。
您可以将RelativeLayouts放入ViewFlipper,并以编程方式在ViewFlipper上设置输入和输出动画。
示例代码:
xml(布局):
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical">
<Button
android:layout_height="wrap_content"
android:layout_width="fill_parent"
android:text="click me"
android:id="@+id/btn"
/>
<ViewFlipper
android:layout_height="fill_parent"
android:layout_width="fill_parent"
android:id="@+id/viewFlipper"
>
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@+id/journeyLandingView"
android:background="#FFFFFF"
>
</RelativeLayout>
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@+id/journeyRootView"
android:background="#FFA500"
>
</RelativeLayout>
</ViewFlipper>
</LinearLayout>
java(Activity):
ViewFlipper vflipper;
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
vflipper = (ViewFlipper) findViewById(R.id.viewFlipper);
vflipper.setInAnimation(this, android.R.anim.slide_in_left);
vflipper.setOutAnimation(this, android.R.anim.slide_out_right);
Button btn = (Button) findViewById(R.id.btn);
btn.setOnClickListener(this);
}
public void onClick(View v)
{
vflipper.showNext();
}
您将使用自定义动画而不是“android.R.anim.slide_in_left”和“android.R.anim.slide_out_right”,我在示例代码中使用了以下行:
vflipper.setInAnimation(this, android.R.anim.slide_in_left);
vflipper.setOutAnimation(this, android.R.anim.slide_out_right);
然而,我并不擅长制作自定义动画,所以我将它留给自己。 真的希望这会有所帮助: - )
答案 1 :(得分:2)
我最终使用RelativeLAYOUT而不是LINEARLAYOUT作为父元素,而不是使用以下代码来设置动画。
TranslateAnimation slide = new TranslateAnimation(0, 0, 0, -1*Methods.screenHeight(this));
slide.setDuration(1000);
slide.setFillAfter(true);
journeyLandingView.startAnimation(slide);
slide = new TranslateAnimation(0, 0, Methods.screenHeight(this), 0);
slide.setDuration(1000);
slide.setFillAfter(true);
journeyRootView.startAnimation(slide);
public static int screenHeight(Context ctx) {
DisplayMetrics displaymetrics = new DisplayMetrics();
((Activity) ctx).getWindowManager().getDefaultDisplay().getMetrics(displaymetrics);
return displaymetrics.heightPixels;
}