Android-具有相同底部栏的两个活动

Android-具有相同底部栏的两个活动,android,android-activity,Android,Android Activity,我有两个相同底部栏的活动。 问题是当我从活动A调用startActivity到活动B时,它有一些闪烁,看起来不太平滑。 例如,我想要的是一个包含两个片段的容器的活动,该活动具有底部栏,因此不会更改底部栏 我知道带片段的活动可以帮助我做到这一点,但太复杂了,无法在我的项目中更改它,所以这是我最后的选择 我发现还有一个选项可以通过SharedElements转换实现,但只有api 21(棒棒糖)支持 这是我的活动,当我将其更改为活动B时,我需要底部的线性布局保持粘性。如果您想要相同的实例,则必须使

我有两个相同底部栏的活动。 问题是当我从活动A调用startActivity到活动B时,它有一些闪烁,看起来不太平滑。 例如,我想要的是一个包含两个片段的容器的活动,该活动具有底部栏,因此不会更改底部栏

我知道带片段的活动可以帮助我做到这一点,但太复杂了,无法在我的项目中更改它,所以这是我最后的选择

我发现还有一个选项可以通过SharedElements转换实现,但只有api 21(棒棒糖)支持


这是我的活动,当我将其更改为活动B时,我需要底部的线性布局保持粘性。

如果您想要相同的实例,则必须使用片段。 如果没有,您可以将该线性布局放在两个布局文件中。
您想要哪一个?

您可以设置活动动画:

startActivity();
overridePendingTransition(R.anim.hold, R.anim.fade_in);

请参考此答案:

您可以删除活动之间的defulat Transition。 在您的项目/res/values/styles.xml下尝试以下操作:

<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<item name="android:windowAnimationStyle">@null</item>
</style>

@空的

您需要创建布局,并在布局文件夹中包含ex.bottombar.xml,然后创建布局

 <include layout="@layout/bottombar"/>

如果你不想改变,你需要使用片段

为了管理片段,我建议使用


使用此库管理片段非常简单,删除动画并不能解决您的问题

我制作了一个包含两个片段的活动。 在活动类中,我为commonBottomSheet编写了以下代码:-

BottomSheetBehavior mBottomSheetBehavior = BottomSheetBehavior.from(findViewById(R.id.bottom_pannel_layout));
mBottomSheetBehavior.setState(BottomSheetBehavior.STATE_COLLAPSED);
mBottomSheetBehavior.setBottomSheetCallback(mBottomSheetCallback);
在协调员布局中的活动xml文件中,我包括以下布局:-

<include layout="@layout/bottom_sheet_pannel"/>
 <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/bottom_pannel_layout"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical"
    app:behavior_peekHeight="45dp"
    app:layout_behavior="android.support.design.widget.BottomSheetBehavior">

    <ImageView
        android:id="@+id/grabber_view"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:src="@drawable/ic_vector_slider_grabber"
        android:tint="@color/colorTint" />

    <fragment
        android:id="@+id/rf_common_details_fragment"
        android:layout_marginTop="@dimen/margin_10"
        android:name="com.fragment.CommonBottomSheetFragment"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />
</LinearLayout>
 private BottomSheetBehavior.BottomSheetCallback mBottomSheetCallback = new BottomSheetBehavior.BottomSheetCallback() {
    @Override
    public void onStateChanged(View bottomSheet, int newState) {
        // do what you want on state change
    }

    @Override
    public void onSlide(View bottomSheet, float slideOffset) {

    }
};