QMUI学习第二天

QMUIEmptyView

@Widget(widgetClass = QMUIEmptyView.class, iconRes = R.mipmap.icon_grid_empty_view)
public class QDEmptyViewFragment extends BaseFragment {
   

    @BindView(R.id.topbar)
    QMUITopBarLayout mTopBar;
    @BindView(R.id.emptyView)
    QMUIEmptyView mEmptyView;

    private QDItemDescription mQDItemDescription;

    @Override
    protected View onCreateView() {
   
        View root = LayoutInflater.from(getActivity()).inflate(R.layout.fragment_emptyview, null);
        ButterKnife.bind(this, root);

        mQDItemDescription = QDDataManager.getInstance().getDescription(this.getClass());
        initTopBar();

        return root;
    }

    private void initTopBar() {
   
        mTopBar.addLeftBackImageButton().setOnClickListener(new View.OnClickListener() {
   
            @Override
            public void onClick(View v) {
   
                popBackStack();
            }
        });

        // 切换其他情况的按钮
        mTopBar.addRightImageButton(R.mipmap.icon_topbar_overflow, R.id.topbar_right_change_button).setOnClickListener(new View.OnClickListener() {
   
            @Override
            public void onClick(View view) {
   
                showBottomSheetList();
            }
        });

        mTopBar.setTitle(mQDItemDescription.getName());
    }

    private void showBottomSheetList() {
   
        new QMUIBottomSheet.BottomListSheetBuilder(getActivity())
                .addItem(getResources().getString(R.string.emptyView_mode_title_double_text))
                .addItem(getResources().getString(R.string.emptyView_mode_title_single_text))
                .addItem(getResources().getString(R.string.emptyView_mode_title_loading))
                .addItem(getResources().getString(R.string.emptyView_mode_title_single_text_and_button))
                .addItem(getResources().getString(R.string.emptyView_mode_title_double_text_and_button))
                .setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() {
   
                    @Override
                    public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) {
   
                        dialog.dismiss();
                        switch (position) {
   
                            case 0:
                                mEmptyView.show(getResources().getString(R.string.emptyView_mode_desc_double), getResources().getString(R.string.emptyView_mode_desc_detail_double));
                                break;
                            case 1:
                                mEmptyView.show(getResources().getString(R.string.emptyView_mode_desc_single), null);
                                break;
                            case 2:
                                mEmptyView.show(true);
                                break;
                            case 3:
                                mEmptyView.show(false, getResources().getString(R.string.emptyView_mode_desc_fail_title), null, getResources().getString(R.string.emptyView_mode_desc_retry), null);
                                break;
                            case 4:
                                mEmptyView.show(false, getResources().getString(R.string.emptyView_mode_desc_fail_title), getResources().getString(R.string.emptyView_mode_desc_fail_desc), getResources().getString(R.string.emptyView_mode_desc_retry), null);
                                break;
                            default:
                                break;
                        }
                    }
                })
                .build()
       布局文件定义了两个:
      
         <com.qmuiteam.qmui.widget.QMUIEmptyView
        android:id="@+id/emptyView"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_marginTop="?attr/qmui_topbar_height"
        android:background="@color/qmui_config_color_white"
        app:qmui_title_text="@string/emptyView_mode_desc_double"
        app:qmui_detail_text="@string/emptyView_mode_desc_detail_double"
        android:fitsSystemWindows="true"/>

    <com.qmuiteam.qmui.widget.QMUITopBarLayout
        android:id="@+id/topbar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:fitsSystemWindows="true"/>

在TopBar中有切换其他情况的按钮,设置点击事件,调用showBottomSheetList() 方法,在底部出现一个SheetList。增加Item,并且添加点击事件。
QMUIEmptyView.java

  • 用于显示界面的 loading、错误信息提示等状态。
  • 提供了一个 LoadingView、一行标题、一行说明文字、一个按钮, 可以使用 {@link #show(boolean, String, String, String, OnClickListener)} 系列方法控制这些控件的显示内容
    调用方法如下:
public class QMUIEmptyView extends FrameLayout {
   
    private QMUILoadingView mLoadingView;
    private TextView mTitleTextView;
    private TextView mDetailTextView;
    protected Button mButton;

    public QMUIEmptyView(Context context) {
   
        this(context,null);
    }

    public QMUIEmptyView(Context context, AttributeSet attrs) {
   
        this(context,attrs,0);
    }

	public QMUIEmptyView(Context context, AttributeSet attrs, int defStyle) {
   
		super(context, attrs, defStyle);
        init();
        TypedArray arr = context.obtainStyledAttributes(attrs, R.styleable.QMUIEmptyView);
        Boolean attrShowLoading = arr.getBoolean(R.styleable.QMUIEmptyView_qmui_show_loading, false);
        String attrTitleText = arr.getString(R.styleable.QMUIEmptyView_qmui_title_text);
        String attrDetailText = arr.getString(R.styleable.QMUIEmptyView_qmui_detail_text);
        String attrBtnText = arr.getString(R.styleable.QMUIEmptyView_qmui_btn_text);
        arr.recycle();
        show(attrShowLoading,attrTitleText,attrDetailText,attrBtnText,null);
	}

    private void init() {
   
        LayoutInflater.from(getContext()).inflate(R.layout.qmui_empty_view, this, true);
        mLoadingView = (QMUILoadingView)findViewById(R.id.empty_view_loading);
        mTitleTextView = (TextView)findViewById(R.id.empty_view_title);
        mDetailTextView = (TextView)findViewById(R.id.empty_view_detail);
        mButton = (Button)findViewById(R.id.empty_view_button);
    }

    /**
     * 显示emptyView
     * @param loading 是否要显示loading
     * @param titleText 标题的文字,不需要则传null
     * @param detailText 详情文字,不需要则传null
     * @param buttonText 按钮的文字,不需要按钮则传null
     * @param onButtonClickListener 按钮的onClick监听,不需要则传null
     */
    public void show(boolean loading, String titleText, String detailText, String buttonText, OnClickListener onButtonClickListener) {
   
        setLoadingShowing(loading);
        setTitleText(titleText);
        setDetailText(detailText);
        setButton(buttonText, onButtonClickListener);
        show();
    }

    /**
     * 用于显示emptyView并且只显示loading的情况,此时title、detail、button都被隐藏
     * @param loading 是否显示loading
     */
    public void show(boolean loading) {
   
        setLoadingShowing(loading);
        setTitleText(null);
        setDetailText(null);
        setButton(null, null);
        show();
    }

    /**
     * 用于显示纯文本的简单调用方法,此时loading、button均被隐藏
     * @param titleText 标题的文字,不需要则传null
     * @param detailText 详情文字,不需要则传null
     */
    public void show(String titleText, String detailText) {
   
        setLoadingShowing(false);
        setTitleText(titleText);
        setDetailText(detailText);
        setButton(null, null);
        show();
    }

    /**
     * 显示emptyView,不建议直接使用,建议调用带参数的show()方法,方便控制所有子View的显示/隐藏
     */
    public void show() {
   
        setVisibility(VISIBLE);
    }

    /**
     * 隐藏emptyView
     */
    public void hide() {
   
        setVisibility(GONE);
        setLoadingShowing(false);
        setTitleText(null);
        setDetailText(null);
        setButton(null, null);
    }

    public boolean isShowing() {
   
        return getVisibility() == VISIBLE;
    }

    public boolean isLoading() {
   
        return mLoadingView.getVisibility() == VISIBLE;
    }

    public void setLoadingShowing(boolean show) {
   
    	mLoadingView.setVisibility(show ? VISIBLE : GONE);
    }

    public void setTitleText(String text) {
   
        mTitleTextView.setText(text);
        mTitleTextView.setVisibility(text != null ? VISIBLE : GONE);
    }

    public void setDetailText(String text) {
   
        mDetailTextView.setText(text);
        mDetailTextView.setVisibility(text != null ? VISIBLE : GONE);
    }

    public void setTitleColor(int color) {
   
    	mTitleTextView.setTextColor(color);
    }

    public void setDetailColor(int color) {
   
    	mDetailTextView.setTextColor(color);
    }

    public void setButton(String text, OnClickListener onClickListener) {
   
        mButton.setText(text);
        mButton.setVisibility(text != null ? VISIBLE : GONE);
        mButton.setOnClickListener(onClickListener);
    }
}

显示emptyView
* @param loading 是否要显示loading
* @param titleText 标题的文字,不需要则传null
* @param detailText 详情文字,不需要则传null
* @param buttonText 按钮的文字,不需要按钮则传null
* @param onButtonClickListener 按钮的onClick监听,不需要则传null

QMUITabSegment

@Widget(group = Group.Other, name = "固定宽度,内容均分")
public class QDTabSegmentFixModeFragment extends BaseFragment {
   
    @BindView(R.id.topbar)
    QMUITopBarLayout mTopBar;
    @BindView(R.id.tabSegment)
    QMUITabSegment mTabSegment;
    @BindView(R.id.contentViewPager)
    ViewPager mContentViewPager;

    private Map<ContentPage, View> mPageMap = new HashMap<>();
    private ContentPage mDestPage = ContentPage.Item1;
    private QDItemDescription mQDItemDescription;
    private PagerAdapter mPagerAdapter = new PagerAdapter() {
   
        @Override
        public boolean isViewFromObject(View view, Object object) {
   
            return view == object;
        }

        @Override
        public int getCount() {
   
            return ContentPage.SIZE;
        }

        @Override
        public Object instantiateItem(final ViewGroup container, int position) {
   
            ContentPage page = ContentPage.getPage(position);
            View view = getPageView(page);
            ViewGroup.LayoutParams params = new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
            container.addView(view, params);
            return view;
        }

        @Override
        public void destroyItem(ViewGroup container, int position, Object object) {
   
            container.removeView((View) object);
        }

    };

    @Override
    protected View onCreateView() {
   
        View rootView = LayoutInflater.from(getActivity()).inflate(R.layout.fragment_tab_viewpager_layout, null);
        ButterKnife.bind(this, rootView);

        mQDItemDescription = QDDataManager.getInstance().getDescription(this.getClass());
        initTopBar();
        initTabAndPager();

        return rootView;
    }

    private void initTopBar() {
   
        mTopBar.addLeftBackImageButton().setOnClickListener(new View.OnClickListener() {
   
            @Override
            public void onClick(View v) {
   
                popBackStack();
            }
        });

        mTopBar.setTitle(mQDItemDescription.getName());
        mTopBar.addRightImageButton(R.mipmap.icon_topbar_overflow, R.id.topbar_right_change_button)
                .setOnClickListener(new View.OnClickListener() {
   
                    @Override
                    public void onClick(View v) {
   
                        showBottomSheetList();
                    }
                });
    }

    private void showBottomSheetList() {
   
        new QMUIBottomSheet.BottomListSheetBuilder(getActivity())
                .addItem(getResources().getString(R.string.tabSegment_mode_general))
                .addItem(getResources().getString(R.string.tabSegment_mode_bottom_indicator))
                .addItem(getResources().getString(R.string.tabSegment_mode_top_indicator))
                .addItem(getResources().getString(R.string.tabSegment_mode_indicator_with_content))
                .addItem(getResources().getString(R.string.tabSegment_mode_left_icon_and_auto_tint))
                .addItem(getResources().getString(R.string.tabSegment_mode_sign_count))
                .addItem(getResources().getString(R.string.tabSegment_mode_icon_change))
                .addItem(getResources().getString(R.string.tabSegment_mode_muti_color))
                .addItem(getResources().getString(R.string.tabSegment_mode_change_content_by_index))
                .addItem(getResources().getString(R.string.tabSegment_mode_replace_tab_by_index))
                .setOnSheetItemClickListener(new QMUIBottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() {
   
                    @Override
                    public void onClick(QMUIBottomSheet dialog, View itemView, int position, String tag) {
   
                        dialog.dismiss();
                        switch (position) {
   
                            case 0:
                                mTabSegment.reset();
                                mTabSegment.setHasIndicator(false);
                                mTabSegment.addTab(new QMUITabSegment.Tab(getString(R.string.tabSegment_item_1_title)));
                                mTabSegment.addTab(new QMUITabSegment.Tab(getString(R.string.tabSegment_item_2_title)));
                                break;
                            case 1:
                                mTabSegment.reset();
                                mTabSegment.setHasIndicator(true);
                                mTabSegment.setIndicatorPosition(false);
                                mTabSegment.setIndicatorWidthAdjustContent(true);
                                mTabSegment.addTab(new QMUITabSegment.Tab(getString(R.string.tabSegment_item_1_title)));
                                mTabSegment.addTab(new QMUITabSegment.Tab(getString(R.string.tabSegment_item_2_title)));
                                break;
                            case 2:
                                mTabSegment.reset();
                                mTabSegment.setHasIndicator(true);
                                mTabSegment.setIndicatorPosition(true);
                                mTabSegment.setIndicatorWidthAdjustContent(true);
                                mTabSegment.addTab(new QMUITabSegment.Tab(getString(R.string.tabSegment_item_1_title)));
                                mTabSegment.addTab(new QMUITabSegment.Tab(getString(R.string.tabSegment_item_2_title)));
                                break;
                            case 3:
                                mTabSegment.reset();
                                mTabSegment.setHasIndicator(true);
                                mTabSegment.setIndicatorPosition(false);
                                mTabSegment.setIndicatorWidthAdjustContent(false);
                                mTabSegment.addTab(new QMUITabSegment.Tab(getString(R.string.tabSegment_item_1_title)));
                                mTabSegment.addTab(new QMUITabSegment.Tab(getString(R.string.tabSegment_item_2_title)));
                                break;
                            case 4:
                                mTabSegment.reset();
                                mTabSegment.setHasIndicator(false);
                                QMUITabSegment.Tab component = new QMUITabSegment.Tab(
                                        ContextCompat.getDrawable(getContext(), R.mipmap.icon_tabbar_component),
                                        null,
                                        "Components", true
                                );
                                QMUITabSegment.Tab util = new QMUITabSegment.Tab(
                                        ContextCompat.getDrawable(getContext(), R.mipmap.icon_tabbar_util),
                                        null,
                                        "Helper", true
                                );
                                mTabSegment.addTab(component);
                                mTabSegment.addTab(util);
                                break;
                            case 5:
                                QMUITabSegment.Tab tab = mTabSegment.getTab(0);
                                tab.setSignCountMargin(0, -QMUIDisplayHelper.dp2px(getContext(), 4));
                                tab.showSignCountView(getContext(), 1);
                                break;
                            case 6:
                                mTabSegment.reset();
                                mTabSegment.setHasIndicator(false);
                                QMUITabSegment.Tab component2 = new QMUITabSegment.Tab(
                                        ContextCompat.getDrawable(getContext(), R.mipmap.icon_tabbar_component),
                                        ContextCompat.getDrawable(getContext(), R.mipmap.icon_tabbar_component_selected),
                                        "Components", false
                                );
                                QMUITabSegment.Tab util2 = new QMUITabSegment.Tab(
                                        ContextCompat.getDrawable(getContext(), R.mipmap.icon_tabbar_util),
                                        ContextCompat.getDrawable(getContext(), R.mipmap.icon_tabbar_util_selected),
                                        "Helper", false
                                );
                                mTabSegment.addTab(component2);
                                mTabSegment.addTab(util2);
                                break;
                            case 7:
                                mTabSegment.reset();
                                mTabSegment.setHasIndicator(true);
                                mTabSegment.setIndicatorWidthAdjustContent(true);
                                mTabSegment.setIndicatorPosition(false);
                                QMUITabSegment.Tab component3 = new QMUITabSegment.Tab(
                                        ContextCompat.getDrawable(getContext(), R.mipmap.icon_tabbar_component),
                                        null,
                                        "Components", true
                                );
                                component3.setTextColor(QMUIResHelper.getAttrColor(getContext(), R.attr.qmui_config_color_blue),
                                        QMUIResHelper.getAttrColor(getContext(), R.attr.qmui_config_color_red));
                                QMUITabSegment.Tab util3 = new QMUITabSegment.Tab(
                                        ContextCompat.getDrawable(getContext(), R.mipmap.icon_tabbar_util),
                                        null,
                                        "Helper", true
                                );
                                util3.setTextColor(QMUIResHelper.getAttrColor(getContext(), R.attr.qmui_config_color_gray_1),
                                        QMUIResHelper.getAttrColor(getContext(), R.attr.qmui_config_color_red));
                                mTabSegment.addTab(component3);
                                mTabSegment.addTab(util3);
                                break;
                            case 8:
                                mTabSegment.updateTabText(0, "动态更新文案");
                                break;
                            case 9:
                                QMUITabSegment.Tab component4 = new QMUITabSegment.Tab(
                                        ContextCompat.getDrawable(getContext(), R.mipmap.icon_tabbar_component),
                                        null,
                                        "动态更新", true
                                );
                                mTabSegment.replaceTab(0, component4);
                                break;

                            default:
                                break;
                        }
                        mTabSegment.notifyDataChanged();
                    }
                })
                .build()
                .show();
    }

    private void initTabAndPager() {
   
        mContentViewPager.setAdapter(
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值