01d939b9b4654e3086ceec8557f2c2a6dcde3832.svn-base 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. package eVVM.apk.widget;
  2. import android.content.Context;
  3. import android.support.design.widget.CollapsingToolbarLayout;
  4. import android.util.AttributeSet;
  5. /**
  6. * desc : 支持监听渐变的CollapsingToolbarLayout
  7. */
  8. public final class XCollapsingToolbarLayout extends CollapsingToolbarLayout {
  9. private OnScrimsListener mListener; // 渐变监听
  10. private boolean isScrimsShown; // 当前渐变状态
  11. public XCollapsingToolbarLayout(Context context) {
  12. super(context);
  13. }
  14. public XCollapsingToolbarLayout(Context context, AttributeSet attrs) {
  15. super(context, attrs);
  16. }
  17. public XCollapsingToolbarLayout(Context context, AttributeSet attrs, int defStyleAttr) {
  18. super(context, attrs, defStyleAttr);
  19. }
  20. @Override
  21. public void setScrimsShown(boolean shown, boolean animate) {
  22. super.setScrimsShown(shown, true);
  23. // 判断渐变状态是否改变了
  24. if (isScrimsShown != shown) {
  25. // 如果是就记录并且回调监听器
  26. isScrimsShown = shown;
  27. if (mListener != null) {
  28. mListener.onScrimsStateChange(isScrimsShown);
  29. }
  30. }
  31. }
  32. /**
  33. * 获取当前的渐变状态
  34. */
  35. public boolean isScrimsShown() {
  36. return isScrimsShown;
  37. }
  38. /**
  39. * 设置CollapsingToolbarLayout渐变监听
  40. */
  41. public void setOnScrimsListener(OnScrimsListener l) {
  42. mListener = l;
  43. }
  44. /**
  45. * CollapsingToolbarLayout渐变监听器
  46. */
  47. public interface OnScrimsListener {
  48. /**
  49. * 渐变状态变化
  50. *
  51. * @param shown 渐变开关
  52. */
  53. void onScrimsStateChange(boolean shown);
  54. }
  55. }