第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用 BottomNavigationView 的片段過渡動畫

使用 BottomNavigationView 的片段過渡動畫

慕田峪9158850 2022-05-21 17:18:57
我目前有一個應用程序,它有一個 MainActivity、一個帶有 3 個項目的 BottomNavigationView 和 3 個相應的片段:public class MainActivity extends AppCompatActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {    // Bottom Nav    bottomNav = findViewById(R.id.bottom_nav);    bottomNav.setOnNavigationItemSelectedListener(            new BottomNavigationView.OnNavigationItemSelectedListener() {                @Override                public boolean onNavigationItemSelected(@NonNull MenuItem menuItem) {                    Fragment fragment = null;                    switch (menuItem.getItemId()) {                        case R.id.bottom_nav_home:                            fragment = new HomeFragment();                            break;                        case R.id.bottom_nav_favorites:                            fragment = new FavoritesFragment();                            break;                        case R.id.bottom_nav_settings:                            fragment = new SettingsFragment();                            break;                    }                    return loadFragment(fragment, position);                }            }    );}private boolean loadFragment(Fragment fragment) {    if(fragment != null) {        FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();        transaction.setCustomAnimations(R.anim.slide_in_right, R.anim.slide_out_left);        transaction.replace(R.id.container, fragment);        transaction.commit();        return true;    }    return false;}這真的很好用。我的問題是在片段中循環(huán)時,進入/退出動畫總是相同的。因此,如果我從首頁轉(zhuǎn)到收藏夾,然后返回首頁,首頁從右側(cè)進入,而我想從左側(cè)進入。有沒有辦法根據(jù)用戶在應用程序中的來源設(shè)置自定義進入/退出過渡動畫?
查看完整描述

2 回答

?
慕桂英4014372

TA貢獻1871條經(jīng)驗 獲得超13個贊

對于以后發(fā)現(xiàn)這個的任何人。我稍微修改了方法@Ian Greene。應用程序啟動時有一個禁用動畫的檢查


 private boolean loadFragment(Fragment fragment, int newPosition) {

    if(fragment != null) {

        if(newPosition == 0) {

            getSupportFragmentManager()

                    .beginTransaction()

                    .replace(R.id.contentLayout, fragment).commit();


        }

        if(startingPosition > newPosition) {

            getSupportFragmentManager()

                .beginTransaction()

                    .setCustomAnimations(R.anim.slide_in_left, R.anim.slide_out_right )

                .replace(R.id.contentLayout, fragment).commit();


        }

        if(startingPosition < newPosition) {

            getSupportFragmentManager()

                    .beginTransaction()

                    .setCustomAnimations(R.anim.slide_in_right, R.anim.slide_out_left)

                    .replace(R.id.contentLayout, fragment).commit();


        }

        startingPosition = newPosition;

        return true;

    }


    return false;

}

然后在創(chuàng)建


    if (savedInstanceState == null) {

        loadFragment(mFirstFragment, 0);

    }

和背壓


@Override

public void onBackPressed() {

    int selectedItemId = bottomNavigationView.getSelectedItemId();

    if (R.id.navigation_home != selectedItemId) {

        loadFragment(mFirstFragment,1);

        toolbar.setTitle(title[0]);

        bottomNavigationView.setSelectedItemId(R.id.navigation_home);

    } else {

        super.onBackPressed();

    }

}

我希望這會對某人有所幫助


 @Override

public boolean onNavigationItemSelected(@NonNull MenuItem menuItem) {

    Fragment fragment = null;

    int newPosition = 0;

    if (bottomNavigationView.getSelectedItemId() != menuItem.getItemId()) {

        switch (menuItem.getItemId()) {

            case R.id.navigation_home:

                fragment = mFirstFragment;

                toolbar.setTitle(title[0]);

                newPosition = 1;

                break;

            case R.id.navigation_dashboard:

                fragment = mSecondFragment;

                toolbar.setTitle(title[1]);

                newPosition = 2;

                break;

            case R.id.navigation_notifications:

                fragment = mThirdFragment;

                toolbar.setTitle(title[2]);

                newPosition = 3;

                break;

        }

    }

    return loadFragment(fragment, newPosition);

}


查看完整回答
反對 回復 2022-05-21
?
阿晨1998

TA貢獻2037條經(jīng)驗 獲得超6個贊

對于以后發(fā)現(xiàn)這個的任何人。正如 Filippo Vigani 建議的那樣,我想出了一種方法來跟蹤當前位置。這是我所做的:


public class MainActivity extends AppCompatActivity implements

    AddCategoryFragment.AddCategoryFragmentListener{


@Override

protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

    setContentView(R.layout.activity_main);

    loadFragment(new HomeFragment(), 1);


    // Bottom Nav

    bottomNav = findViewById(R.id.bottom_nav);

    bottomNav.setOnNavigationItemSelectedListener(

            new BottomNavigationView.OnNavigationItemSelectedListener() {

                @Override

                public boolean onNavigationItemSelected(@NonNull MenuItem menuItem) {

                    Fragment fragment = null;

                    int newPosition = 0;


                    switch (menuItem.getItemId()) {

                        case R.id.bottom_nav_home:

                            fragment = new HomeFragment();

                            newPosition = 1;

                            break;

                        case R.id.bottom_nav_favorites:

                            fragment = new FavoritesFragment();

                            newPosition = 2;

                            break;

                        case R.id.bottom_nav_settings:

                            fragment = new SettingsFragment();

                            newPosition = 3;

                            break;

                    }

                    return loadFragment(fragment, newPosition);

                }

            }

    );

} // End of onCreate



private boolean loadFragment(Fragment fragment, int newPosition) {

    if(fragment != null) {

        if(startingPosition > newPosition) {

            FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();

            transaction.setCustomAnimations(R.anim.slide_in_left, R.anim.slide_out_right );

            transaction.replace(R.id.container, fragment);

            transaction.commit();

        }

        if(startingPosition < newPosition) {

            FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();

            transaction.setCustomAnimations(R.anim.slide_in_right, R.anim.slide_out_left);

            transaction.replace(R.id.container, fragment);

            transaction.commit();

        }

        startingPosition = newPosition;

        return true;

    }


    return false;

}


查看完整回答
反對 回復 2022-05-21
  • 2 回答
  • 0 關(guān)注
  • 163 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號