android– 显示隐藏的工具栏动画不流畅

android– 显示隐藏的工具栏动画不流畅,第1张

概述在我最近的一个应用程序中,当用户在列表中滚动时,我实现了隐藏/显示工具栏(Recyclerview).我的应用程序有3个片段和一个视图寻呼机来呈现它们.工具栏在滚动时适当隐藏.但是,当我更改片段(在视图页面上调用onPageChange侦听器)时,我正在扩展工具栏.有时当它正在扩展时,动画是平滑的,

在我最近的一个应用程序中,当用户在列表中滚动时,我实现了隐藏/显示工具栏(RecyclervIEw).我的应用程序有3个片段和一个视图寻呼机来呈现它们.工具栏在滚动时适当隐藏.但是,当我更改片段(在视图页面上调用onPageChange侦听器)时,我正在扩展工具栏.有时当它正在扩展时,动画是平滑的,但有时会有轻微的延迟.我不明白我做错了什么.
为了说明这一点,我录制了我的屏幕,请舔here观看视频.

这是我的main_layout:

<androID.support.design.Widget.CoordinatorLayoutxmlns:androID="http://schemas.androID.com/apk/res/androID"xmlns:app="http://schemas.androID.com/apk/res-auto"xmlns:fab="http://schemas.androID.com/apk/res-auto"xmlns:tools="http://schemas.androID.com/tools"androID:layout_wIDth="match_parent"androID:layout_height="match_parent"androID:fitsSystemwindows="true"tools:context="com.studentsins.lust.MainActivity"><androID.support.design.Widget.AppbarLayout    androID:layout_wIDth="match_parent"    androID:layout_height="wrap_content"    androID:ID="@+ID/appbarLayouy"    androID:theme="@style/Apptheme.AppbarOverlay">    <androID.support.v7.Widget.Toolbar        androID:ID="@+ID/toolbar"        androID:layout_wIDth="match_parent"        androID:layout_height="?attr/actionbarSize"        androID:background="?attr/colorPrimary"        app:popuptheme="@style/Apptheme.PopupOverlay"        app:layout_scrollFlags="scroll|enteralways" />    <androID.support.design.Widget.TabLayout        androID:ID="@+ID/slIDing_tabs"        androID:layout_wIDth="match_parent"        androID:layout_height="@dimen/tabsHeight"        /></androID.support.design.Widget.AppbarLayout><androID.support.v4.vIEw.VIEwPager    androID:ID="@+ID/vIEwpager"    androID:layout_wIDth="match_parent"    androID:layout_height="match_parent"    app:layout_behavior="@string/appbar_scrolling_vIEw_behavior"/><include layout="@layout/content_main"/><com.getbase.floatingactionbutton.floatingActionsMenu    androID:ID="@+ID/floatingActionMenu"    androID:layout_wIDth="wrap_content"    androID:layout_height="wrap_content"    androID:layout_alignParentRight="true"    androID:layout_alignParentEnd="true"    fab:fab_addbuttoncolornormal="@color/blood_orange"    fab:fab_addbuttoncolorpressed="@color/dirtyWhite"    fab:fab_addbuttonPlusIconcolor="@color/dirtyWhite"    fab:fab_addbuttonSize = "normal"    fab:fab_labelStyle="@style/menu_labels_style"    fab:fab_labelsposition="left"    app:layout_anchor="@ID/vIEwpager"    app:layout_anchorGravity="bottom|end">    <com.getbase.floatingactionbutton.floatingActionbutton        androID:ID="@+ID/createPlanBtn"        androID:layout_wIDth="wrap_content"        androID:layout_height="wrap_content"        fab:fab_colornormal="@color/blood_orange"        fab:fab_title="Create a plan"        fab:fab_size="normal"        app:fab_icon="@drawable/ic_event_white_48dp"        fab:fab_colorpressed="@color/dirtyWhite"/>    <com.getbase.floatingactionbutton.floatingActionbutton        androID:ID="@+ID/changeStatusBtn"        androID:layout_wIDth="wrap_content"        androID:layout_height="wrap_content"        fab:fab_colornormal="@color/blood_orange"        fab:fab_size="normal"        app:fab_icon="@drawable/ic_textsms_white_48dp"        fab:fab_title="Change status"        fab:fab_colorpressed="@color/dirtyWhite"/></com.getbase.floatingactionbutton.floatingActionsMenu>

这是我的Feed_fragment:

public class FeedFragment extends Fragment {public static final String ARG_PAGE = "ARG_PAGE";private static final String TAG = FeedFragment.class.getSimplename();private int mPage;private RecyclerVIEw mRefreshLayout;private Context mActivity;public static FeedFragment newInstance(int page) {    Bundle args = new Bundle();    args.putInt(ARG_PAGE, page);    FeedFragment fragment = new FeedFragment();    fragment.setArguments(args);    return fragment;}@OverrIDepublic voID onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    mPage = getArguments().getInt(ARG_PAGE);    mActivity = getActivity();    Log.d("MainActivity", "onCreate" + mPage);}@OverrIDepublic VIEw onCreateVIEw(LayoutInflater inflater, VIEwGroup container, Bundle savedInstanceState) {    VIEw vIEw = inflater.inflate(R.layout.fragment_Feed_layout,container,false);    mRefreshLayout = (RecyclerVIEw) vIEw.findVIEwByID(R.ID.FeedCardVIEwList);    linearlayoutmanager linearlayoutmanager = new linearlayoutmanager(mActivity);    linearlayoutmanager.setorIEntation(linearlayoutmanager.VERTICAL);    mRefreshLayout.setLayoutManager(linearlayoutmanager);    mRefreshLayout.addOnScrollListener(new RecyclerVIEw.OnScrollListener() {        @OverrIDe        public voID onScrolled(RecyclerVIEw recyclerVIEw, int dx, int dy) {            super.onScrolled(recyclerVIEw, dx, dy);            if (dy >= 0) {                // Scrolling up.. hIDe the FAB                MainActivity.mfloatingActionsMenu.animate()                        .setDuration(150)                        .translationY(300);            } else {                // Scrolling down.. show the FAB                MainActivity.mfloatingActionsMenu.animate()                        .setDuration(150)                        .translationY(0);            }            Log.d(TAG,"DY value: "+dy);        }    });    ArrayList<String> users = new ArrayList<>();    users.add("Georgi KoemdzhIEv");    users.add("Mariya Menova");    users.add("Simeon Simeonov");    users.add("Ivan Dqkov");    users.add("Dymityr Vasilev");    users.add("Petar Dimov");    users.add("Stoyan Stoyanov");    users.add("Alexander Lunar");    users.add("Awesome Jhon");    FeedCardAdapter adapter = new FeedCardAdapter(users,mActivity);    mRefreshLayout.setAdapter(adapter);    Log.d("MainActivity", "onCreateVIEw" + mPage);    return vIEw;}}

这是我的MainActivity onCreate方法:

protected voID onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    setContentVIEw(R.layout.activity_main);    Toolbar toolbar = (Toolbar) findVIEwByID(R.ID.toolbar);    setSupportActionbar(toolbar);    sharedPreferences = PreferenceManager.getDefaultSharedPreferences(MainActivity.this);    editor = sharedPreferences.edit();   Boolean isUserLoggedIn = sharedPreferences.getBoolean(Constants.USER_IF_LOG_IN,false);    if(!isUserLoggedIn){        navigatetoLogin();    }    // Get the VIEwPager and set it's PagerAdapter so that it can display items    final VIEwPager vIEwPager = (VIEwPager) findVIEwByID(R.ID.vIEwpager);    vIEwPager.setAdapter(new LustFragmentPagerAdapter(getSupportFragmentManager(), this));    // Give the TabLayout the VIEwPager    final TabLayout tabLayout = (TabLayout) findVIEwByID(R.ID.slIDing_tabs);    tabLayout.setTabGravity(TabLayout.GraviTY_FILL);    tabLayout.setupWithVIEwPager(vIEwPager);    mfloatingActionsMenu = (floatingActionsMenu)findVIEwByID(R.ID.floatingActionMenu);    mChangeStatus = (floatingActionbutton)findVIEwByID(R.ID.changeStatusBtn);    mChangeStatus.setonClickListener(new VIEw.OnClickListener() {        @OverrIDe        public voID onClick(VIEw vIEw) {            Log.d(TAG,"Change Status pressed! | " + vIEwPager.getCurrentItem());            mfloatingActionsMenu.collapse();        }    });    mCreatePlan = (floatingActionbutton)findVIEwByID(R.ID.createPlanBtn);    mCreatePlan.setonClickListener(new VIEw.OnClickListener() {        @OverrIDe        public voID onClick(VIEw vIEw) {            Log.d(TAG,"Create plan pressed! | " + vIEwPager.getCurrentItem());            mfloatingActionsMenu.collapse();        }    });    vIEwPager.addOnPagechangelistener(new VIEwPager.OnPagechangelistener() {        @OverrIDe        public voID onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {            //Make sure that the fab is visible when scrolling the pages...            MainActivity.mfloatingActionsMenu.animate()                    .setDuration(150)                    .translationY(0);            //show the toolbar            expandToolbar();        }        @OverrIDe        public voID onPageSelected(int position) {        }        @OverrIDe        public voID onPageScrollStateChanged(int state) {        }    });}

这是我的expandToolbar方法代码:

public voID expandToolbar(){    //setExpanded(boolean expanded, boolean animate)    AppbarLayout appbarLayout = (AppbarLayout)findVIEwByID(R.ID.appbarLayouy);    appbarLayout.setExpanded(true, true);}

解决方法:

我可以建议你另一种方法吗?只需显示/隐藏顶部栏,使用从GONE到VISIBLE的设置可见性,或从可见到​​显示/隐藏需要.并将androID:animateLayoutChanges =“true”添加到顶栏的父级.

总结

以上是内存溢出为你收集整理的android – 显示隐藏的工具栏动画不流畅全部内容,希望文章能够帮你解决android – 显示隐藏的工具栏动画不流畅所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1119425.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-29
下一篇2022-05-29

发表评论

登录后才能评论

评论列表(0条)

    保存