android.view.GestureDetector.SimpleOnGestureListener#android.view.GestureDetector源码实例Demo

下面列出了android.view.GestureDetector.SimpleOnGestureListener#android.view.GestureDetector 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。

源代码1 项目: touch-image-view   文件: TouchImageView.java
@Override
protected GestureDetector.OnGestureListener getGestureListener() {
    return new ImageViewTouch.GestureListener() {
        @Override
        public boolean onDoubleTap(MotionEvent e) {
            mUserScaled = true;

            float scale = getScale();
            float targetScale = onDoubleTapPost(scale, getMaxScale(), getMinScale());
            targetScale = Math.min(getMaxScale(), Math.max(targetScale, getMinScale()));
            zoomTo(targetScale, e.getX(), e.getY(), (long) mDefaultAnimationDuration);

            if (null != mDoubleTapListener) {
                mDoubleTapListener.onDoubleTap();
            }

            return false;
        }
    };
}
 
源代码2 项目: Telegram-FOSS   文件: EntityView.java
public EntityView(Context context, Point pos) {
    super(context);

    uuid = UUID.randomUUID();
    position = pos;

    gestureDetector = new GestureDetector(context, new GestureDetector.SimpleOnGestureListener() {
        public void onLongPress(MotionEvent e) {
            if (hasPanned || hasTransformed || hasReleased) {
                return;
            }

            recognizedLongPress = true;
            if (delegate != null) {
                performHapticFeedback(HapticFeedbackConstants.LONG_PRESS);
                delegate.onEntityLongClicked(EntityView.this);
            }
        }
    });
}
 
源代码3 项目: CanPhotos   文件: Attacher.java
public Attacher(DraweeView<GenericDraweeHierarchy> draweeView) {
    mDraweeView = new WeakReference<>(draweeView);
    draweeView.getHierarchy().setActualImageScaleType(ScalingUtils.ScaleType.FIT_CENTER);
    draweeView.setOnTouchListener(this);
    mScaleDragDetector = new ScaleDragDetector(draweeView.getContext(), this);
    mGestureDetector = new GestureDetectorCompat(draweeView.getContext(),
            new GestureDetector.SimpleOnGestureListener() {
                @Override public void onLongPress(MotionEvent e) {
                    super.onLongPress(e);
                    if (null != mLongClickListener) {
                        mLongClickListener.onLongClick(getDraweeView());
                    }
                }
            });
    mGestureDetector.setOnDoubleTapListener(new DefaultOnDoubleTapListener(this));
}
 
源代码4 项目: onpc   文件: DragSortController.java
/**
 * By default, sorting is enabled, and removal is disabled.
 *
 * @param dslv         The DSLV instance
 * @param dragHandleId The resource id of the View that represents
 *                     the drag handle in a list item.
 */
DragSortController(DragSortListView dslv, int dragHandleId, int dragInitMode,
                   int removeMode, int clickRemoveId, int flingHandleId)
{
    super(dslv);
    mDslv = dslv;
    mDetector = new GestureDetector(dslv.getContext(), this);
    mFlingRemoveDetector = new GestureDetector(dslv.getContext(), mFlingRemoveListener);
    mFlingRemoveDetector.setIsLongpressEnabled(false);
    mTouchSlop = ViewConfiguration.get(dslv.getContext()).getScaledTouchSlop();
    mDragHandleId = dragHandleId;
    mClickRemoveId = clickRemoveId;
    mFlingHandleId = flingHandleId;
    setRemoveMode(removeMode);
    setDragInitMode(dragInitMode);
}
 
源代码5 项目: delion   文件: OverlayPanelEventFilter.java
/**
 * Creates a {@link GestureEventFilter} with offset touch events.
 * @param context The {@link Context} for Android.
 * @param host The {@link EventFilterHost} for this event filter.
 * @param panelManager The {@link OverlayPanelManager} responsible for showing panels.
 */
public OverlayPanelEventFilter(Context context, EventFilterHost host, OverlayPanel panel) {
    super(context, host, panel, false, false);

    mGestureDetector = new GestureDetector(context, new InternalGestureDetector());
    mPanel = panel;

    mSwipeRecognizer = new SwipeRecognizerImpl(context);

    // Store the square of the platform touch slop in pixels to use in the scroll detection.
    // See {@link OverlayPanelEventFilter#isDistanceGreaterThanTouchSlop}.
    float touchSlopPx = ViewConfiguration.get(context).getScaledTouchSlop();
    mTouchSlopSquarePx = touchSlopPx * touchSlopPx;

    reset();
}
 
源代码6 项目: MarkdownEditors   文件: TouchImageView.java
private void sharedConstructing(Context context) {
    super.setClickable(true);
    this.context = context;
    mScaleDetector = new ScaleGestureDetector(context, new ScaleListener());
    mGestureDetector = new GestureDetector(context, new GestureListener());
    matrix = new Matrix();
    prevMatrix = new Matrix();
    m = new float[9];
    normalizedScale = 1;
    if (mScaleType == null) {
        mScaleType = ScaleType.FIT_CENTER;
    }
    minScale = 1;
    maxScale = 3;
    superMinScale = SUPER_MIN_MULTIPLIER * minScale;
    superMaxScale = SUPER_MAX_MULTIPLIER * maxScale;
    setImageMatrix(matrix);
    setScaleType(ScaleType.MATRIX);
    setState(State.NONE);
    onDrawReady = false;
    super.setOnTouchListener(new PrivateOnTouchListener());
}
 
源代码7 项目: TiTouchImageView   文件: TouchImageView.java
private void sharedConstructing(Context context) {
    super.setClickable(true);
    this.context = context;
    mScaleDetector = new ScaleGestureDetector(context, new ScaleListener());
    mGestureDetector = new GestureDetector(context, new GestureListener());
    matrix = new Matrix();
    prevMatrix = new Matrix();
    m = new float[9];
    normalizedScale = 1;
    if (mScaleType == null) {
    	mScaleType = ScaleType.FIT_CENTER;
    }
    minScale = 1;
    maxScale = 3;
    superMinScale = SUPER_MIN_MULTIPLIER * minScale;
    superMaxScale = SUPER_MAX_MULTIPLIER * maxScale;
    setImageMatrix(matrix);
    setScaleType(ScaleType.MATRIX);
    setState(State.NONE);
    onDrawReady = false;
    super.setOnTouchListener(new PrivateOnTouchListener());
}
 
源代码8 项目: ucar-weex-core   文件: WXSlider.java
private void hackTwoItemsInfiniteScroll() {
  if (mViewPager == null || mAdapter == null) {
    return;
  }
  if (isInfinite) {
    if (mAdapter.getRealCount() == 2) {
      final GestureDetector gestureDetector = new GestureDetector(getContext(), new FlingGestureListener(mViewPager));
      mViewPager.setOnTouchListener(new View.OnTouchListener() {
        @Override
        public boolean onTouch(View v, MotionEvent event) {
          return gestureDetector.onTouchEvent(event);
        }
      });
    } else {
      mViewPager.setOnTouchListener(null);
    }
  }
}
 
源代码9 项目: MVBarcodeReader   文件: BarcodeCaptureFragment.java
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
    View content = inflater.inflate(R.layout.barcode_capture, container, false);
    mPreview = content.findViewById(R.id.preview);
    mGraphicOverlay = content.findViewById(R.id.graphicOverlay);
    topLayout = content.findViewById(R.id.topLayout);
    flashToggle = content.findViewById(R.id.flash_torch);

    flashToggle.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Log.d("SCANNER-FRAGMENT", "Got tap on Flash");
            if (mCameraSource.setFlashMode(mFlashOn ? Camera.Parameters.FLASH_MODE_OFF : Camera.Parameters.FLASH_MODE_TORCH)) {
                mFlashOn = !mFlashOn;
                flashToggle.setImageResource(mFlashOn ? R.drawable.ic_torch_on : R.drawable.ic_torch);
            }
        }
    });
    mPreview.setScaletype(mPreviewScaleType);
    gestureDetector = new GestureDetector(getActivity(), new CaptureGestureListener());
    scaleGestureDetector = new ScaleGestureDetector(getActivity(), new ScaleListener());

    mPreview.setOnTouchListener(this);
    return content;
}
 
源代码10 项目: imsdk-android   文件: TipsFloatView.java
private void init(Context context){
    gestureDetector = new GestureDetector(context, this);

    View view = LayoutInflater.from(context).inflate(R.layout.atom_ui_view_search_line,null);
    text = (TextView) view.findViewById(R.id.text);
    int size = Utils.dipToPixels(context, 40);
    setOrientation(LinearLayout.HORIZONTAL);
    setGravity(Gravity.CENTER_VERTICAL);

    RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT,
            ViewGroup.LayoutParams.WRAP_CONTENT);
    layoutParams.addRule(RelativeLayout.ALIGN_PARENT_RIGHT);
    layoutParams.setMargins(0, size * 4, 0, 0);
    setLayoutParams(layoutParams);

    addView(view);
}
 
源代码11 项目: CompassView   文件: CompassView.java
private void init() {
    mTextPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
    mTextPaint.setTextAlign(Paint.Align.CENTER);

    mMainLinePaint = new Paint(Paint.ANTI_ALIAS_FLAG);
    mMainLinePaint.setStrokeWidth(8f);

    mSecondaryLinePaint = new Paint(Paint.ANTI_ALIAS_FLAG);
    mSecondaryLinePaint.setStrokeWidth(6f);

    mTerciaryLinePaint = new Paint(Paint.ANTI_ALIAS_FLAG);
    mTerciaryLinePaint.setStrokeWidth(3f);

    mMarkerPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
    mMarkerPaint.setStyle(Paint.Style.FILL);
    pathMarker = new Path();

    mDetector = new GestureDetector(getContext(), new mGestureListener());
}
 
源代码12 项目: java-n-IDE-for-Android   文件: HighlightEditor.java
private void setup(Context context) {
    this.mContext = context;

    lineUtils = new LineUtils();
    mPaintNumbers = new Paint();
    mPaintNumbers.setColor(getResources().getColor(R.color.color_number_color));
    mPaintNumbers.setAntiAlias(true);

    mPaintHighlight = new Paint();

    mScale = context.getResources().getDisplayMetrics().density;
    mPadding = (int) (mPaddingDP * mScale);
    mHighlightedLine = mHighlightStart = -1;
    mDrawingRect = new Rect();
    mLineBounds = new Rect();
    mGestureDetector = new GestureDetector(getContext(), HighlightEditor.this);
    mChangeListener = new EditTextChangeListener();
    mBracketHighlighter = new BracketHighlighter(this, codeTheme);
    updateFromSettings();
    enableTextChangedListener();
}
 
源代码13 项目: YImagePicker   文件: CropImageView.java
private void init() {
    super.setScaleType(ScaleType.MATRIX);
    if (mScaleType == null) mScaleType = ScaleType.CENTER_CROP;
    mRotateDetector = new RotateGestureDetector(mRotateListener);
    mDetector = new GestureDetector(getContext(), mGestureListener);
    mScaleDetector = new ScaleGestureDetector(getContext(), mScaleListener);
    float density = getResources().getDisplayMetrics().density;
    MAX_FLING_OVER_SCROLL = (int) (density * 30);
    MAX_OVER_RESISTANCE = (int) (density * 140);

    mMinRotate = MIN_ROTATE;
    mAnimDuring = ANIM_DURING;
    mMaxScale = MAX_SCALE;

    initCropLineRect();
    initCropRect();
}
 
源代码14 项目: Nimbus   文件: OnItemTouchListener.java
public OnItemTouchListener(Context context, OnItemClickListener listener) {
    mListener = listener;
    mGestureDetector = new GestureDetector(context, new GestureDetector.SimpleOnGestureListener() {
        @Override
        public boolean onSingleTapUp(MotionEvent e) {
            return true;
        }
    });
}
 
源代码15 项目: RelaxFinger   文件: ClipImageView.java
public MultiGestureDetector(Context context) {
	scaleGestureDetector = new ScaleGestureDetector(context, this);

	gestureDetector = new GestureDetector(context, this);
	gestureDetector.setOnDoubleTapListener(this);

	final ViewConfiguration configuration = ViewConfiguration
			.get(context);
	scaledTouchSlop = configuration.getScaledTouchSlop();
}
 
源代码16 项目: DragListView   文件: BoardView.java
@Override
protected void onFinishInflate() {
    super.onFinishInflate();
    Resources res = getResources();
    boolean isPortrait = res.getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT;
    if (isPortrait) {
        mColumnWidth = (int) (res.getDisplayMetrics().widthPixels * 0.87);
    } else {
        mColumnWidth = (int) (res.getDisplayMetrics().density * 320);
    }

    mGestureDetector = new GestureDetector(getContext(), new GestureListener());
    mScroller = new Scroller(getContext(), new DecelerateInterpolator(1.1f));
    mAutoScroller = new AutoScroller(getContext(), this);
    mAutoScroller.setAutoScrollMode(snapToColumnWhenDragging() ? AutoScroller.AutoScrollMode.COLUMN : AutoScroller.AutoScrollMode
            .POSITION);
    mDragItem = new DragItem(getContext());
    mDragColumn = new DragItem(getContext());
    mDragColumn.setSnapToTouch(false);

    mRootLayout = new FrameLayout(getContext());
    mRootLayout.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.MATCH_PARENT));

    mColumnLayout = new LinearLayout(getContext());
    mColumnLayout.setOrientation(LinearLayout.HORIZONTAL);
    mColumnLayout.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.MATCH_PARENT));
    mColumnLayout.setMotionEventSplittingEnabled(false);

    mRootLayout.addView(mColumnLayout);
    mRootLayout.addView(mDragItem.getDragItemView());
    addView(mRootLayout);
}
 
源代码17 项目: UltimateAndroid   文件: HorizontalListView.java
private synchronized void initView() {
    mLeftViewIndex = -1;
    mRightViewIndex = 0;
    mDisplayOffset = 0;
    mCurrentX = 0;
    mNextX = 0;
    mMaxX = Integer.MAX_VALUE;
    mScroller = new Scroller(getContext());
    mGesture = new GestureDetector(getContext(), mOnGesture);
}
 
源代码18 项目: xmpp   文件: WheelView.java
/**
 * Initializes class data
 * 
 * @param context
 *            the context
 */
private void initData(Context context) {
	gestureDetector = new GestureDetector(context, gestureListener);
	gestureDetector.setIsLongpressEnabled(false);

	LABEL_OFFSET = DensityUtil.dip2px(context, LABEL_OFFSET_DIP);
	
	scroller = new Scroller(context);
}
 
源代码19 项目: android_viewtracker   文件: TrackerFrameLayout.java
public TrackerFrameLayout(Context context) {
    super(context);
    this.mGestureDetector = new GestureDetector(context, this);
    this.mReuseLayoutHook = new ReuseLayoutHook(this, commonInfo);
    // after the onActivityResumed
    CommonHelper.addCommonArgsInfo(this);
}
 
源代码20 项目: iBeebo   文件: PhotoViewAttacher.java
public PhotoViewAttacher(ImageView imageView) {
    mImageView = new WeakReference<ImageView>(imageView);

    imageView.setOnTouchListener(this);

    mViewTreeObserver = imageView.getViewTreeObserver();
    mViewTreeObserver.addOnGlobalLayoutListener(this);

    // Make sure we using MATRIX Scale Type
    setImageViewScaleTypeMatrix(imageView);

    if (!imageView.isInEditMode()) {
        // Create Gesture Detectors...
        mScaleDragDetector = VersionedGestureDetector.newInstance(imageView.getContext(), this);

        mGestureDetector = new GestureDetector(imageView.getContext(),
                new GestureDetector.SimpleOnGestureListener() {

                    // forward long click listener
                    @Override
                    public void onLongPress(MotionEvent e) {
                        if (null != mLongClickListener) {
                            mLongClickListener.onLongClick(mImageView.get());
                        }
                    }
                });

        mGestureDetector.setOnDoubleTapListener(this);

        // Finally, update the UI so that we're zoomable
        setZoomable(true);
    }
}
 
源代码21 项目: GalleryFinal   文件: PhotoViewAttacher.java
public PhotoViewAttacher(ImageView imageView, boolean zoomable) {
    mImageView = new WeakReference<>(imageView);

    imageView.setDrawingCacheEnabled(true);
    imageView.setOnTouchListener(this);

    ViewTreeObserver observer = imageView.getViewTreeObserver();
    if (null != observer)
        observer.addOnGlobalLayoutListener(this);

    // Make sure we using MATRIX Scale Type
    setImageViewScaleTypeMatrix(imageView);

    if (imageView.isInEditMode()) {
        return;
    }
    // Create Gesture Detectors...
    mScaleDragDetector = VersionedGestureDetector.newInstance(
            imageView.getContext(), this);

    mGestureDetector = new GestureDetector(imageView.getContext(),
            new GestureDetector.SimpleOnGestureListener() {

                // forward long click listener
                @Override
                public void onLongPress(MotionEvent e) {
                    if (null != mLongClickListener) {
                        mLongClickListener.onLongClick(getImageView());
                    }
                }
            });

    mGestureDetector.setOnDoubleTapListener(new DefaultOnDoubleTapListener(this));

    // Finally, update the UI so that we're zoomable
    setZoomable(zoomable);
}
 
源代码22 项目: Folding-Android   文件: FoldingLayout.java
public FoldingLayout(Context context, AttributeSet attrs, int defStyle) {
	super(context, attrs, defStyle);
	mScrollGestureDetector = new GestureDetector(context,
			new ScrollGestureDetector());
	mTouchSlop = ViewConfiguration.get(context).getScaledTouchSlop();
	setAnchorFactor(0);
}
 
源代码23 项目: sctalk   文件: ZoomableImageView.java
/**
 * Set up the class. Method called by constructors.
 *
 * @param context
 */
private void setUp(Context context) {
    super.setClickable(false);
    matrix = new Matrix();
    state = State.INIT;
    scaleDetector = new ScaleGestureDetector(context, new ScaleListener());
    doubleTapDetecture = new GestureDetector(context, new GestureListener());
    setScaleType(ScaleType.MATRIX);
}
 
源代码24 项目: Camera2   文件: ModeListView.java
public ModeListView(Context context, AttributeSet attrs)
{
    super(context, attrs);
    mGestureDetector = new GestureDetector(context, mOnGestureListener);
    mListBackgroundColor = getResources().getColor(R.color.mode_list_background);
    mSettingsButtonMargin = getResources().getDimensionPixelSize(
            R.dimen.mode_list_settings_icon_margin);
}
 
源代码25 项目: MDPreference   文件: MaterialRippleLayout.java
public MaterialRippleLayout(Context context, AttributeSet attrs, int defStyle) {
    super(context, attrs, defStyle);

    setWillNotDraw(false);
    gestureDetector = new GestureDetector(context, longClickListener);

    TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.MaterialRippleLayout);
    rippleColor = a.getColor(R.styleable.MaterialRippleLayout_mrl_rippleColor, DEFAULT_COLOR);
    rippleDiameter = a.getDimensionPixelSize(
            R.styleable.MaterialRippleLayout_mrl_rippleDimension,
            (int) dpToPx(getResources(), DEFAULT_DIAMETER_DP)
    );
    rippleOverlay = a.getBoolean(R.styleable.MaterialRippleLayout_mrl_rippleOverlay, DEFAULT_RIPPLE_OVERLAY);
    rippleHover = a.getBoolean(R.styleable.MaterialRippleLayout_mrl_rippleHover, DEFAULT_HOVER);
    rippleDuration = a.getInt(R.styleable.MaterialRippleLayout_mrl_rippleDuration, DEFAULT_DURATION);
    rippleAlpha = (int) (255 * a.getFloat(R.styleable.MaterialRippleLayout_mrl_rippleAlpha, DEFAULT_ALPHA));
    rippleDelayClick = a.getBoolean(R.styleable.MaterialRippleLayout_mrl_rippleDelayClick, DEFAULT_DELAY_CLICK);
    rippleFadeDuration = a.getInteger(R.styleable.MaterialRippleLayout_mrl_rippleFadeDuration, DEFAULT_FADE_DURATION);
    rippleBackground = new ColorDrawable(a.getColor(R.styleable.MaterialRippleLayout_mrl_rippleBackground, DEFAULT_BACKGROUND));
    ripplePersistent = a.getBoolean(R.styleable.MaterialRippleLayout_mrl_ripplePersistent, DEFAULT_PERSISTENT);
    rippleInAdapter = a.getBoolean(R.styleable.MaterialRippleLayout_mrl_rippleInAdapter, DEFAULT_SEARCH_ADAPTER);
    rippleRoundedCorners = a.getDimensionPixelSize(R.styleable.MaterialRippleLayout_mrl_rippleRoundedCorners, DEFAULT_ROUNDED_CORNERS);

    a.recycle();

    paint.setColor(rippleColor);
    paint.setAlpha(rippleAlpha);

    enableClipPathSupportIfNecessary();
}
 
源代码26 项目: Camera2   文件: PreviewOverlay.java
/**
 * Each module can pass in their own gesture listener through App UI. When a gesture
 * is detected, the {@link GestureDetector.OnGestureListener} will be notified of
 * the gesture.
 *
 * @param gestureListener a listener from a module that defines how to handle gestures
 */
public void setGestureListener(GestureDetector.OnGestureListener gestureListener)
{
    if (gestureListener != null)
    {
        mGestureDetector = new GestureDetector(getContext(), gestureListener);
    }
}
 
源代码27 项目: monolog-android   文件: PhotoViewAttacher.java
public PhotoViewAttacher(ImageView imageView) {
	mImageView = new WeakReference<ImageView>(imageView);

	imageView.setOnTouchListener(this);

	mViewTreeObserver = imageView.getViewTreeObserver();
	mViewTreeObserver.addOnGlobalLayoutListener(this);

	// Make sure we using MATRIX Scale Type
	setImageViewScaleTypeMatrix(imageView);

	if (!imageView.isInEditMode()) {
		// Create Gesture Detectors...
		mScaleDragDetector = VersionedGestureDetector.newInstance(imageView.getContext(), this);

		mGestureDetector = new GestureDetector(imageView.getContext(),
				new GestureDetector.SimpleOnGestureListener() {

					// forward long click listener
					@Override
					public void onLongPress(MotionEvent e) {
						if (null != mLongClickListener) {
							mLongClickListener.onLongClick(mImageView.get());
						}
					}
				});

		mGestureDetector.setOnDoubleTapListener(this);

		// Finally, update the UI so that we're zoomable
		setZoomable(true);
	}
}
 
源代码28 项目: AndroidChromium   文件: CustomTabToolbar.java
public InterceptTouchLayout(Context context, AttributeSet attrs) {
    super(context, attrs);
    mGestureDetector = new GestureDetector(getContext(),
            new GestureDetector.SimpleOnGestureListener() {
                @Override
                public boolean onSingleTapConfirmed(MotionEvent e) {
                    if (LibraryLoader.isInitialized()) {
                        RecordUserAction.record("CustomTabs.TapUrlBar");
                    }
                    return super.onSingleTapConfirmed(e);
                }
            });
}
 
源代码29 项目: CVScanner   文件: DocumentScannerFragment.java
void initializeViews(View view){
    mPreview = view.findViewById(R.id.preview);
    mGraphicOverlay = view.findViewById(R.id.graphicOverlay);
    flashToggle = view.findViewById(R.id.flash);

    gestureDetector = new GestureDetector(getActivity(), new CaptureGestureListener());
    view.setOnTouchListener(this);
}
 
public MaterialRippleLayoutNineOld(Context context, AttributeSet attrs, int defStyle) {
    super(context, attrs, defStyle);

    setWillNotDraw(false);
    gestureDetector = new GestureDetector(context, longClickListener);

    TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.MaterialRippleLayout);
    rippleColor = a.getColor(R.styleable.MaterialRippleLayout_mrlsxm_rippleColor, DEFAULT_COLOR);
    rippleDiameter = a.getDimensionPixelSize(
            R.styleable.MaterialRippleLayout_mrlsxm_rippleDimension,
            (int) dpToPx(getResources(), DEFAULT_DIAMETER_DP)
    );
    rippleOverlay = a.getBoolean(R.styleable.MaterialRippleLayout_mrlsxm_rippleOverlay, DEFAULT_RIPPLE_OVERLAY);
    rippleHover = a.getBoolean(R.styleable.MaterialRippleLayout_mrlsxm_rippleHover, DEFAULT_HOVER);
    rippleDuration = a.getInt(R.styleable.MaterialRippleLayout_mrlsxm_rippleDuration, DEFAULT_DURATION);
    rippleAlpha = (int) (255 * a.getFloat(R.styleable.MaterialRippleLayout_mrlsxm_rippleAlpha, DEFAULT_ALPHA));
    rippleDelayClick = a.getBoolean(R.styleable.MaterialRippleLayout_mrlsxm_rippleDelayClick, DEFAULT_DELAY_CLICK);
    rippleFadeDuration = a.getInteger(R.styleable.MaterialRippleLayout_mrlsxm_rippleFadeDuration, DEFAULT_FADE_DURATION);
    rippleBackground = new ColorDrawable(a.getColor(R.styleable.MaterialRippleLayout_mrlsxm_rippleBackground, DEFAULT_BACKGROUND));
    ripplePersistent = a.getBoolean(R.styleable.MaterialRippleLayout_mrlsxm_ripplePersistent, DEFAULT_PERSISTENT);
    rippleInAdapter = a.getBoolean(R.styleable.MaterialRippleLayout_mrlsxm_rippleInAdapter, DEFAULT_SEARCH_ADAPTER);
    rippleRoundedCorners = a.getDimensionPixelSize(R.styleable.MaterialRippleLayout_mrlsxm_rippleRoundedCorners, DEFAULT_ROUNDED_CORNERS);

    a.recycle();

    paint.setColor(rippleColor);
    paint.setAlpha(rippleAlpha);

    enableClipPathSupportIfNecessary();
}