List of usage examples for android.graphics.drawable Drawable mutate
public @NonNull Drawable mutate()
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); } }