Search in sources :

Example 21 with InsetDrawable

use of android.graphics.drawable.InsetDrawable in project Signal-Android by WhisperSystems.

the class AddGroupDetailsFragment method onViewCreated.

@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
    create = view.findViewById(R.id.create);
    name = view.findViewById(R.id.name);
    toolbar = view.findViewById(R.id.toolbar);
    disappearingMessagesRow = view.findViewById(R.id.group_disappearing_messages_row);
    setCreateEnabled(false, false);
    GroupMemberListView members = view.findViewById(R.id.member_list);
    ImageView avatar = view.findViewById(R.id.group_avatar);
    View mmsWarning = view.findViewById(R.id.mms_warning);
    LearnMoreTextView gv2Warning = view.findViewById(R.id.gv2_warning);
    View addLater = view.findViewById(R.id.add_later);
    TextView disappearingMessageValue = view.findViewById(R.id.group_disappearing_messages_value);
    members.initializeAdapter(getViewLifecycleOwner());
    avatarPlaceholder = VectorDrawableCompat.create(getResources(), R.drawable.ic_camera_outline_32_ultramarine, requireActivity().getTheme());
    if (savedInstanceState == null) {
        avatar.setImageDrawable(new InsetDrawable(avatarPlaceholder, ViewUtil.dpToPx(AVATAR_PLACEHOLDER_INSET_DP)));
    }
    initializeViewModel();
    avatar.setOnClickListener(v -> showAvatarPicker());
    members.setRecipientClickListener(this::handleRecipientClick);
    EditTextUtil.addGraphemeClusterLimitFilter(name, FeatureFlags.getMaxGroupNameGraphemeLength());
    name.addTextChangedListener(new AfterTextChanged(editable -> viewModel.setName(editable.toString())));
    toolbar.setNavigationOnClickListener(unused -> callback.onNavigationButtonPressed());
    create.setOnClickListener(v -> handleCreateClicked());
    viewModel.getMembers().observe(getViewLifecycleOwner(), list -> {
        addLater.setVisibility(list.isEmpty() ? View.VISIBLE : View.GONE);
        members.setMembers(list);
    });
    viewModel.getCanSubmitForm().observe(getViewLifecycleOwner(), isFormValid -> setCreateEnabled(isFormValid, true));
    viewModel.getIsMms().observe(getViewLifecycleOwner(), isMms -> {
        disappearingMessagesRow.setVisibility(isMms ? View.GONE : View.VISIBLE);
        mmsWarning.setVisibility(isMms ? View.VISIBLE : View.GONE);
        name.setHint(isMms ? R.string.AddGroupDetailsFragment__group_name_optional : R.string.AddGroupDetailsFragment__group_name_required);
        toolbar.setTitle(isMms ? R.string.AddGroupDetailsFragment__create_group : R.string.AddGroupDetailsFragment__name_this_group);
    });
    viewModel.getNonGv2CapableMembers().observe(getViewLifecycleOwner(), nonGv2CapableMembers -> {
        gv2Warning.setVisibility(nonGv2CapableMembers.isEmpty() ? View.GONE : View.VISIBLE);
        gv2Warning.setText(requireContext().getResources().getQuantityString(R.plurals.AddGroupDetailsFragment__d_members_do_not_support_new_groups_so_this_group_cannot_be_created, nonGv2CapableMembers.size(), nonGv2CapableMembers.size()));
        gv2Warning.setLearnMoreVisible(true);
        gv2Warning.setOnLinkClickListener(v -> NonGv2MemberDialog.showNonGv2Members(requireContext(), getViewLifecycleOwner(), nonGv2CapableMembers));
    });
    viewModel.getAvatar().observe(getViewLifecycleOwner(), avatarBytes -> {
        if (avatarBytes == null) {
            avatar.setImageDrawable(new InsetDrawable(avatarPlaceholder, ViewUtil.dpToPx(AVATAR_PLACEHOLDER_INSET_DP)));
        } else {
            GlideApp.with(this).load(avatarBytes).circleCrop().skipMemoryCache(true).diskCacheStrategy(DiskCacheStrategy.NONE).into(avatar);
        }
    });
    viewModel.getDisappearingMessagesTimer().observe(getViewLifecycleOwner(), timer -> disappearingMessageValue.setText(ExpirationUtil.getExpirationDisplayValue(requireContext(), timer)));
    disappearingMessagesRow.setOnClickListener(v -> {
        startActivityForResult(RecipientDisappearingMessagesActivity.forCreateGroup(requireContext(), viewModel.getDisappearingMessagesTimer().getValue()), REQUEST_DISAPPEARING_TIMER);
    });
    name.requestFocus();
    getParentFragmentManager().setFragmentResultListener(AvatarPickerFragment.REQUEST_KEY_SELECT_AVATAR, getViewLifecycleOwner(), (key, bundle) -> handleMediaResult(bundle));
}
Also used : SignalStore(org.thoughtcrime.securesms.keyvalue.SignalStore) Arrays(java.util.Arrays) Bundle(android.os.Bundle) EditTextUtil(org.signal.core.util.EditTextUtil) NonNull(androidx.annotation.NonNull) AvatarPickerFragment(org.thoughtcrime.securesms.avatar.picker.AvatarPickerFragment) MaterialAlertDialogBuilder(com.google.android.material.dialog.MaterialAlertDialogBuilder) ImageView(android.widget.ImageView) ViewUtil(org.thoughtcrime.securesms.util.ViewUtil) Drawable(android.graphics.drawable.Drawable) R(org.thoughtcrime.securesms.R) VectorDrawableCompat(androidx.vectordrawable.graphics.drawable.VectorDrawableCompat) SafeNavigation(org.thoughtcrime.securesms.util.navigation.SafeNavigation) RecipientId(org.thoughtcrime.securesms.recipients.RecipientId) Media(org.thoughtcrime.securesms.mediasend.Media) View(android.view.View) ViewModelProviders(androidx.lifecycle.ViewModelProviders) Recipient(org.thoughtcrime.securesms.recipients.Recipient) DecryptableStreamUriLoader(org.thoughtcrime.securesms.mms.DecryptableStreamUriLoader) RecipientDisappearingMessagesActivity(org.thoughtcrime.securesms.recipients.ui.disappearingmessages.RecipientDisappearingMessagesActivity) ViewGroup(android.view.ViewGroup) Objects(java.util.Objects) StringRes(androidx.annotation.StringRes) FeatureFlags(org.thoughtcrime.securesms.util.FeatureFlags) List(java.util.List) TextView(android.widget.TextView) Nullable(androidx.annotation.Nullable) Toolbar(androidx.appcompat.widget.Toolbar) ExpireTimerSettingsFragment(org.thoughtcrime.securesms.components.settings.app.privacy.expire.ExpireTimerSettingsFragment) BitmapUtil(org.thoughtcrime.securesms.util.BitmapUtil) GlideApp(org.thoughtcrime.securesms.mms.GlideApp) Context(android.content.Context) Intent(android.content.Intent) ExpirationUtil(org.thoughtcrime.securesms.util.ExpirationUtil) AvatarSelectionActivity(org.thoughtcrime.securesms.mediasend.AvatarSelectionActivity) GroupMemberListView(org.thoughtcrime.securesms.groups.ui.GroupMemberListView) Toast(android.widget.Toast) DiskCacheStrategy(com.bumptech.glide.load.engine.DiskCacheStrategy) CircularProgressButton(com.dd.CircularProgressButton) CustomTarget(com.bumptech.glide.request.target.CustomTarget) InsetDrawable(android.graphics.drawable.InsetDrawable) AvatarHelper(org.thoughtcrime.securesms.profiles.AvatarHelper) LayoutInflater(android.view.LayoutInflater) AfterTextChanged(org.thoughtcrime.securesms.util.text.AfterTextChanged) NonGv2MemberDialog(org.thoughtcrime.securesms.groups.ui.creategroup.dialogs.NonGv2MemberDialog) Bitmap(android.graphics.Bitmap) Transition(com.bumptech.glide.request.transition.Transition) LearnMoreTextView(org.thoughtcrime.securesms.util.views.LearnMoreTextView) Navigation(androidx.navigation.Navigation) LoggingFragment(org.thoughtcrime.securesms.LoggingFragment) Activity(android.app.Activity) EditText(android.widget.EditText) LearnMoreTextView(org.thoughtcrime.securesms.util.views.LearnMoreTextView) TextView(android.widget.TextView) LearnMoreTextView(org.thoughtcrime.securesms.util.views.LearnMoreTextView) InsetDrawable(android.graphics.drawable.InsetDrawable) ImageView(android.widget.ImageView) ImageView(android.widget.ImageView) View(android.view.View) TextView(android.widget.TextView) GroupMemberListView(org.thoughtcrime.securesms.groups.ui.GroupMemberListView) LearnMoreTextView(org.thoughtcrime.securesms.util.views.LearnMoreTextView) AfterTextChanged(org.thoughtcrime.securesms.util.text.AfterTextChanged) GroupMemberListView(org.thoughtcrime.securesms.groups.ui.GroupMemberListView)

Example 22 with InsetDrawable

use of android.graphics.drawable.InsetDrawable in project RespawnIRC-Android by FranckRJ.

the class ImageDownloader method buildInsetDrawableForAspectRatio.

public Drawable buildInsetDrawableForAspectRatio(Drawable drawableToChange, boolean isSetToDefaultSize) {
    int drawableWidth = drawableToChange.getIntrinsicWidth();
    int drawableHeight = drawableToChange.getIntrinsicHeight();
    if ((drawableHeight / (double) drawableWidth) < ((imagesHeight / (double) imagesWidth) - 0.005)) {
        int verticalMargin = Utils.roundToInt(drawableWidth * (imagesHeight / (double) imagesWidth)) - drawableHeight;
        if (isSetToDefaultSize) {
            verticalMargin *= (imagesHeight / (double) (verticalMargin + drawableHeight));
        }
        return (new InsetDrawable(drawableToChange, 0, verticalMargin / 2, 0, verticalMargin / 2));
    } else if ((drawableHeight / (double) drawableWidth) > ((imagesHeight / (double) imagesWidth) + 0.005)) {
        int horizontalMargin = Utils.roundToInt(drawableHeight / (imagesHeight / (double) imagesWidth)) - drawableWidth;
        if (isSetToDefaultSize) {
            horizontalMargin *= (imagesWidth / (double) (horizontalMargin + drawableWidth));
        }
        return (new InsetDrawable(drawableToChange, horizontalMargin / 2, 0, horizontalMargin / 2, 0));
    } else {
        return drawableToChange;
    }
}
Also used : InsetDrawable(android.graphics.drawable.InsetDrawable)

Example 23 with InsetDrawable

use of android.graphics.drawable.InsetDrawable in project PocketHub by pockethub.

the class AvatarLoader method bind.

/**
     * Sets the logo on the {@link ActionBar} to the user's avatar.
     *
     * @param actionBar     An ActionBar object on which you're placing the user's avatar.
     * @param userReference An AtomicReference that points to the desired user.
     * @return this helper
     */
public void bind(final ActionBar actionBar, final AtomicReference<User> userReference) {
    if (userReference == null) {
        return;
    }
    final User user = userReference.get();
    if (user == null) {
        return;
    }
    String avatarUrl = user.avatarUrl();
    if (TextUtils.isEmpty(avatarUrl)) {
        return;
    }
    // Remove the URL params as they are not needed and break cache
    if (avatarUrl.contains("?") && !avatarUrl.contains("gravatar")) {
        avatarUrl = avatarUrl.substring(0, avatarUrl.indexOf("?"));
    }
    final String url = avatarUrl;
    new FetchAvatarTask(context) {

        @Override
        public BitmapDrawable call() throws Exception {
            Bitmap image = Bitmap.createScaledBitmap(p.load(url).get(), avatarSize, avatarSize, false);
            return new BitmapDrawable(context.getResources(), ImageUtils.roundCorners(image, cornerRadius));
        }

        @Override
        protected void onSuccess(BitmapDrawable image) throws Exception {
            // compute inset in pixels
            int insetPx = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 8, context.getResources().getDisplayMetrics());
            actionBar.setLogo(new InsetDrawable(image, 0, 0, insetPx, 0));
        }
    }.execute();
}
Also used : Bitmap(android.graphics.Bitmap) User(com.meisolsson.githubsdk.model.User) InsetDrawable(android.graphics.drawable.InsetDrawable) BitmapDrawable(android.graphics.drawable.BitmapDrawable) IOException(java.io.IOException)

Example 24 with InsetDrawable

use of android.graphics.drawable.InsetDrawable in project wire-android by wireapp.

the class AddPhoneNumberPreferenceDialogFragment method clearColorFilter.

// from TextInputLayout
@TargetApi(Build.VERSION_CODES.KITKAT)
private static void clearColorFilter(@NonNull Drawable drawable) {
    drawable.clearColorFilter();
    if (Build.VERSION.SDK_INT == 21 || Build.VERSION.SDK_INT == 22) {
        // children manually
        if (drawable instanceof InsetDrawable) {
            clearColorFilter(((InsetDrawable) drawable).getDrawable());
        } else if (drawable instanceof DrawableWrapper) {
            clearColorFilter(((DrawableWrapper) drawable).getWrappedDrawable());
        } else if (drawable instanceof DrawableContainer) {
            final DrawableContainer container = (DrawableContainer) drawable;
            final DrawableContainer.DrawableContainerState state = (DrawableContainer.DrawableContainerState) container.getConstantState();
            if (state != null) {
                for (int i = 0, count = state.getChildCount(); i < count; i++) {
                    clearColorFilter(state.getChild(i));
                }
            }
        }
    }
}
Also used : DrawableWrapper(android.support.v4.graphics.drawable.DrawableWrapper) InsetDrawable(android.graphics.drawable.InsetDrawable) DrawableContainer(android.graphics.drawable.DrawableContainer) SuppressLint(android.annotation.SuppressLint) TargetApi(android.annotation.TargetApi)

Example 25 with InsetDrawable

use of android.graphics.drawable.InsetDrawable in project android_packages_apps_Settings by LineageOS.

the class MusicViewHolderController method setupView.

@Override
public void setupView(AppViewHolder holder) {
    holder.appIcon.setImageDrawable(new InsetDrawable(mContext.getDrawable(R.drawable.ic_headset_24dp), INSET_SIZE));
    holder.appName.setText(mContext.getText(R.string.audio_files_title));
    holder.summary.setText(Formatter.formatFileSize(mContext, mMusicSize));
}
Also used : InsetDrawable(android.graphics.drawable.InsetDrawable)

Aggregations

InsetDrawable (android.graphics.drawable.InsetDrawable)37 Drawable (android.graphics.drawable.Drawable)15 LayerDrawable (android.graphics.drawable.LayerDrawable)6 StateListDrawable (android.graphics.drawable.StateListDrawable)5 ImageView (android.widget.ImageView)5 TextView (android.widget.TextView)5 Resources (android.content.res.Resources)4 ColorDrawable (android.graphics.drawable.ColorDrawable)4 GradientDrawable (android.graphics.drawable.GradientDrawable)4 NonNull (androidx.annotation.NonNull)4 Context (android.content.Context)3 TypedArray (android.content.res.TypedArray)3 Bitmap (android.graphics.Bitmap)3 ShapeDrawable (android.graphics.drawable.ShapeDrawable)3 RoundRectShape (android.graphics.drawable.shapes.RoundRectShape)3 View (android.view.View)3 Attributes (com.cengalabs.flatui.Attributes)3 Activity (android.app.Activity)2 Intent (android.content.Intent)2 Typeface (android.graphics.Typeface)2