Example usage for android.graphics.drawable Drawable mutate

List of usage examples for android.graphics.drawable Drawable mutate

Introduction

In this page you can find the example usage for android.graphics.drawable Drawable mutate.

Prototype

public @NonNull Drawable mutate() 

Source Link

Document

Make this drawable mutable.

Usage

From source file:org.ciasaboark.tacere.activity.fragment.EventDetailsFragment.java

private Drawable getColorizedIcon(RingerType ringerType) {
    Drawable colorizedIcon;
    switch (ringerType) {
    case NORMAL:/*from   ww w  .j  a  v a 2 s .c  o  m*/
        colorizedIcon = getResources().getDrawable(R.drawable.ic_state_normal);
        break;
    case VIBRATE:
        colorizedIcon = getResources().getDrawable(R.drawable.ic_state_vibrate);
        break;
    case SILENT:
        colorizedIcon = getResources().getDrawable(R.drawable.ic_state_silent);
        break;
    default:
        colorizedIcon = getResources().getDrawable(R.drawable.ic_state_ignore);
    }

    int color = getResources().getColor(R.color.dialog_icon_tint);
    if (event.getRingerType() == ringerType) {
        color = getResources().getColor(R.color.accent);
    }

    colorizedIcon.mutate().setColorFilter(color, PorterDuff.Mode.MULTIPLY);
    return colorizedIcon;
}

From source file:org.rebo.app.route.RouteSearch.java

public synchronized ExtendedMarkerItem putMarkerItem(ExtendedMarkerItem item, GHPoint p, int index,
        int titleResId, int markerResId, int iconResId, Integer colorResId) {

    if (item != null)
        mItineraryMarkers.removeItem(item);

    Drawable drawable = ContextCompat.getDrawable(activity, markerResId);
    if (colorResId != null && Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
        drawable = DrawableCompat.wrap(drawable);
        DrawableCompat.setTint(drawable.mutate(), ContextCompat.getColor(activity, colorResId));
    }/*from  w w  w . j  av  a  2  s. c om*/
    Bitmap bitmap = AndroidGraphics.drawableToBitmap(drawable);
    MarkerSymbol marker = new MarkerSymbol(bitmap, 0.5f, 1);

    ExtendedMarkerItem overlayItem = new ExtendedMarkerItem(App.res.getString(titleResId), "",
            convertGHPointToGeoPoint(p));

    overlayItem.setMarker(marker);

    if (iconResId != -1) {
        overlayItem.setImage(ContextCompat.getDrawable(activity, iconResId));
    }

    overlayItem.setRelatedObject(index);

    mItineraryMarkers.addItem(overlayItem);

    App.map.updateMap(true);

    //Start geocoding task to update the description of the marker with its address:
    new GeocodingTask().execute(overlayItem);

    return overlayItem;
}

From source file:android.support.v7ox.widget.AppCompatDrawableManager.java

private Drawable tintDrawable(@NonNull Context context, @DrawableRes int resId, boolean failIfNotKnown,
        @NonNull Drawable drawable) {
    final ColorStateList tintList = getTintList(context, resId);
    if (tintList != null) {
        // First mutate the Drawable, then wrap it and set the tint list
        if (DrawableUtils.canSafelyMutateDrawable(drawable)) {
            drawable = drawable.mutate();
        }//from ww  w . ja  va2  s . c o  m
        drawable = DrawableCompat.wrap(drawable);
        DrawableCompat.setTintList(drawable, tintList);

        // If there is a blending mode specified for the drawable, use it
        final PorterDuff.Mode tintMode = getTintMode(resId);
        if (tintMode != null) {
            DrawableCompat.setTintMode(drawable, tintMode);
        }
    } else if (resId == R.drawable.abc_cab_background_top_material_ox) {
        return new LayerDrawable(
                new Drawable[] { getDrawable(context, R.drawable.abc_cab_background_internal_bg_ox),
                        getDrawable(context, R.drawable.abc_cab_background_internal_bg_ox) });
    } else if (resId == R.drawable.abc_seekbar_track_material_ox) {
        LayerDrawable ld = (LayerDrawable) drawable;
        setPorterDuffColorFilter(ld.findDrawableByLayerId(android.R.id.background),
                ThemeUtils.getThemeAttrColor(context, R.attr.colorControlNormal_ox), DEFAULT_MODE);
        setPorterDuffColorFilter(ld.findDrawableByLayerId(android.R.id.secondaryProgress),
                ThemeUtils.getThemeAttrColor(context, R.attr.colorControlNormal_ox), DEFAULT_MODE);
        setPorterDuffColorFilter(ld.findDrawableByLayerId(android.R.id.progress),
                ThemeUtils.getThemeAttrColor(context, R.attr.colorControlActivated_ox), DEFAULT_MODE);
    } else if (resId == R.drawable.abc_ratingbar_indicator_material_ox
            || resId == R.drawable.abc_ratingbar_small_material_ox) {
        LayerDrawable ld = (LayerDrawable) drawable;
        setPorterDuffColorFilter(ld.findDrawableByLayerId(android.R.id.background),
                ThemeUtils.getDisabledThemeAttrColor(context, R.attr.colorControlNormal_ox), DEFAULT_MODE);
        setPorterDuffColorFilter(ld.findDrawableByLayerId(android.R.id.secondaryProgress),
                ThemeUtils.getThemeAttrColor(context, R.attr.colorControlActivated_ox), DEFAULT_MODE);
        setPorterDuffColorFilter(ld.findDrawableByLayerId(android.R.id.progress),
                ThemeUtils.getThemeAttrColor(context, R.attr.colorControlActivated_ox), DEFAULT_MODE);
    } else {
        final boolean tinted = tintDrawableUsingColorFilter(context, resId, drawable);
        if (!tinted && failIfNotKnown) {
            // If we didn't tint using a ColorFilter, and we're set to fail if we don't
            // know the id, return null
            drawable = null;
        }
    }
    return drawable;
}

From source file:com.dwdesign.tweetings.fragment.StatusFragment.java

@SuppressWarnings("deprecation")
public void displayStatus(final ParcelableStatus status) {
    mStatus = null;/* w  w w.ja  v a2s  . co m*/
    mImagesPreviewFragment.clear();
    if (status == null || getActivity() == null)
        return;
    mStatus = status;

    final String buffer_authorised = mPreferences.getString(PREFERENCE_KEY_BUFFERAPP_ACCESS_TOKEN, null);

    mMenuBar.inflate(R.menu.menu_status);

    final MenuItem bufferView = mMenuBar.getMenu().findItem(MENU_ADD_TO_BUFFER);
    if (bufferView != null) {
        if (buffer_authorised != null && !buffer_authorised.equals("")) {
            bufferView.setVisible(true);
        } else {
            bufferView.setVisible(false);
        }
    }
    setMenuForStatus(getActivity(), mMenuBar.getMenu(), status);
    mMenuBar.show();

    final boolean is_multiple_account_enabled = getActivatedAccountIds(getActivity()).length > 1;

    updateUserColor();

    mContentScroller
            .setBackgroundResource(is_multiple_account_enabled ? R.drawable.ic_label_account_nopadding : 0);
    if (is_multiple_account_enabled) {
        final Drawable d = mContentScroller.getBackground();
        if (d != null) {
            d.mutate().setColorFilter(getAccountColor(getActivity(), status.account_id),
                    PorterDuff.Mode.MULTIPLY);
            mContentScroller.invalidate();
        }
    }

    mNameView.setText(status.name);
    mScreenNameView.setText("@" + status.screen_name);
    mScreenNameView.setCompoundDrawablesWithIntrinsicBounds(
            getUserTypeIconRes(status.is_verified, status.is_protected), 0, 0, 0);
    mTextView.setText(status.text);

    final TwidereLinkify linkify = new TwidereLinkify(mTextView);
    linkify.setOnLinkClickListener(new OnLinkClickHandler(getActivity(), mAccountId));
    linkify.addAllLinks();
    final boolean is_reply = status.in_reply_to_status_id > 0;
    final String time = formatToLongTimeString(getActivity(), status.status_timestamp);
    final String strTime = "<a href=\"https://twitter.com/" + status.screen_name + "/status/"
            + String.valueOf(status.status_id) + "\">" + time + "</a>";
    final String source_html = status.source;
    if (!isNullOrEmpty(time) && !isNullOrEmpty(source_html)) {
        mTimeAndSourceView.setText(Html.fromHtml(getString(R.string.time_source, strTime, source_html)));
    } else if (isNullOrEmpty(time) && !isNullOrEmpty(source_html)) {
        mTimeAndSourceView.setText(Html.fromHtml(getString(R.string.source, source_html)));
    } else if (!isNullOrEmpty(time) && isNullOrEmpty(source_html)) {
        mTimeAndSourceView.setText(time);
    }
    mTimeAndSourceView.setMovementMethod(LinkMovementMethod.getInstance());
    mInReplyToView.setVisibility(is_reply ? View.VISIBLE : View.GONE);
    mConversationView.setVisibility(is_reply ? View.VISIBLE : View.GONE);
    if (is_reply) {
        mInReplyToView.setText(getString(R.string.in_reply_to, status.in_reply_to_screen_name));

        Display display = getActivity().getWindowManager().getDefaultDisplay();
        int width = display.getWidth(); // deprecated
        int height = display.getHeight(); // deprecated

        int heightOfConversation = (height / 2) - 48 - 44;
        ViewGroup.LayoutParams params = mConversationView.getLayoutParams();
        params.height = heightOfConversation;
        mConversationView.setLayoutParams(params);

        FragmentManager fragmentManager = getFragmentManager();
        FragmentTransaction ft = null;

        ft = fragmentManager.beginTransaction();

        final Fragment fragment = new ConversationFragment();
        final Bundle args = new Bundle();
        args.putLong(INTENT_KEY_ACCOUNT_ID, mAccountId);
        args.putLong(INTENT_KEY_STATUS_ID, status.in_reply_to_status_id);
        fragment.setArguments(args);

        ft.replace(R.id.conversation, fragment, getString(R.string.view_conversation));

        ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);
        ft.commit();

    }
    if (status.play_package != null) {
        mMarketView.setVisibility(View.VISIBLE);
        mPlayInfoTask = new PlayStoreInfoTask();
        mPlayInfoTask.execute();
    } else {
        mMarketView.setVisibility(View.GONE);
    }

    final boolean hires_profile_image = getResources().getBoolean(R.bool.hires_profile_image);
    final String preview_image = hires_profile_image
            ? getBiggerTwitterProfileImage(status.profile_image_url_string)
            : status.profile_image_url_string;
    mLazyImageLoader.displayProfileImage(mProfileImageView, preview_image);
    final List<ImageSpec> images = getImagesInStatus(status.text_html);
    mImagesPreviewContainer.setVisibility(images.size() > 0 ? View.VISIBLE : View.GONE);
    mImagesPreviewFragment.addAll(images);
    mImagesPreviewFragment.update();
    if (mLoadMoreAutomatically == true) {
        mImagesPreviewFragment.show();
    }
    mRetweetedStatusView.setVisibility(status.is_protected ? View.GONE : View.VISIBLE);
    if (status.retweet_id > 0) {
        final boolean display_name = mPreferences.getBoolean(PREFERENCE_KEY_DISPLAY_NAME, false);
        final String retweeted_by = display_name ? status.retweeted_by_name : status.retweeted_by_screen_name;
        mRetweetedStatusView.setText(status.retweet_count > 1
                ? getString(R.string.retweeted_by_with_count, retweeted_by, status.retweet_count - 1)
                : getString(R.string.retweeted_by, retweeted_by));
        mRetweetedStatusView.setVisibility(View.VISIBLE);
    } else {
        mRetweetedStatusView.setVisibility(View.GONE);
        mRetweetedStatusView.setText(R.string.users_retweeted_this);
    }
    mLocationView.setVisibility(ParcelableLocation.isValidLocation(status.location) ? View.VISIBLE : View.GONE);

    if (mLoadMoreAutomatically) {
        showFollowInfo(true);
        showLocationInfo(true);
    } else {
        mFollowIndicator.setVisibility(View.GONE);
    }
}

From source file:demo.design.TextInputLayout.java

private void updateEditTextBackground() {
    ensureBackgroundDrawableStateWorkaround();

    Drawable editTextBackground = mEditText.getBackground();
    if (editTextBackground == null) {
        return;/* w ww  . ja va 2 s.  com*/
    }

    if (android.support.v7.widget.DrawableUtils.canSafelyMutateDrawable(editTextBackground)) {
        editTextBackground = editTextBackground.mutate();
    }

    if (mErrorShown && mErrorView != null) {
        // Set a color filter of the error color
        editTextBackground.setColorFilter(AppCompatDrawableManager
                .getPorterDuffColorFilter(mErrorView.getCurrentTextColor(), PorterDuff.Mode.SRC_IN));
    } else if (mCounterOverflowed && mCounterView != null) {
        // Set a color filter of the counter color
        editTextBackground.setColorFilter(AppCompatDrawableManager
                .getPorterDuffColorFilter(mCounterView.getCurrentTextColor(), PorterDuff.Mode.SRC_IN));
    } else {
        // Else reset the color filter and refresh the drawable state so that the
        // normal tint is used
        editTextBackground.clearColorFilter();
        mEditText.refreshDrawableState();
    }
}

From source file:org.ciasaboark.tacere.view.EventListItem.java

private Drawable getRingerSourceIcon(RingerSource ringerSource) {
    Drawable icon;

    switch (ringerSource) {
    case DEFAULT:
        icon = context.getResources().getDrawable(R.drawable.blank);
        break;/*www . ja v  a  2s . com*/
    case CALENDAR:
        icon = context.getResources().getDrawable(R.drawable.calendar_calendar);
        break;
    case EVENT_SERIES:
        icon = context.getResources().getDrawable(R.drawable.calendar_series);
        break;
    case INSTANCE:
        icon = context.getResources().getDrawable(R.drawable.calendar_instance);
        break;
    default:
        icon = context.getResources().getDrawable(R.drawable.blank);
    }
    icon.mutate().setColorFilter(iconTintColor, PorterDuff.Mode.MULTIPLY);

    return icon;
}

From source file:com.android.contacts.list.DefaultContactBrowseListFragment.java

@Override
public void onPrepareOptionsMenu(Menu menu) {
    mOptionsMenuContactsAvailable = mContactsAvailable;
    if (!mOptionsMenuContactsAvailable) {
        return;// ww  w .j av a2 s . com
    }

    final boolean isSearchOrSelectionMode = mActionBarAdapter.isSearchMode()
            || mActionBarAdapter.isSelectionMode();
    makeMenuItemVisible(menu, R.id.menu_search, !isSearchOrSelectionMode);

    final boolean showSelectedContactOptions = mActionBarAdapter.isSelectionMode()
            && getSelectedContactIds().size() != 0;
    makeMenuItemVisible(menu, R.id.menu_share, showSelectedContactOptions);
    makeMenuItemVisible(menu, R.id.menu_delete, showSelectedContactOptions);
    final boolean showLinkContactsOptions = mActionBarAdapter.isSelectionMode()
            && getSelectedContactIds().size() > 1;
    makeMenuItemVisible(menu, R.id.menu_join, showLinkContactsOptions);

    // Debug options need to be visible even in search mode.
    makeMenuItemVisible(menu, R.id.export_database, mEnableDebugMenuOptions && hasExportIntentHandler());

    // Light tint the icons for normal mode, dark tint for search or selection mode.
    for (int i = 0; i < menu.size(); ++i) {
        final Drawable icon = menu.getItem(i).getIcon();
        if (icon != null && !isSearchOrSelectionMode) {
            icon.mutate().setColorFilter(ContextCompat.getColor(getContext(), R.color.actionbar_icon_color),
                    PorterDuff.Mode.SRC_ATOP);
        }
    }
}

From source file:org.mariotaku.twidere.fragment.support.UserProfileFragment.java

private void setMenu(final Menu menu) {
    final AsyncTwitterWrapper twitter = getTwitterWrapper();
    final ParcelableUser user = mUser;
    final Relationship relationship = mFriendship;
    if (twitter == null || user == null)
        return;/*from   w  w w  . ja v a  2 s.com*/
    final boolean isMyself = user.account_id == user.id;
    final boolean isFollowing = relationship != null && relationship.isSourceFollowingTarget();
    final boolean isProtected = user.is_protected;
    final boolean creatingFriendship = twitter.isCreatingFriendship(user.account_id, user.id);
    final boolean destroyingFriendship = twitter.isDestroyingFriendship(user.account_id, user.id);
    setMenuItemAvailability(menu, MENU_EDIT, isMyself);
    final MenuItem followItem = menu.findItem(MENU_FOLLOW);
    followItem.setVisible(!isMyself);
    final boolean shouldShowFollowItem = !creatingFriendship && !destroyingFriendship && !isMyself
            && relationship != null;
    followItem.setEnabled(shouldShowFollowItem);
    if (shouldShowFollowItem) {
        followItem.setTitle(
                isFollowing ? R.string.unfollow : isProtected ? R.string.send_follow_request : R.string.follow);
        followItem.setIcon(isFollowing ? R.drawable.ic_iconic_action_cancel : R.drawable.ic_iconic_action_add);
    } else {
        followItem.setTitle(null);
        followItem.setIcon(null);
    }
    if (user.id != user.account_id) {
        setMenuItemAvailability(menu, MENU_BLOCK, mFriendship != null);
        final MenuItem blockItem = menu.findItem(MENU_BLOCK);
        if (mFriendship != null && blockItem != null) {
            final Drawable blockIcon = blockItem.getIcon();
            if (mFriendship.isSourceBlockingTarget()) {
                blockItem.setTitle(R.string.unblock);
                blockIcon.mutate().setColorFilter(ThemeUtils.getUserThemeColor(getActivity()),
                        PorterDuff.Mode.MULTIPLY);
            } else {
                blockItem.setTitle(R.string.block);
                blockIcon.clearColorFilter();
            }
        }
        final boolean is_following_me = mFriendship != null && mFriendship.isTargetFollowingSource();
        setMenuItemAvailability(menu, MENU_SEND_DIRECT_MESSAGE, is_following_me);
    } else {
        setMenuItemAvailability(menu, MENU_MENTION, false);
        setMenuItemAvailability(menu, MENU_SEND_DIRECT_MESSAGE, false);
        setMenuItemAvailability(menu, MENU_BLOCK, false);
        setMenuItemAvailability(menu, MENU_REPORT_SPAM, false);
    }
    final Intent intent = new Intent(INTENT_ACTION_EXTENSION_OPEN_USER);
    final Bundle extras = new Bundle();
    extras.putParcelable(EXTRA_USER, user);
    intent.putExtras(extras);
    menu.removeGroup(MENU_GROUP_USER_EXTENSION);
    addIntentToMenu(getActivity(), menu, intent, MENU_GROUP_USER_EXTENSION);
}

From source file:org.mariotaku.twidere.fragment.UserProfileFragment.java

@Override
public void onClick(final View view) {
    if (getActivity() == null)
        return;//w  w w  . j  a  v  a2s .c  o  m
    switch (view.getId()) {
    case R.id.edit_follow: {
        if (mUser == null || mAccountId <= 0)
            return;
        if (mAccountId == mUserId) {
            final Bundle bundle = getArguments();
            final Intent intent = new Intent(INTENT_ACTION_EDIT_USER_PROFILE);
            intent.setClass(getActivity(), EditUserProfileActivity.class);
            if (bundle != null) {
                intent.putExtras(bundle);
            }
            startActivity(intent);
        } else {
            if (mUser.is_follow_request_sent)
                return;
            if (mFriendship.isSourceFollowingTarget()) {
                mPopupMenu = PopupMenu.getInstance(getActivity(), view);
                mPopupMenu.inflate(R.menu.action_user_profile_follow);
                mPopupMenu.setOnMenuItemClickListener(new OnMenuItemClickListener() {

                    @Override
                    public boolean onMenuItemClick(final MenuItem item) {
                        switch (item.getItemId()) {
                        case R.id.unfollow: {
                            mFollowProgress.setVisibility(View.VISIBLE);
                            mEditFollowButton.setVisibility(View.GONE);
                            mTwitterWrapper.destroyFriendship(mAccountId, mUser.user_id);
                            return true;
                        }
                        }
                        return false;
                    }
                });
                mPopupMenu.show();
            } else {
                mFollowProgress.setVisibility(View.VISIBLE);
                mEditFollowButton.setVisibility(View.GONE);
                mTwitterWrapper.createFriendship(mAccountId, mUser.user_id);
            }
        }
        break;
    }
    case R.id.retry: {
        getUserInfo(true);
        break;
    }
    case R.id.profile_image_container: {
        final Uri uri = Uri.parse(getOriginalTwitterProfileImage(mUser.profile_image_url));
        openImage(getActivity(), uri, false);
        break;
    }
    case R.id.tweets_container: {
        if (mUser == null)
            return;
        openUserTimeline(getActivity(), mAccountId, mUser.user_id, mUser.screen_name);
        break;
    }
    case R.id.followers_container: {
        if (mUser == null)
            return;
        openUserFollowers(getActivity(), mAccountId, mUser.user_id, mUser.screen_name);
        break;
    }
    case R.id.friends_container: {
        if (mUser == null)
            return;
        openUserFriends(getActivity(), mAccountId, mUser.user_id, mUser.screen_name);
        break;
    }
    case R.id.more_options: {
        if (mUser == null)
            return;
        mPopupMenu = PopupMenu.getInstance(getActivity(), view);
        mPopupMenu.inflate(R.menu.action_user_profile);
        final Menu menu = mPopupMenu.getMenu();
        if (mUser.user_id != mAccountId) {
            if (mFriendship == null)
                return;
            final MenuItem blockItem = menu.findItem(MENU_BLOCK);
            if (blockItem != null) {
                final Drawable blockIcon = blockItem.getIcon();
                if (mFriendship.isSourceBlockingTarget()) {
                    blockItem.setTitle(R.string.unblock);
                    blockIcon.mutate().setColorFilter(getResources().getColor(R.color.holo_blue_bright),
                            PorterDuff.Mode.MULTIPLY);
                } else {
                    blockItem.setTitle(R.string.block);
                    blockIcon.clearColorFilter();
                }
            }
            final MenuItem sendDirectMessageItem = menu.findItem(MENU_SEND_DIRECT_MESSAGE);
            if (sendDirectMessageItem != null) {
                sendDirectMessageItem.setVisible(mFriendship.isTargetFollowingSource());
            }
        } else {
            final int size = menu.size();
            for (int i = 0; i < size; i++) {
                final MenuItem item = menu.getItem(i);
                final int id = item.getItemId();
                item.setVisible(id == R.id.set_color_submenu || id == MENU_EXTENSIONS_SUBMENU);
            }
        }
        final MenuItem extensions = menu.findItem(MENU_EXTENSIONS_SUBMENU);
        if (extensions != null) {
            final Intent intent = new Intent(INTENT_ACTION_EXTENSION_OPEN_USER);
            final Bundle extras = new Bundle();
            extras.putParcelable(INTENT_KEY_USER, mUser);
            intent.putExtras(extras);
            addIntentToSubMenu(getActivity(), extensions.getSubMenu(), intent);
        }
        mPopupMenu.setOnMenuItemClickListener(this);
        mPopupMenu.show();
        break;
    }
    case R.id.name_container: {
        if (mUser == null || mAccountId != mUserId)
            return;
        startActivity(new Intent(getActivity(), EditUserProfileActivity.class));
        break;
    }
    }

}

From source file:com.tr4android.support.extension.widget.FlexibleToolbarLayout.java

/**
 * Set the drawable to use for the content scrim from resources. Providing null will disable
 * the scrim functionality.//  w ww.  j  a v  a2 s  .co m
 *
 * @param drawable the drawable to display
 * @attr ref R.styleable#FlexibleToolbarLayout_contentScrimColor
 * @see #getContentScrim()
 */
public void setContentScrim(@Nullable Drawable drawable) {
    if (mContentScrim != drawable) {
        if (mContentScrim != null) {
            mContentScrim.setCallback(null);
        }
        if (drawable != null) {
            mContentScrim = drawable.mutate();
            drawable.setBounds(0, 0, getWidth(), getHeight());
            drawable.setCallback(this);
            drawable.setAlpha(mScrimAlpha);
        } else {
            mContentScrim = null;
        }
        ViewCompat.postInvalidateOnAnimation(this);
    }
}