{"id":371,"date":"2016-05-17T07:54:23","date_gmt":"2016-05-17T06:54:23","guid":{"rendered":"https:\/\/mokrzycki.eu\/blog\/?p=371"},"modified":"2018-12-04T10:19:50","modified_gmt":"2018-12-04T09:19:50","slug":"example-how-to-hide-and-show-floating-action-button-while-scrolling-the-list-code-not-optimized-well","status":"publish","type":"post","link":"https:\/\/mokrzycki.eu\/blog\/2016\/05\/17\/example-how-to-hide-and-show-floating-action-button-while-scrolling-the-list-code-not-optimized-well\/","title":{"rendered":"Example how to hide and show floating action button while scrolling the list (code not optimized well)"},"content":{"rendered":"<pre>\/\/this example is for recyclerView but it can be used somewhere else\r\nrecyclerView.setOnScrollListener(new RecyclerView.OnScrollListener() {\r\n            @Override\r\n            public void onScrollStateChanged(RecyclerView recyclerView, int newState) {\r\n                super.onScrollStateChanged(recyclerView, newState);\r\n            }\r\n\r\n            @Override\r\n            public void onScrolled(RecyclerView recyclerView, int dx, int dy) {\r\n                super.onScrolled(recyclerView, dx, dy);\r\n\r\n                if (dy &gt; 0) {\r\n                    hideFab();\r\n                } else if (dy &lt; 0) { showFab(); } } }); \/\/magic happens here private void hideFab() { if (isFabShowing) { isFabShowing = false; if (Build.VERSION.SDK_INT &gt;= Build.VERSION_CODES.ICE_CREAM_SANDWICH) {\r\n                final Point point = new Point();\r\n                getActivity().getWindow().getWindowManager().getDefaultDisplay().getSize(point);\r\n                final float translation = fab.getY() - point.y;\r\n                fab.animate().translationYBy(-translation).start();\r\n            } else {\r\n                Animation animation = AnimationUtils.makeOutAnimation(getActivity(), true);\r\n                animation.setFillAfter(true);\r\n\r\n                animation.setAnimationListener(new Animation.AnimationListener() {\r\n                    @Override\r\n                    public void onAnimationStart(Animation animation) {\r\n\r\n                    }\r\n\r\n                    @Override\r\n                    public void onAnimationEnd(Animation animation) {\r\n                        fab.setClickable(false);\r\n                    }\r\n\r\n                    @Override\r\n                    public void onAnimationRepeat(Animation animation) {\r\n\r\n                    }\r\n                });\r\n\r\n                fab.startAnimation(animation);\r\n            }\r\n        }\r\n    }\r\n\r\n    private void showFab() {\r\n        if (!isFabShowing) {\r\n            isFabShowing = true;\r\n            if (Build.VERSION.SDK_INT &gt;= Build.VERSION_CODES.ICE_CREAM_SANDWICH) {\r\n                fab.animate().translationY(0).start();\r\n            } else {\r\n                Animation animation = AnimationUtils.makeInAnimation(getActivity(), false);\r\n                animation.setFillAfter(true);\r\n\r\n                animation.setAnimationListener(new Animation.AnimationListener() {\r\n                    @Override\r\n                    public void onAnimationStart(Animation animation) {\r\n\r\n                    }\r\n\r\n                    @Override\r\n                    public void onAnimationEnd(Animation animation) {\r\n                        fab.setClickable(true);\r\n                    }\r\n\r\n                    @Override\r\n                    public void onAnimationRepeat(Animation animation) {\r\n\r\n                    }\r\n                });\r\n\r\n                fab.startAnimation(animation);\r\n            }\r\n        }\r\n    }<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>\/\/this example is for recyclerView but it can be used somewhere else recyclerView.setOnScrollListener(new RecyclerView.OnScrollListener() {&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[500],"tags":[5,267,268,28,269,35],"_links":{"self":[{"href":"https:\/\/mokrzycki.eu\/blog\/wp-json\/wp\/v2\/posts\/371"}],"collection":[{"href":"https:\/\/mokrzycki.eu\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/mokrzycki.eu\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/mokrzycki.eu\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/mokrzycki.eu\/blog\/wp-json\/wp\/v2\/comments?post=371"}],"version-history":[{"count":2,"href":"https:\/\/mokrzycki.eu\/blog\/wp-json\/wp\/v2\/posts\/371\/revisions"}],"predecessor-version":[{"id":705,"href":"https:\/\/mokrzycki.eu\/blog\/wp-json\/wp\/v2\/posts\/371\/revisions\/705"}],"wp:attachment":[{"href":"https:\/\/mokrzycki.eu\/blog\/wp-json\/wp\/v2\/media?parent=371"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mokrzycki.eu\/blog\/wp-json\/wp\/v2\/categories?post=371"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mokrzycki.eu\/blog\/wp-json\/wp\/v2\/tags?post=371"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}