Search in sources :

Example 26 with Drawable

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

the class ColorPreference method setColorViewValue.

private static void setColorViewValue(View view, int color, boolean selected) {
    if (view instanceof ImageView) {
        ImageView imageView = (ImageView) view;
        Resources res = imageView.getContext().getResources();
        Drawable currentDrawable = imageView.getDrawable();
        GradientDrawable colorChoiceDrawable;
        if (currentDrawable instanceof GradientDrawable) {
            // Reuse drawable
            colorChoiceDrawable = (GradientDrawable) currentDrawable;
        } else {
            colorChoiceDrawable = new GradientDrawable();
            colorChoiceDrawable.setShape(GradientDrawable.OVAL);
        }
        // Set stroke to dark version of color
        //      int darkenedColor = Color.rgb(
        //          Color.red(color) * 192 / 256,
        //          Color.green(color) * 192 / 256,
        //          Color.blue(color) * 192 / 256);
        colorChoiceDrawable.setColor(color);
        //      colorChoiceDrawable.setStroke((int) TypedValue.applyDimension(
        //          TypedValue.COMPLEX_UNIT_DIP, 2, res.getDisplayMetrics()), darkenedColor);
        Drawable drawable = colorChoiceDrawable;
        if (selected) {
            BitmapDrawable checkmark = (BitmapDrawable) res.getDrawable(R.drawable.check);
            checkmark.setGravity(Gravity.CENTER);
            drawable = new LayerDrawable(new Drawable[] { colorChoiceDrawable, checkmark });
        }
        imageView.setImageDrawable(drawable);
    } else if (view instanceof TextView) {
        ((TextView) view).setTextColor(color);
    }
}
Also used : LayerDrawable(android.graphics.drawable.LayerDrawable) LayerDrawable(android.graphics.drawable.LayerDrawable) BitmapDrawable(android.graphics.drawable.BitmapDrawable) Drawable(android.graphics.drawable.Drawable) GradientDrawable(android.graphics.drawable.GradientDrawable) TextView(android.widget.TextView) ImageView(android.widget.ImageView) Resources(android.content.res.Resources) BitmapDrawable(android.graphics.drawable.BitmapDrawable) GradientDrawable(android.graphics.drawable.GradientDrawable)

Example 27 with Drawable

use of android.graphics.drawable.Drawable in project FloatingStickies by MohammadAdib.

the class StandOutWindow method onTouchHandleMove.

@SuppressWarnings("deprecation")
public boolean onTouchHandleMove(final int id, final Window window, View view, MotionEvent event) {
    try {
        StandOutLayoutParams params = window.getLayoutParams();
        // how much you have to move in either direction in order for the
        // gesture to be a move and not tap
        int totalDeltaX = window.touchInfo.lastX - window.touchInfo.firstX;
        int totalDeltaY = window.touchInfo.lastY - window.touchInfo.firstY;
        Animation mFadeOut = AnimationUtils.loadAnimation(this, R.anim.dock);
        final Animation mFadeOut2 = AnimationUtils.loadAnimation(this, android.R.anim.fade_out);
        final Animation mFadeIn = AnimationUtils.loadAnimation(this, android.R.anim.slide_in_left);
        final Animation mFadeIn2 = AnimationUtils.loadAnimation(this, R.anim.show);
        final Animation mFadeInG = AnimationUtils.loadAnimation(this, android.R.anim.fade_in);
        final Animation mFadeOutG = AnimationUtils.loadAnimation(this, android.R.anim.fade_out);
        final View win = window.findViewById(R.id.window);
        final ImageView dockIcon = (ImageView) window.findViewById(R.id.preview);
        final ImageView dockGlow = (ImageView) window.findViewById(R.id.dockglow);
        final Drawable drawable = getResources().getDrawable(R.drawable.pencil);
        FrameLayout body = (FrameLayout) window.findViewById(R.id.body);
        dockIcon.setImageDrawable(getResources().getDrawable((Integer) body.getTag()));
        switch(event.getAction()) {
            case MotionEvent.ACTION_DOWN:
                window.touchInfo.lastX = (int) event.getRawX();
                window.touchInfo.lastY = (int) event.getRawY();
                window.touchInfo.firstX = window.touchInfo.lastX;
                window.touchInfo.firstY = window.touchInfo.lastY;
                break;
            case MotionEvent.ACTION_MOVE:
                int deltaX = (int) event.getRawX() - window.touchInfo.lastX;
                int deltaY = (int) event.getRawY() - window.touchInfo.lastY;
                window.touchInfo.lastX = (int) event.getRawX();
                window.touchInfo.lastY = (int) event.getRawY();
                if (window.touchInfo.moving || Math.abs(totalDeltaX) >= params.threshold || Math.abs(totalDeltaY) >= params.threshold) {
                    window.touchInfo.moving = true;
                    // if window is moveable
                    if (Utils.isSet(window.flags, StandOutFlags.FLAG_BODY_MOVE_ENABLE)) {
                        // update the position of the window
                        if (event.getPointerCount() == 1) {
                            params.x += deltaX;
                            params.y += deltaY;
                        }
                        window.edit().setPosition(params.x, params.y).commit();
                        if (window.getWidth() < mWindowManager.getDefaultDisplay().getWidth()) {
                            if (params.x > 0 && window.touchEdge && window.fullSize) {
                                dockGlow.startAnimation(mFadeOutG);
                                dockGlow.setVisibility(View.GONE);
                                window.touchEdge = false;
                            }
                            if (params.x > pxFromDp(8)) {
                                window.touchEdge = false;
                                // Attempt at undocking.
                                if (!window.fullSize) {
                                    window.fullSize = true;
                                    undocking = true;
                                    dockIcon.setVisibility(View.GONE);
                                    mFadeOut2.setAnimationListener(new AnimationListener() {

                                        @Override
                                        public void onAnimationStart(Animation animation) {
                                            Log.d("FloatingFolder", "Animation started");
                                        }

                                        @Override
                                        public void onAnimationRepeat(Animation animation) {
                                        }

                                        @Override
                                        public void onAnimationEnd(Animation animation) {
                                            Log.d("FloatingFolder", "Animation ended");
                                            // post so that screenshot
                                            // is
                                            // invisible
                                            // before anything else
                                            // happens
                                            dockIcon.post(new Runnable() {

                                                @Override
                                                public void run() {
                                                    StandOutLayoutParams params = window.getLayoutParams();
                                                    Drawable drawable = dockIcon.getDrawable();
                                                    dockIcon.setImageDrawable(null);
                                                    params.y = params.y - window.dockH / 2 + drawable.getIntrinsicHeight() / 2;
                                                    params.width = window.dockW;
                                                    params.height = window.dockH;
                                                    updateViewLayout(id, params);
                                                    win.setVisibility(View.VISIBLE);
                                                    gracePeriod = System.currentTimeMillis();
                                                    win.startAnimation(mFadeIn2);
                                                    undocking = false;
                                                }
                                            });
                                        }
                                    });
                                    gracePeriod = System.currentTimeMillis();
                                    dockIcon.startAnimation(mFadeOut2);
                                }
                            } else {
                                if (!window.touchEdge && params.x <= 0) {
                                    dockGlow.setVisibility(View.VISIBLE);
                                    dockGlow.startAnimation(mFadeInG);
                                    window.touchEdge = true;
                                }
                            }
                        }
                    } else {
                        window.edit().setPosition(params.x, params.y).commit();
                    }
                }
                break;
            case MotionEvent.ACTION_UP:
                if (window.fullSize && window.getWidth() < mWindowManager.getDefaultDisplay().getWidth()) {
                    // Attempt at docking
                    if (params.x <= 0 && !undocking) {
                        window.dockH = window.getHeight();
                        window.dockW = window.getWidth();
                        window.fullSize = false;
                        mFadeOut.setAnimationListener(new AnimationListener() {

                            @Override
                            public void onAnimationStart(Animation animation) {
                            }

                            @Override
                            public void onAnimationRepeat(Animation animation) {
                            }

                            @Override
                            public void onAnimationEnd(Animation animation) {
                                dockGlow.setVisibility(View.GONE);
                                win.setVisibility(View.GONE);
                                // post so that the folder is invisible
                                // before
                                // anything else happens
                                dockIcon.post(new Runnable() {

                                    @Override
                                    public void run() {
                                        StandOutLayoutParams params = window.getLayoutParams();
                                        params.y = params.y + params.height / 2 - pxFromDp(40) / 2;
                                        params.width = pxFromDp(40);
                                        params.height = pxFromDp(40);
                                        updateViewLayout(id, params);
                                        dockIcon.setVisibility(View.VISIBLE);
                                        dockIcon.startAnimation(mFadeIn);
                                    }
                                });
                            }
                        });
                        gracePeriod = System.currentTimeMillis();
                        win.startAnimation(mFadeOut);
                    }
                    window.touchInfo.moving = false;
                    onMove(id, window, view, event);
                    break;
                }
                if (!window.fullSize && params.x > 0 && params.x <= pxFromDp(8)) {
                    window.edit().setPosition(0, params.y).commit();
                }
                // bring to front on tap
                boolean tap = Math.abs(totalDeltaX) < params.threshold && Math.abs(totalDeltaY) < params.threshold;
                if (tap) {
                    StandOutWindow.this.bringToFront(id);
                }
        }
    } catch (Exception e) {
    }
    return true;
}
Also used : Drawable(android.graphics.drawable.Drawable) ImageView(android.widget.ImageView) View(android.view.View) FrameLayout(android.widget.FrameLayout) Animation(android.view.animation.Animation) ImageView(android.widget.ImageView) AnimationListener(android.view.animation.Animation.AnimationListener)

Example 28 with Drawable

use of android.graphics.drawable.Drawable in project material-dialogs by afollestad.

the class CircleView method update.

private void update(@ColorInt int color) {
    innerPaint.setColor(color);
    outerPaint.setColor(shiftColorDown(color));
    Drawable selector = createSelector(color);
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
        int[][] states = new int[][] { new int[] { android.R.attr.state_pressed } };
        int[] colors = new int[] { shiftColorUp(color) };
        ColorStateList rippleColors = new ColorStateList(states, colors);
        setForeground(new RippleDrawable(rippleColors, selector, null));
    } else {
        setForeground(selector);
    }
}
Also used : ShapeDrawable(android.graphics.drawable.ShapeDrawable) Drawable(android.graphics.drawable.Drawable) StateListDrawable(android.graphics.drawable.StateListDrawable) RippleDrawable(android.graphics.drawable.RippleDrawable) ColorStateList(android.content.res.ColorStateList) RippleDrawable(android.graphics.drawable.RippleDrawable)

Example 29 with Drawable

use of android.graphics.drawable.Drawable in project material-dialogs by afollestad.

the class DialogInit method init.

@SuppressWarnings("ConstantConditions")
@UiThread
public static void init(final MaterialDialog dialog) {
    final MaterialDialog.Builder builder = dialog.builder;
    // Set cancelable flag and dialog background color
    dialog.setCancelable(builder.cancelable);
    dialog.setCanceledOnTouchOutside(builder.canceledOnTouchOutside);
    if (builder.backgroundColor == 0) {
        builder.backgroundColor = DialogUtils.resolveColor(builder.context, R.attr.md_background_color, DialogUtils.resolveColor(dialog.getContext(), R.attr.colorBackgroundFloating));
    }
    if (builder.backgroundColor != 0) {
        GradientDrawable drawable = new GradientDrawable();
        drawable.setCornerRadius(builder.context.getResources().getDimension(R.dimen.md_bg_corner_radius));
        drawable.setColor(builder.backgroundColor);
        dialog.getWindow().setBackgroundDrawable(drawable);
    }
    // Retrieve color theme attributes
    if (!builder.positiveColorSet) {
        builder.positiveColor = DialogUtils.resolveActionTextColorStateList(builder.context, R.attr.md_positive_color, builder.positiveColor);
    }
    if (!builder.neutralColorSet) {
        builder.neutralColor = DialogUtils.resolveActionTextColorStateList(builder.context, R.attr.md_neutral_color, builder.neutralColor);
    }
    if (!builder.negativeColorSet) {
        builder.negativeColor = DialogUtils.resolveActionTextColorStateList(builder.context, R.attr.md_negative_color, builder.negativeColor);
    }
    if (!builder.widgetColorSet) {
        builder.widgetColor = DialogUtils.resolveColor(builder.context, R.attr.md_widget_color, builder.widgetColor);
    }
    // Retrieve default title/content colors
    if (!builder.titleColorSet) {
        final int titleColorFallback = DialogUtils.resolveColor(dialog.getContext(), android.R.attr.textColorPrimary);
        builder.titleColor = DialogUtils.resolveColor(builder.context, R.attr.md_title_color, titleColorFallback);
    }
    if (!builder.contentColorSet) {
        final int contentColorFallback = DialogUtils.resolveColor(dialog.getContext(), android.R.attr.textColorSecondary);
        builder.contentColor = DialogUtils.resolveColor(builder.context, R.attr.md_content_color, contentColorFallback);
    }
    if (!builder.itemColorSet) {
        builder.itemColor = DialogUtils.resolveColor(builder.context, R.attr.md_item_color, builder.contentColor);
    }
    // Retrieve references to views
    dialog.title = (TextView) dialog.view.findViewById(R.id.md_title);
    dialog.icon = (ImageView) dialog.view.findViewById(R.id.md_icon);
    dialog.titleFrame = dialog.view.findViewById(R.id.md_titleFrame);
    dialog.content = (TextView) dialog.view.findViewById(R.id.md_content);
    dialog.recyclerView = (RecyclerView) dialog.view.findViewById(R.id.md_contentRecyclerView);
    dialog.checkBoxPrompt = (CheckBox) dialog.view.findViewById(R.id.md_promptCheckbox);
    // Button views initially used by checkIfStackingNeeded()
    dialog.positiveButton = (MDButton) dialog.view.findViewById(R.id.md_buttonDefaultPositive);
    dialog.neutralButton = (MDButton) dialog.view.findViewById(R.id.md_buttonDefaultNeutral);
    dialog.negativeButton = (MDButton) dialog.view.findViewById(R.id.md_buttonDefaultNegative);
    // Don't allow the submit button to not be shown for input dialogs
    if (builder.inputCallback != null && builder.positiveText == null) {
        builder.positiveText = builder.context.getText(android.R.string.ok);
    }
    // Set up the initial visibility of action buttons based on whether or not text was set
    dialog.positiveButton.setVisibility(builder.positiveText != null ? View.VISIBLE : View.GONE);
    dialog.neutralButton.setVisibility(builder.neutralText != null ? View.VISIBLE : View.GONE);
    dialog.negativeButton.setVisibility(builder.negativeText != null ? View.VISIBLE : View.GONE);
    // Set up the focus of action buttons
    dialog.positiveButton.setFocusable(true);
    dialog.neutralButton.setFocusable(true);
    dialog.negativeButton.setFocusable(true);
    if (builder.positiveFocus) {
        dialog.positiveButton.requestFocus();
    }
    if (builder.neutralFocus) {
        dialog.neutralButton.requestFocus();
    }
    if (builder.negativeFocus) {
        dialog.negativeButton.requestFocus();
    }
    // Setup icon
    if (builder.icon != null) {
        dialog.icon.setVisibility(View.VISIBLE);
        dialog.icon.setImageDrawable(builder.icon);
    } else {
        Drawable d = DialogUtils.resolveDrawable(builder.context, R.attr.md_icon);
        if (d != null) {
            dialog.icon.setVisibility(View.VISIBLE);
            dialog.icon.setImageDrawable(d);
        } else {
            dialog.icon.setVisibility(View.GONE);
        }
    }
    // Setup icon size limiting
    int maxIconSize = builder.maxIconSize;
    if (maxIconSize == -1) {
        maxIconSize = DialogUtils.resolveDimension(builder.context, R.attr.md_icon_max_size);
    }
    if (builder.limitIconToDefaultSize || DialogUtils.resolveBoolean(builder.context, R.attr.md_icon_limit_icon_to_default_size)) {
        maxIconSize = builder.context.getResources().getDimensionPixelSize(R.dimen.md_icon_max_size);
    }
    if (maxIconSize > -1) {
        dialog.icon.setAdjustViewBounds(true);
        dialog.icon.setMaxHeight(maxIconSize);
        dialog.icon.setMaxWidth(maxIconSize);
        dialog.icon.requestLayout();
    }
    // Setup divider color in case content scrolls
    if (!builder.dividerColorSet) {
        final int dividerFallback = DialogUtils.resolveColor(dialog.getContext(), R.attr.md_divider);
        builder.dividerColor = DialogUtils.resolveColor(builder.context, R.attr.md_divider_color, dividerFallback);
    }
    dialog.view.setDividerColor(builder.dividerColor);
    // Setup title and title frame
    if (dialog.title != null) {
        dialog.setTypeface(dialog.title, builder.mediumFont);
        dialog.title.setTextColor(builder.titleColor);
        dialog.title.setGravity(builder.titleGravity.getGravityInt());
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
            //noinspection ResourceType
            dialog.title.setTextAlignment(builder.titleGravity.getTextAlignment());
        }
        if (builder.title == null) {
            dialog.titleFrame.setVisibility(View.GONE);
        } else {
            dialog.title.setText(builder.title);
            dialog.titleFrame.setVisibility(View.VISIBLE);
        }
    }
    // Setup content
    if (dialog.content != null) {
        dialog.content.setMovementMethod(new LinkMovementMethod());
        dialog.setTypeface(dialog.content, builder.regularFont);
        dialog.content.setLineSpacing(0f, builder.contentLineSpacingMultiplier);
        if (builder.linkColor == null) {
            dialog.content.setLinkTextColor(DialogUtils.resolveColor(dialog.getContext(), android.R.attr.textColorPrimary));
        } else {
            dialog.content.setLinkTextColor(builder.linkColor);
        }
        dialog.content.setTextColor(builder.contentColor);
        dialog.content.setGravity(builder.contentGravity.getGravityInt());
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
            //noinspection ResourceType
            dialog.content.setTextAlignment(builder.contentGravity.getTextAlignment());
        }
        if (builder.content != null) {
            dialog.content.setText(builder.content);
            dialog.content.setVisibility(View.VISIBLE);
        } else {
            dialog.content.setVisibility(View.GONE);
        }
    }
    // Setup prompt checkbox
    if (dialog.checkBoxPrompt != null) {
        dialog.checkBoxPrompt.setText(builder.checkBoxPrompt);
        dialog.checkBoxPrompt.setChecked(builder.checkBoxPromptInitiallyChecked);
        dialog.checkBoxPrompt.setOnCheckedChangeListener(builder.checkBoxPromptListener);
        dialog.setTypeface(dialog.checkBoxPrompt, builder.regularFont);
        dialog.checkBoxPrompt.setTextColor(builder.contentColor);
        MDTintHelper.setTint(dialog.checkBoxPrompt, builder.widgetColor);
    }
    // Setup action buttons
    dialog.view.setButtonGravity(builder.buttonsGravity);
    dialog.view.setButtonStackedGravity(builder.btnStackedGravity);
    dialog.view.setStackingBehavior(builder.stackingBehavior);
    boolean textAllCaps;
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH) {
        textAllCaps = DialogUtils.resolveBoolean(builder.context, android.R.attr.textAllCaps, true);
        if (textAllCaps) {
            textAllCaps = DialogUtils.resolveBoolean(builder.context, R.attr.textAllCaps, true);
        }
    } else {
        textAllCaps = DialogUtils.resolveBoolean(builder.context, R.attr.textAllCaps, true);
    }
    MDButton positiveTextView = dialog.positiveButton;
    dialog.setTypeface(positiveTextView, builder.mediumFont);
    positiveTextView.setAllCapsCompat(textAllCaps);
    positiveTextView.setText(builder.positiveText);
    positiveTextView.setTextColor(builder.positiveColor);
    dialog.positiveButton.setStackedSelector(dialog.getButtonSelector(DialogAction.POSITIVE, true));
    dialog.positiveButton.setDefaultSelector(dialog.getButtonSelector(DialogAction.POSITIVE, false));
    dialog.positiveButton.setTag(DialogAction.POSITIVE);
    dialog.positiveButton.setOnClickListener(dialog);
    dialog.positiveButton.setVisibility(View.VISIBLE);
    MDButton negativeTextView = dialog.negativeButton;
    dialog.setTypeface(negativeTextView, builder.mediumFont);
    negativeTextView.setAllCapsCompat(textAllCaps);
    negativeTextView.setText(builder.negativeText);
    negativeTextView.setTextColor(builder.negativeColor);
    dialog.negativeButton.setStackedSelector(dialog.getButtonSelector(DialogAction.NEGATIVE, true));
    dialog.negativeButton.setDefaultSelector(dialog.getButtonSelector(DialogAction.NEGATIVE, false));
    dialog.negativeButton.setTag(DialogAction.NEGATIVE);
    dialog.negativeButton.setOnClickListener(dialog);
    dialog.negativeButton.setVisibility(View.VISIBLE);
    MDButton neutralTextView = dialog.neutralButton;
    dialog.setTypeface(neutralTextView, builder.mediumFont);
    neutralTextView.setAllCapsCompat(textAllCaps);
    neutralTextView.setText(builder.neutralText);
    neutralTextView.setTextColor(builder.neutralColor);
    dialog.neutralButton.setStackedSelector(dialog.getButtonSelector(DialogAction.NEUTRAL, true));
    dialog.neutralButton.setDefaultSelector(dialog.getButtonSelector(DialogAction.NEUTRAL, false));
    dialog.neutralButton.setTag(DialogAction.NEUTRAL);
    dialog.neutralButton.setOnClickListener(dialog);
    dialog.neutralButton.setVisibility(View.VISIBLE);
    // Setup list dialog stuff
    if (builder.listCallbackMultiChoice != null) {
        dialog.selectedIndicesList = new ArrayList<>();
    }
    if (dialog.recyclerView != null) {
        if (builder.adapter == null) {
            // Determine list type
            if (builder.listCallbackSingleChoice != null) {
                dialog.listType = MaterialDialog.ListType.SINGLE;
            } else if (builder.listCallbackMultiChoice != null) {
                dialog.listType = MaterialDialog.ListType.MULTI;
                if (builder.selectedIndices != null) {
                    dialog.selectedIndicesList = new ArrayList<>(Arrays.asList(builder.selectedIndices));
                    builder.selectedIndices = null;
                }
            } else {
                dialog.listType = MaterialDialog.ListType.REGULAR;
            }
            builder.adapter = new DefaultRvAdapter(dialog, MaterialDialog.ListType.getLayoutForType(dialog.listType));
        } else if (builder.adapter instanceof MDAdapter) {
            // Notify simple list adapter of the dialog it belongs to
            ((MDAdapter) builder.adapter).setDialog(dialog);
        }
    }
    // Setup progress dialog stuff if needed
    setupProgressDialog(dialog);
    // Setup input dialog stuff if needed
    setupInputDialog(dialog);
    // Setup custom views
    if (builder.customView != null) {
        ((MDRootLayout) dialog.view.findViewById(R.id.md_root)).noTitleNoPadding();
        FrameLayout frame = (FrameLayout) dialog.view.findViewById(R.id.md_customViewFrame);
        dialog.customViewFrame = frame;
        View innerView = builder.customView;
        if (innerView.getParent() != null) {
            ((ViewGroup) innerView.getParent()).removeView(innerView);
        }
        if (builder.wrapCustomViewInScroll) {
            /* Apply the frame padding to the content, this allows the ScrollView to draw it's
                   over scroll glow without clipping */
            final Resources r = dialog.getContext().getResources();
            final int framePadding = r.getDimensionPixelSize(R.dimen.md_dialog_frame_margin);
            final ScrollView sv = new ScrollView(dialog.getContext());
            int paddingTop = r.getDimensionPixelSize(R.dimen.md_content_padding_top);
            int paddingBottom = r.getDimensionPixelSize(R.dimen.md_content_padding_bottom);
            sv.setClipToPadding(false);
            if (innerView instanceof EditText) {
                // Setting padding to an EditText causes visual errors, set it to the parent instead
                sv.setPadding(framePadding, paddingTop, framePadding, paddingBottom);
            } else {
                // Setting padding to scroll view pushes the scroll bars out, don't do it if not necessary (like above)
                sv.setPadding(0, paddingTop, 0, paddingBottom);
                innerView.setPadding(framePadding, 0, framePadding, 0);
            }
            sv.addView(innerView, new ScrollView.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT));
            innerView = sv;
        }
        frame.addView(innerView, new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT));
    }
    // Setup user listeners
    if (builder.showListener != null) {
        dialog.setOnShowListener(builder.showListener);
    }
    if (builder.cancelListener != null) {
        dialog.setOnCancelListener(builder.cancelListener);
    }
    if (builder.dismissListener != null) {
        dialog.setOnDismissListener(builder.dismissListener);
    }
    if (builder.keyListener != null) {
        dialog.setOnKeyListener(builder.keyListener);
    }
    // Setup internal show listener
    dialog.setOnShowListenerInternal();
    // Other internal initialization
    dialog.invalidateList();
    dialog.setViewInternal(dialog.view);
    dialog.checkIfListInitScroll();
    // Min height and max width calculations
    WindowManager wm = dialog.getWindow().getWindowManager();
    Display display = wm.getDefaultDisplay();
    Point size = new Point();
    display.getSize(size);
    final int windowWidth = size.x;
    final int windowHeight = size.y;
    final int windowVerticalPadding = builder.context.getResources().getDimensionPixelSize(R.dimen.md_dialog_vertical_margin);
    final int windowHorizontalPadding = builder.context.getResources().getDimensionPixelSize(R.dimen.md_dialog_horizontal_margin);
    final int maxWidth = builder.context.getResources().getDimensionPixelSize(R.dimen.md_dialog_max_width);
    final int calculatedWidth = windowWidth - (windowHorizontalPadding * 2);
    dialog.view.setMaxHeight(windowHeight - windowVerticalPadding * 2);
    WindowManager.LayoutParams lp = new WindowManager.LayoutParams();
    lp.copyFrom(dialog.getWindow().getAttributes());
    lp.width = Math.min(maxWidth, calculatedWidth);
    dialog.getWindow().setAttributes(lp);
}
Also used : MDButton(com.afollestad.materialdialogs.internal.MDButton) ArrayList(java.util.ArrayList) WindowManager(android.view.WindowManager) EditText(android.widget.EditText) ViewGroup(android.view.ViewGroup) Drawable(android.graphics.drawable.Drawable) GradientDrawable(android.graphics.drawable.GradientDrawable) IndeterminateHorizontalProgressDrawable(me.zhanghai.android.materialprogressbar.IndeterminateHorizontalProgressDrawable) HorizontalProgressDrawable(me.zhanghai.android.materialprogressbar.HorizontalProgressDrawable) IndeterminateProgressDrawable(me.zhanghai.android.materialprogressbar.IndeterminateProgressDrawable) LinkMovementMethod(android.text.method.LinkMovementMethod) Point(android.graphics.Point) ImageView(android.widget.ImageView) View(android.view.View) RecyclerView(android.support.v7.widget.RecyclerView) TextView(android.widget.TextView) ScrollView(android.widget.ScrollView) GradientDrawable(android.graphics.drawable.GradientDrawable) Point(android.graphics.Point) MDAdapter(com.afollestad.materialdialogs.internal.MDAdapter) ScrollView(android.widget.ScrollView) MDRootLayout(com.afollestad.materialdialogs.internal.MDRootLayout) FrameLayout(android.widget.FrameLayout) Resources(android.content.res.Resources) Display(android.view.Display) UiThread(android.support.annotation.UiThread)

Example 30 with Drawable

use of android.graphics.drawable.Drawable in project material-dialogs by afollestad.

the class MDTintHelper method setCursorTint.

private static void setCursorTint(@NonNull EditText editText, @ColorInt int color) {
    try {
        Field fCursorDrawableRes = TextView.class.getDeclaredField("mCursorDrawableRes");
        fCursorDrawableRes.setAccessible(true);
        int mCursorDrawableRes = fCursorDrawableRes.getInt(editText);
        Field fEditor = TextView.class.getDeclaredField("mEditor");
        fEditor.setAccessible(true);
        Object editor = fEditor.get(editText);
        Class<?> clazz = editor.getClass();
        Field fCursorDrawable = clazz.getDeclaredField("mCursorDrawable");
        fCursorDrawable.setAccessible(true);
        Drawable[] drawables = new Drawable[2];
        drawables[0] = ContextCompat.getDrawable(editText.getContext(), mCursorDrawableRes);
        drawables[1] = ContextCompat.getDrawable(editText.getContext(), mCursorDrawableRes);
        drawables[0].setColorFilter(color, PorterDuff.Mode.SRC_IN);
        drawables[1].setColorFilter(color, PorterDuff.Mode.SRC_IN);
        fCursorDrawable.set(editor, drawables);
    } catch (Exception e) {
        e.printStackTrace();
    }
}
Also used : Field(java.lang.reflect.Field) Drawable(android.graphics.drawable.Drawable)

Aggregations

Drawable (android.graphics.drawable.Drawable)4516 BitmapDrawable (android.graphics.drawable.BitmapDrawable)795 View (android.view.View)579 Bitmap (android.graphics.Bitmap)476 ColorDrawable (android.graphics.drawable.ColorDrawable)473 ImageView (android.widget.ImageView)471 TextView (android.widget.TextView)439 Paint (android.graphics.Paint)322 LayerDrawable (android.graphics.drawable.LayerDrawable)314 Test (org.junit.Test)276 Context (android.content.Context)267 Resources (android.content.res.Resources)252 Rect (android.graphics.Rect)243 PackageManager (android.content.pm.PackageManager)233 StateListDrawable (android.graphics.drawable.StateListDrawable)212 TypedArray (android.content.res.TypedArray)205 Intent (android.content.Intent)155 ViewGroup (android.view.ViewGroup)148 AnimationDrawable (android.graphics.drawable.AnimationDrawable)147 ArrayList (java.util.ArrayList)139