Tôi đang sử dụng TabLayout với 5 đoạn khác nhau. Trên 3 đoạn này, android.support.design.widget.FloatingActionButton
sẽ xuất hiện. Ngay bây giờ tôi chỉ đơn giản là thiết lập khả năng hiển thị của FAB khi tab thay đổi, nhưng tôi muốn có một hình ảnh động, trong đó FAB đi vào và ra. Làm thế nào tôi có thể đạt được điều này trong Android?Cách tạo hoạt ảnh FloatingActionButton của Thư viện hỗ trợ thiết kế mới
Trả lời
Bởi vì tôi không muốn kéo dài tuổi FloatingActionButton
, tôi đã thực hiện nó theo cách này:
FloatingActionButton createButton;
// ...
Animation makeInAnimation = AnimationUtils.makeInAnimation(getBaseContext(), false);
makeInAnimation.setAnimationListener(new Animation.AnimationListener() {
@Override
public void onAnimationEnd(Animation animation) { }
@Override
public void onAnimationRepeat(Animation animation) { }
@Override
public void onAnimationStart(Animation animation) {
createButton.setVisibility(View.VISIBLE);
}
});
Animation makeOutAnimation = AnimationUtils.makeOutAnimation(getBaseContext(), true);
makeOutAnimation.setAnimationListener(new Animation.AnimationListener() {
@Override
public void onAnimationEnd(Animation animation) {
createButton.setVisibility(View.INVISIBLE);
}
@Override
public void onAnimationRepeat(Animation animation) { }
@Override
public void onAnimationStart(Animation animation) { }
});
// ...
if (createButton.isShown()) {
createButton.startAnimation(makeOutAnimation);
}
// ...
if (!createButton.isShown()) {
createButton.startAnimation(makeInAnimation);
}
tùy chỉnh Tôi đã thay thế các lệnh 'setAnimation()' bằng 'startAnimation()' trong câu trả lời của bạn - xem câu hỏi tương tự tại đây: [FAB không animate - mã kiểm tra và ảnh chụp màn hình đính kèm ] (http://stackoverflow.com/questions/31773559/fab-does-not-animate-test-code-and-screenshot-attached) –
Cách dễ nhất là mở rộng lớp FloatingActionButton và ghi đè setVisibility. Như thế này:
public void setVisibility(final int visibility) {
if (getVisibility() != View.VISIBLE && visibility == View.VISIBLE && inAnim != null) {
animator = // create your animator here
super.setVisibility(visibility);
} else if (getVisibility() == View.VISIBLE && visibility != View.VISIBLE) {
AnimatorListenerAdapter listener = new AnimatorListenerAdapter() {
@Override
public void onAnimationEnd(Animator animator) {
Button.super.setVisibility(visibility);
}
});
animator = // create your animator here
animator.addListener(listener);
}
}
Đoạn mã trên được lấy từ lớp Nút từ my library. Bạn có thể tìm các triển khai mẫu trong các nguồn.
Bạn muốn một cái gì đó như thế này? Nhưng thay vì làm động nó trên onScrollListener
bạn có thể tạo hiệu ứng động trên phương thức onCreateView
hoặc onCreate
. Làm theo này ->Implement Floating Action Button – Part 2
Về cơ bản mã tổng kết chỉ để
Animate này để Ẩn
FloatingActionButton floatingActionButton = (FloatingActionButton) getActivity().findViewById(R.id.fab);
floatingActionButton.animate().translationY(floatingActionButton.getHeight() + 16).setInterpolator(new AccelerateInterpolator(2)).start();
và
Animate trở lại Hiện
FloatingActionButton floatingActionButton = (FloatingActionButton) getActivity().findViewById(R.id.fab);
floatingActionButton.animate().translationY(0).setInterpolator(new DecelerateInterpolator(2)).start();
nhưng chúng tôi không muốn nó hoạt hình chỉ để ẩn nó, 'Animate to Hide' sẽ chỉ b e một cái gì đó như thế này
FloatingActionButton floatingActionButton = (FloatingActionButton) getActivity().findViewById(R.id.fab);
floatingActionButton.setTranslationY(floatingActionButton.getHeight() + 16);
On 'Animate để Ẩn' đặt rằng vào phương pháp onCreateView
hoặc onCreate
để trên FAB của bạn bị ẩn khi bạn tạo đoạn này và sau đó bạn có thể thêm một handler và Runnable sẽ kích hoạt ' animate trở lại Hiện' sau một hoặc hai giây để hiển thị hình ảnh động của bạn
hoặc bạn có thể sử dụng một thời gian cho các hoạt hoạ ngắn
int mShortAnimationDuration = getResources().getInteger(
android.R.integer.config_shortAnimTime);
tôi đã cố gắng này trên OnScroll nhưng chưa thử trên onCreateView
hoặc 012.nhưng tôi đoán nó sẽ làm việc
- EDIT -
Hãy thử mã này;)
public class DummyFragment extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
int mShortAnimationDuration = getResources().getInteger(
android.R.integer.config_shortAnimTime);
FloatingActionButton floatingActionButton = (FloatingActionButton) getActivity().findViewById(R.id.fab);
floatingActionButton.setTranslationY(floatingActionButton.getHeight() + 16);
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
FloatingActionButton floatingActionButton = (FloatingActionButton) getActivity().findViewById(R.id.fab);
floatingActionButton.animate().translationY(0).setInterpolator(new DecelerateInterpolator(2)).start();
}, mShortAnimationDuration);
}
}
}
Tôi có thể sử dụng điều này trong ứng dụng (phi lợi nhuận) của tôi không? Tôi có nên cho tín dụng không? – Penn
chắc chắn không có probs: D –
Việc sửa đổi thư viện hỗ trợ thiết kế 22.2.1 (July 2015) thêm hide()
và show()
phương pháp cho lớp học FloatingActionButton
, do đó bạn có thể sử dụng các phương pháp này từ giờ trở đi.
http://developer.android.com/tools/support-library/index.html
Chúng không cung cấp hoạt ảnh của hộp mặc dù – ThanosFisherman
@ThanosF FAB sẽ tạo hiệu ứng khi sử dụng 'show()' hoặc 'hide()', nhưng chỉ khi khung nhìn đã được đặt ra. –
Tôi đã thử điều này và nó hoạt động! – Bruce
Các ẩn/hiển thị hình ảnh động cho co/pop sẽ được tự động xử lý bởi các phiên bản mới của Thư viện hỗ trợ. (22.2.1) Sau đó OnTabChange nghe hiển thị hoặc ẩn các nút hành động nổi bằng show/hide các phương thức được cung cấp bởi thư viện mới.
fab.show(); hoặc fab.hide();
- 1. Cách tạo kiểu NavigationView của thư viện Hỗ trợ thiết kế?
- 2. Sử dụng Hỗ trợ Thư viện Thiết kế trong Eclipse
- 3. Thư viện hỗ trợ thiết kế Android: NavigationView source code
- 4. Thư viện hỗ trợ: Hoạt ảnh FragmentTransaction không hoạt động
- 5. Thư viện hỗ trợ Android FloatingActionButton - đệm trên các thiết bị trước kẹo que?
- 6. RuntimeException khi sử dụng TextInputLayout mới từ hỗ trợ thư viện thiết kế
- 7. Thanh công cụ Thu gọn hoạt ảnh mượt mà với Thư viện hỗ trợ thiết kế Android
- 8. Đây có phải là lỗi trong Thư viện thiết kế hỗ trợ Android không?
- 9. Cách thêm thư viện hỗ trợ?
- 10. Thiết lập thư viện hỗ trợ Android với maven
- 11. Quy tắc bảo vệ thư viện hỗ trợ thiết kế Android
- 12. mục (Thiết kế Thư viện hỗ trợ) Thanh công cụ phía sau thanh trạng thái
- 13. Thư viện hỗ trợ Android hoạt động như thế nào?
- 14. Thư viện hỗ trợ thiết kế Android 24.2.1 làm cho BottomSheet mở khi khởi động
- 15. TabLayout bị thiếu sau khi cập nhật Thư viện Hỗ trợ Thiết kế
- 16. Hoạt ảnh kỳ lạ của AppBarLayout.setExpanded (boolean, true) trong thư viện hỗ trợ 23.1.1
- 17. Thư viện hỗ trợ thiết kế Android Trình đơn ngăn kéo thứ cấp
- 18. (Thư viện hỗ trợ thiết kế) CollapsingToolbarLayout - Thanh công cụ không bị ghim khi thu gọn
- 19. Lỗi Gradle sau khi thêm thư viện thiết kế hỗ trợ Android
- 20. Thiết kế Thư viện JavaScript
- 21. nhập mới Android Design Hỗ trợ thư viện
- 22. GWT + HTML5 thư viện di động nhẹ để hỗ trợ hoạt ảnh
- 23. Thư viện hỗ trợ thiết kế - Phiên bản nào cần sử dụng với SDK v21
- 24. EditText getHint() trả về null khi sử dụng thư viện hỗ trợ thiết kế
- 25. IllegalStateException - Hỗ trợ Fragment thư viện
- 26. Kiểu SwipeRefreshLayout trong r21 của thư viện hỗ trợ
- 27. getChildFragmentManager() và hỗ trợ thư viện
- 28. BetterPickers không có thư viện hỗ trợ
- 29. Lập trình tạo GridLayout từ thư viện hỗ trợ
- 30. Cách thiết kế trang hỗ trợ API Android N (Nougat) 24 (Thiết kế đa cửa sổ)?
Cách tốt nhất là sử dụng FloatingActionButton.Behavior –