2017-08-01 13 views
0

私は同じボトムバーで2つのアクティビティを持っています。 問題は、アクティビティAからアクティビティBへのstartActivityを呼び出すときに何らかの点滅があり、滑らかに見えないことです。 たとえば、2つのフラグメントを持つコンテナのアクティビティのように、アクティビティにボトムバーがあるので、ボトムバーは変わりません。Android - 同じボトムバーの2つのアクティビティ

私は断片化に関するアクティビティがそれを助けてくれることは知っていますが、プロジェクトでそれを変更するには複雑すぎるので、最後の選択肢です。

SharedElementsの移行でもう1つのオプションが見つかりましたが、api 21(Lollipop)からのみサポートされています。

enter image description here

これが私の活動であると私は活動B.

答えて

2

あなたは活動のアニメーションを設定することができます。

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

してください、この答えを参照してください:stackoverflow

0

に変更したとき、私はあなたが同じインスタンスをしたい場合は、フラグメントを使用する必要がありますスティッキー下滞在でのLinearLayoutを必要としています。 もしそうでなければ、そのLinearLayoutを両方のレイアウトファイルに置くことができます。 どちらをお望みですか?

1

あなたがのactivitesの間defulatのトランジションを削除することができます。 yourProject/RES /値/のstyles.xmlの下にこれを試してみてください。

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

あなたはレイアウトを作成し、必要な元が含まれます。 bottombar.xmlをレイアウトフォルダに配置し、レイアウトを作成します。

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

変更が遅れて見せたくない場合は、フラグメントを使用する必要があります。

フラグメントを管理するために、私はこのライブラリを使用して、FragNav

をお勧めしますが、そのは非常に簡単に断片化、管理、アニメーションを削除し、私は二つの断片で活動を行っているあなたの問題

0

の解決策ではありません。私はレイアウトの下に含まれているコーディネーターのレイアウトで

BottomSheetBehavior mBottomSheetBehavior = BottomSheetBehavior.from(findViewById(R.id.bottom_pannel_layout)); 
mBottomSheetBehavior.setState(BottomSheetBehavior.STATE_COLLAPSED); 
mBottomSheetBehavior.setBottomSheetCallback(mBottomSheetCallback); 

活動にxmlファイル: - - :Activityクラスで は、私はこのcommonBottomSheetのためのコードを書いてい

CommonBottomSheetFragmentで
<include layout="@layout/bottom_sheet_pannel"/> 

、あなたが作成することができますあなたのレイアウト。

そしてbottomSheetのための私のxmlファイル(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> 

あなたはコールバック以下でbottomSheetの状態を変更することができます -

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) { 

    } 
}; 
関連する問題