com.mikepenz.materialdrawer.util.DrawerUIUtils Java Examples

The following examples show how to use com.mikepenz.materialdrawer.util.DrawerUIUtils. You can vote up the ones you like or vote down the ones you don't like, and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example #1
Source File: BaseDrawerItem.java    From MaterialDrawer-Xamarin with Apache License 2.0 5 votes vote down vote up
/**
 * helper to get the ColorStateList for the text and remembering it so we do not have to recreate it all the time
 *
 * @param color
 * @param selectedTextColor
 * @return
 */
protected ColorStateList getTextColorStateList(@ColorInt int color, @ColorInt int selectedTextColor) {
    if (colorStateList == null || color + selectedTextColor != colorStateList.first) {
        colorStateList = new Pair<>(color + selectedTextColor, DrawerUIUtils.getTextColorStateList(color, selectedTextColor));
    }

    return colorStateList.second;
}
 
Example #2
Source File: AccountHeaderBuilder.java    From MaterialDrawer-Xamarin with Apache License 2.0 5 votes vote down vote up
/**
 * small helper method to set an profile image or a placeholder
 *
 * @param iv
 * @param imageHolder
 */
private void setImageOrPlaceholder(ImageView iv, ImageHolder imageHolder) {
    //cancel previous started image loading processes
    DrawerImageLoader.getInstance().cancelImage(iv);
    //set the placeholder
    iv.setImageDrawable(DrawerUIUtils.getPlaceHolder(iv.getContext()));
    //set the real image (probably also the uri)
    ImageHolder.applyTo(imageHolder, iv, DrawerImageLoader.Tags.PROFILE.name());
}
 
Example #3
Source File: DrawerUtils.java    From MaterialDrawer-Xamarin with Apache License 2.0 5 votes vote down vote up
/**
 * helper method to fill the sticky footer with it's elements
 *
 * @param drawer
 * @param container
 * @param onClickListener
 */
public static void fillStickyDrawerItemFooter(DrawerBuilder drawer, ViewGroup container, View.OnClickListener onClickListener) {
    //add all drawer items
    for (IDrawerItem drawerItem : drawer.mStickyDrawerItems) {
        //get the selected_color
        int selected_color = UIUtils.getThemeColorFromAttrOrRes(container.getContext(), R.attr.material_drawer_selected, R.color.material_drawer_selected);
        if (drawerItem instanceof PrimaryDrawerItem) {
            selected_color = ColorHolder.color(((PrimaryDrawerItem) drawerItem).getSelectedColor(), container.getContext(), R.attr.material_drawer_selected, R.color.material_drawer_selected);
        } else if (drawerItem instanceof SecondaryDrawerItem) {
            selected_color = ColorHolder.color(((SecondaryDrawerItem) drawerItem).getSelectedColor(), container.getContext(), R.attr.material_drawer_selected, R.color.material_drawer_selected);
        }

        View view = drawerItem.generateView(container.getContext(), container);
        view.setTag(drawerItem);

        if (drawerItem.isEnabled()) {
            UIUtils.setBackground(view, DrawerUIUtils.getSelectableBackground(container.getContext(), selected_color));
            view.setOnClickListener(onClickListener);
        }

        container.addView(view);

        //for android API 17 --> Padding not applied via xml
        DrawerUIUtils.setDrawerVerticalPadding(view);
    }
    //and really. don't ask about this. it won't set the padding if i don't set the padding for the container
    container.setPadding(0, 0, 0, 0);
}
 
Example #4
Source File: DrawerUtils.java    From MaterialDrawer-Xamarin with Apache License 2.0 5 votes vote down vote up
/**
 * helper to extend the layoutParams of the drawer
 *
 * @param params
 * @return
 */
public static DrawerLayout.LayoutParams processDrawerLayoutParams(DrawerBuilder drawer, DrawerLayout.LayoutParams params) {
    if (params != null) {
        if (drawer.mDrawerGravity != null && (drawer.mDrawerGravity == Gravity.RIGHT || drawer.mDrawerGravity == Gravity.END)) {
            params.rightMargin = 0;
            if (Build.VERSION.SDK_INT >= 17) {
                params.setMarginEnd(0);
            }

            params.leftMargin = drawer.mActivity.getResources().getDimensionPixelSize(R.dimen.material_drawer_margin);
            if (Build.VERSION.SDK_INT >= 17) {
                params.setMarginEnd(drawer.mActivity.getResources().getDimensionPixelSize(R.dimen.material_drawer_margin));
            }
        }

        if (drawer.mDisplayBelowStatusBar != null && drawer.mDisplayBelowStatusBar && Build.VERSION.SDK_INT >= 19) {
            params.topMargin = UIUtils.getStatusBarHeight(drawer.mActivity, true);
        }

        if (drawer.mDrawerWidth > -1) {
            params.width = drawer.mDrawerWidth;
        } else {
            params.width = DrawerUIUtils.getOptimalDrawerWidth(drawer.mActivity);
        }
    }

    return params;
}
 
Example #5
Source File: BaseSecondaryDrawerItem.java    From MaterialDrawer-Xamarin with Apache License 2.0 4 votes vote down vote up
/**
 * a helper method to have the logic for all secondaryDrawerItems only once
 *
 * @param viewHolder
 */
protected void bindViewHelper(BaseViewHolder viewHolder) {
    Context ctx = viewHolder.itemView.getContext();

    //set the identifier from the drawerItem here. It can be used to run tests
    viewHolder.itemView.setId(getIdentifier());

    //set the item selected if it is
    viewHolder.itemView.setSelected(isSelected());

    //get the correct color for the background
    int selectedColor = getSelectedColor(ctx);
    //get the correct color for the text
    int color = getColor(ctx);
    int selectedTextColor = getSelectedTextColor(ctx);
    //get the correct color for the icon
    int iconColor = getIconColor(ctx);
    int selectedIconColor = getSelectedIconColor(ctx);

    //set the background for the item
    UIUtils.setBackground(viewHolder.view, DrawerUIUtils.getSelectableBackground(ctx, selectedColor));
    //set the text for the name
    StringHolder.applyTo(this.getName(), viewHolder.name);

    //set the text for the description or hide
    StringHolder.applyToOrHide(this.getDescription(), viewHolder.description);

    //set the colors for textViews
    viewHolder.name.setTextColor(getTextColorStateList(color, selectedTextColor));

    //set the description text color
    ColorHolder.applyToOr(getDescriptionTextColor(), viewHolder.description, getTextColorStateList(getColor(ctx), getSelectedColor(ctx)));

    //define the typeface for our textViews
    if (getTypeface() != null) {
        viewHolder.name.setTypeface(getTypeface());
        viewHolder.description.setTypeface(getTypeface());
    }

    //get the drawables for our icon and set it
    Drawable icon = ImageHolder.decideIcon(getIcon(), ctx, iconColor, isIconTinted(), 1);
    Drawable selectedIcon = ImageHolder.decideIcon(getSelectedIcon(), ctx, selectedIconColor, isIconTinted(), 1);
    ImageHolder.applyMultiIconTo(icon, iconColor, selectedIcon, selectedIconColor, isIconTinted(), viewHolder.icon);

    //for android API 17 --> Padding not applied via xml
    DrawerUIUtils.setDrawerVerticalPadding(viewHolder.view, level);
}
 
Example #6
Source File: MiniDrawerItem.java    From MaterialDrawer-Xamarin with Apache License 2.0 4 votes vote down vote up
@Override
public void bindView(RecyclerView.ViewHolder holder) {
    Context ctx = holder.itemView.getContext();

    //get our viewHolder
    ViewHolder viewHolder = (ViewHolder) holder;

    //set the identifier from the drawerItem here. It can be used to run tests
    viewHolder.itemView.setId(getIdentifier());

    //set the item selected if it is
    viewHolder.itemView.setSelected(isSelected());

    //
    viewHolder.itemView.setTag(this);

    //get the correct color for the icon
    int iconColor = getIconColor(ctx);
    int selectedIconColor = getSelectedIconColor(ctx);

    if (mEnableSelectedBackground) {
        //get the correct color for the background
        int selectedColor = getSelectedColor(ctx);
        //set the background for the item
        UIUtils.setBackground(viewHolder.view, DrawerUIUtils.getSelectableBackground(ctx, selectedColor));
    }

    //set the text for the badge or hide
    boolean badgeVisible = StringHolder.applyToOrHide(mBadge, viewHolder.badge);
    //style the badge if it is visible
    if (badgeVisible) {
        mBadgeStyle.style(viewHolder.badge);
    }

    //get the drawables for our icon and set it
    Drawable icon = ImageHolder.decideIcon(getIcon(), ctx, iconColor, isIconTinted(), 1);
    Drawable selectedIcon = ImageHolder.decideIcon(getSelectedIcon(), ctx, selectedIconColor, isIconTinted(), 1);
    ImageHolder.applyMultiIconTo(icon, iconColor, selectedIcon, selectedIconColor, isIconTinted(), viewHolder.icon);

    //for android API 17 --> Padding not applied via xml
    int verticalPadding = ctx.getResources().getDimensionPixelSize(R.dimen.material_drawer_padding);
    int topBottomPadding = ctx.getResources().getDimensionPixelSize(R.dimen.material_mini_drawer_item_padding);
    viewHolder.itemView.setPadding(verticalPadding, topBottomPadding, verticalPadding, topBottomPadding);

    //call the onPostBindView method to trigger post bind view actions (like the listener to modify the item if required)
    onPostBindView(this, holder.itemView);
}
 
Example #7
Source File: BasePrimaryDrawerItem.java    From MaterialDrawer-Xamarin with Apache License 2.0 4 votes vote down vote up
/**
 * a helper method to have the logic for all secondaryDrawerItems only once
 *
 * @param viewHolder
 */
protected void bindViewHelper(BaseViewHolder viewHolder) {
    Context ctx = viewHolder.itemView.getContext();

    //set the identifier from the drawerItem here. It can be used to run tests
    viewHolder.itemView.setId(getIdentifier());

    //set the item selected if it is
    viewHolder.itemView.setSelected(isSelected());

    //
    viewHolder.itemView.setTag(this);

    //get the correct color for the background
    int selectedColor = getSelectedColor(ctx);
    //get the correct color for the text
    int color = getColor(ctx);
    int selectedTextColor = getSelectedTextColor(ctx);
    //get the correct color for the icon
    int iconColor = getIconColor(ctx);
    int selectedIconColor = getSelectedIconColor(ctx);

    //set the background for the item
    UIUtils.setBackground(viewHolder.view, DrawerUIUtils.getSelectableBackground(ctx, selectedColor));
    //set the text for the name
    StringHolder.applyTo(this.getName(), viewHolder.name);
    //set the text for the description or hide
    StringHolder.applyToOrHide(this.getDescription(), viewHolder.description);

    //set the colors for textViews
    viewHolder.name.setTextColor(getTextColorStateList(color, selectedTextColor));
    //set the description text color
    ColorHolder.applyToOr(getDescriptionTextColor(), viewHolder.description, getTextColorStateList(color, selectedTextColor));

    //define the typeface for our textViews
    if (getTypeface() != null) {
        viewHolder.name.setTypeface(getTypeface());
        viewHolder.description.setTypeface(getTypeface());
    }

    //get the drawables for our icon and set it
    Drawable icon = ImageHolder.decideIcon(getIcon(), ctx, iconColor, isIconTinted(), 1);
    Drawable selectedIcon = ImageHolder.decideIcon(getSelectedIcon(), ctx, selectedIconColor, isIconTinted(), 1);
    ImageHolder.applyMultiIconTo(icon, iconColor, selectedIcon, selectedIconColor, isIconTinted(), viewHolder.icon);

    //for android API 17 --> Padding not applied via xml
    DrawerUIUtils.setDrawerVerticalPadding(viewHolder.view, level);
}