
在我最近的一个应用程序中,当用户在列表中滚动时,我实现了隐藏/显示工具栏(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 – 显示隐藏的工具栏动画不流畅所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)