android.graphics.Paint#setPathEffect ( )源码实例Demo

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

源代码1 项目: SegmentedButton   文件: SegmentedButton.java
/**
 * Set the border for the selected button
 *
 * @param width     Width of the border in pixels (default value is 0px or no border)
 * @param color     Color of the border (default color is black)
 * @param dashWidth Width of the dash for border, in pixels. Value of 0px means solid line (default is 0px)
 * @param dashGap   Width of the gap for border, in pixels.
 */
void setSelectedButtonBorder(int width, @ColorInt int color, int dashWidth, int dashGap)
{
    if (width > 0)
    {
        // Allocate Paint object for drawing border here
        // Used in onDraw to draw the border around the selected button
        selectedButtonBorderPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
        selectedButtonBorderPaint.setStyle(Paint.Style.STROKE);
        selectedButtonBorderPaint.setStrokeWidth(width);
        selectedButtonBorderPaint.setColor(color);

        if (dashWidth > 0.0f)
        {
            selectedButtonBorderPaint.setPathEffect(new DashPathEffect(new float[] {dashWidth, dashGap}, 0));
        }
    }
    else
    {
        // If the width is 0, then disable drawing border
        selectedButtonBorderPaint = null;
    }

    invalidate();
}
 
源代码2 项目: NewFastFrame   文件: ViewPagerIndicator.java
public ViewPagerIndicator(Context context, AttributeSet attrs) {
    super(context, attrs);
    //获取可见的tab数量
    TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.ViewPagerIndicator);
    mVisibleTabCount = a.getInt(R.styleable.ViewPagerIndicator_visibleTabCount, 3);
    tabSelectedColor = a.getColor(R.styleable.ViewPagerIndicator_tabSelectedColor, getResources().getColor(R.color.orange_red_300));
    spaceHeight = (int) a.getDimension(R.styleable.ViewPagerIndicator_spaceHeight, 2);
    tabNormalColor = a.getColor(R.styleable.ViewPagerIndicator_tabNormalColor, getResources().getColor(R.color.black_transparency_500));
    lineHeight = (int) a.getDimension(R.styleable.ViewPagerIndicator_lineHeight, 2);
    tabTextSize = (int) a.getDimension(R.styleable.ViewPagerIndicator_tabTextSize, 14);
    margin = (int) a.getDimension(R.styleable.ViewPagerIndicator_margin, 0);
    int lineColor = a.getColor(R.styleable.ViewPagerIndicator_lineColor, getResources().getColor(R.color.orange_500));
    if (mVisibleTabCount < 0) {
        mVisibleTabCount = 3;
    }
    a.recycle();
    mPath = new Path();
    //初始化画笔
    mPaint = new Paint();
    mPaint.setAntiAlias(true);
    mPaint.setColor(lineColor);
    mPaint.setStyle(Paint.Style.FILL);
    mPaint.setPathEffect(new CornerPathEffect(3));
    setOrientation(HORIZONTAL);
}
 
源代码3 项目: 365browser   文件: ChartNetworkSeriesView.java
public void setChartColor(int stroke, int fill, int fillSecondary) {
    mPaintStroke = new Paint();
    mPaintStroke.setStrokeWidth(4.0f * getResources().getDisplayMetrics().density);
    mPaintStroke.setColor(stroke);
    mPaintStroke.setStyle(Style.STROKE);
    mPaintStroke.setAntiAlias(true);

    mPaintFill = new Paint();
    mPaintFill.setColor(fill);
    mPaintFill.setStyle(Style.FILL);
    mPaintFill.setAntiAlias(true);

    mPaintFillSecondary = new Paint();
    mPaintFillSecondary.setColor(fillSecondary);
    mPaintFillSecondary.setStyle(Style.FILL);
    mPaintFillSecondary.setAntiAlias(true);

    mPaintEstimate = new Paint();
    mPaintEstimate.setStrokeWidth(3.0f);
    mPaintEstimate.setColor(fillSecondary);
    mPaintEstimate.setStyle(Style.STROKE);
    mPaintEstimate.setAntiAlias(true);
    mPaintEstimate.setPathEffect(new DashPathEffect(new float[] { 10, 10 }, 1));
}
 
源代码4 项目: Telegram   文件: DvbParser.java
/**
 * Construct an instance for the given subtitle and ancillary page ids.
 *
 * @param subtitlePageId The id of the subtitle page carrying the subtitle to be parsed.
 * @param ancillaryPageId The id of the ancillary page containing additional data.
 */
public DvbParser(int subtitlePageId, int ancillaryPageId) {
  defaultPaint = new Paint();
  defaultPaint.setStyle(Paint.Style.FILL_AND_STROKE);
  defaultPaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC));
  defaultPaint.setPathEffect(null);
  fillRegionPaint = new Paint();
  fillRegionPaint.setStyle(Paint.Style.FILL);
  fillRegionPaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.DST_OVER));
  fillRegionPaint.setPathEffect(null);
  canvas = new Canvas();
  defaultDisplayDefinition = new DisplayDefinition(719, 575, 0, 719, 0, 575);
  defaultClutDefinition = new ClutDefinition(0, generateDefault2BitClutEntries(),
      generateDefault4BitClutEntries(), generateDefault8BitClutEntries());
  subtitleService = new SubtitleService(subtitlePageId, ancillaryPageId);
}
 
源代码5 项目: BackgroundView   文件: TreeView.java
private void init() {
    mPaint = new Paint();
    // 绘制贝塞尔曲线
    mPaint.setColor(mColor);
    mPaint.setStrokeWidth(8);
    mPaint.setAntiAlias(true);
    mPaint.setDither(true);
    mPaint.setStyle(Paint.Style.FILL);
    mPaint.setTextSize(60);
    mPaint.setPathEffect(new CornerPathEffect(4));

}
 
源代码6 项目: XCL-Charts   文件: DrawHelper.java
/**
 * 绘制虚实线
 * @param startX	起始点X坐标
 * @param startY	起始点Y坐标
 * @param stopX		终止点X坐标
 * @param stopY		终止点Y坐标
 * @param canvas	画布
 * @param paint		画笔
 */
public void drawDashLine(float startX,float startY,
						 float stopX,float stopY,							 
						 Canvas canvas,
						 Paint paint)
{
	//虚实线
	//PathEffect effects = new DashPathEffect(new float[] { 4, 8, 5, 10}, 1);  
	paint.setPathEffect(getDashLineStyle());  
	canvas.drawLine(startX, startY, stopX, stopY, paint);  
	paint.setPathEffect(null);
}
 
源代码7 项目: nfcard   文件: SpanFormatter.java
@Override
public void draw(Canvas canvas, CharSequence text, int start, int end, float x, int top,
		int y, int bottom, Paint paint) {

	canvas.save();
	canvas.translate(x, (bottom + top) / 2 - height);

	final int c = paint.getColor();
	final float w = paint.getStrokeWidth();
	final Style s = paint.getStyle();
	final PathEffect e = paint.getPathEffect();

	paint.setColor(color);
	paint.setStyle(Paint.Style.STROKE);
	paint.setStrokeWidth(height);
	paint.setPathEffect(effe);

	path.moveTo(x, 0);
	path.lineTo(x + width, 0);

	canvas.drawPath(path, paint);

	paint.setColor(c);
	paint.setStyle(s);
	paint.setStrokeWidth(w);
	paint.setPathEffect(e);

	canvas.restore();
}
 
源代码8 项目: LineAnimation   文件: Animator.java
public Animator(Context context, @Nullable AttributeSet attrs) {
    super(context, attrs);

    TypedArray ta = context.obtainStyledAttributes(attrs, R.styleable.Animator, 0, 0);
    try {
        pathColor = ta.getColor(R.styleable.Animator_pathColor, Color.BLACK);
        dashPathSize = (int) ta.getDimension(R.styleable.Animator_dashPathSize, 30f);
        dashPathGap = (int) ta.getDimension(R.styleable.Animator_dashPathGap, 30f);
        pathStrokeWidth = (int) ta.getDimension(R.styleable.Animator_pathStrokeWidth, 4f);
        drawableAnimationSpeed = ta.getInteger(R.styleable.Animator_drawableAminationSpeed, 9);
        drawable = ta.getResourceId(R.styleable.Animator_drawable, R.drawable.ic_roket);
        enableDashPath = ta.getBoolean(R.styleable.Animator_enableDashPath, true);
        repeatable = ta.getBoolean(R.styleable.Animator_enableDashPath, false);
    } finally {
        ta.recycle();
    }

    line = new Path();
    paint = new Paint();
    paint.setStyle(Paint.Style.STROKE);
    if(enableDashPath){
        paint.setPathEffect(new DashPathEffect(new float[]{dashPathSize, dashPathGap}, 0));
    }

    arrow = getBitmap(drawable);

    this.context = context;

    matrix = new Matrix();

}
 
源代码9 项目: DoraemonKit   文件: LayoutBorderView.java
private void initView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
    TypedArray a = getContext().obtainStyledAttributes(attrs, R.styleable.LayoutBorderView);
    boolean fill = a.getBoolean(R.styleable.LayoutBorderView_dkFill, false);
    mRectPaint = new Paint();
    if (fill) {
        mRectPaint.setStyle(Paint.Style.FILL);
        mRectPaint.setColor(Color.RED);
    } else {
        mRectPaint.setStyle(Paint.Style.STROKE);
        mRectPaint.setStrokeWidth(4);
        mRectPaint.setPathEffect(new DashPathEffect(new float[]{4, 4}, 0));
        mRectPaint.setColor(Color.RED);
    }
    a.recycle();
}
 
源代码10 项目: pixate-freestyle-android   文件: PXStroke.java
/**
 * Returns a stroke {@link Paint}. Note that this method does not check into
 * the pool any Paint that may have been pulled from it. The responsibility
 * here is up to the caller.
 * 
 * @param p
 * @param useOriginal Indicate that the given {@link Paint} instance should
 *            be applied with the stroke information.
 * @return A {@link Paint} reference (a new Paint in case the useOriginal
 *         was false)
 */
public Paint getStrokedPaint(Paint p, boolean useOriginal) {
    Paint paint = useOriginal ? p : ObjectPool.paintPool.checkOut(p);
    paint.setStyle(Style.STROKE);
    paint.setStrokeWidth(width);

    if (dashArray != null && dashArray.length > 0) {
        paint.setPathEffect(new DashPathEffect(dashArray, dashOffset));
    }

    paint.setStrokeCap(this.lineCap);
    paint.setStrokeJoin(this.lineJoin);
    paint.setStrokeMiter(this.miterLimit);
    return paint;
}
 
@Override
public Paint dividerPaint(int position, RecyclerView parent) {
    Paint paint = new Paint();
    switch (position % 10) {
        case 0:
            paint.setColor(Color.RED);
            paint.setStrokeWidth(30);
            break;
        case 1:
            paint.setColor(Color.MAGENTA);
            paint.setStrokeWidth(10);
            break;
        default:
            if (position % 2 == 0) {
                paint.setColor(Color.BLUE);
                paint.setAntiAlias(true);
                paint.setPathEffect(new DashPathEffect(new float[]{25.0f, 25.0f}, 0));
            } else {
                paint.setColor(Color.GREEN);

            }
            paint.setStrokeWidth(2 + position);
            break;
    }

    return paint;
}
 
源代码12 项目: LaunchEnr   文件: PopupContainerWithArrow.java
/**
 * Adds an arrow view pointing at the original icon.
 * @param horizontalOffset the horizontal offset of the arrow, so that it
 *                              points at the center of the original icon
 */
private View addArrowView(int horizontalOffset, int verticalOffset, int width, int height) {
    LayoutParams layoutParams = new LayoutParams(width, height);
    if (mIsLeftAligned) {
        layoutParams.gravity = Gravity.START;
        layoutParams.leftMargin = horizontalOffset;
    } else {
        layoutParams.gravity = Gravity.END;
        layoutParams.rightMargin = horizontalOffset;
    }
    if (mIsAboveIcon) {
        layoutParams.topMargin = verticalOffset;
    } else {
        layoutParams.bottomMargin = verticalOffset;
    }

    View arrowView = new View(getContext());
    if (Gravity.isVertical(((FrameLayout.LayoutParams) getLayoutParams()).gravity)) {
        // This is only true if there wasn't room for the container next to the icon,
        // so we centered it instead. In that case we don't want to show the arrow.
        arrowView.setVisibility(INVISIBLE);
    } else {
        ShapeDrawable arrowDrawable = new ShapeDrawable(TriangleShape.create(
                width, height, !mIsAboveIcon));
        Paint arrowPaint = arrowDrawable.getPaint();
        // Note that we have to use getChildAt() instead of getItemViewAt(),
        // since the latter expects the arrow which hasn't been added yet.
        PopupItemView itemAttachedToArrow = (PopupItemView)
                (getChildAt(mIsAboveIcon ? getChildCount() - 1 : 0));
        arrowPaint.setColor(itemAttachedToArrow.getArrowColor(mIsAboveIcon));
        // The corner path effect won't be reflected in the shadow, but shouldn't be noticeable.
        int radius = getResources().getDimensionPixelSize(R.dimen.popup_arrow_corner_radius);
        arrowPaint.setPathEffect(new CornerPathEffect(radius));
        arrowView.setBackground(arrowDrawable);
        arrowView.setElevation(getElevation());
    }
    addView(arrowView, mIsAboveIcon ? getChildCount() : 0, layoutParams);
    return arrowView;
}
 
源代码13 项目: OXChart   文件: NightingaleRoseChart.java
public void init(Context context, AttributeSet attrs, int defStyleAttr) {
    dataList = new ArrayList<>();
    DisplayMetrics dm = getResources().getDisplayMetrics();
    ScrHeight = dm.heightPixels;
    ScrWidth = dm.widthPixels;

    //画笔初始化
    paintArc = new Paint();
    paintArc.setAntiAlias(true);

    paintLabel = new Paint();
    paintLabel.setAntiAlias(true);

    paintSelected = new Paint();
    paintSelected.setColor(Color.LTGRAY);
    paintSelected.setStyle(Paint.Style.STROKE);//设置空心
    paintSelected.setStrokeWidth(lineWidth*5);
    paintSelected.setAntiAlias(true);

    mLinePaint = new Paint();
    mLinePaint.setStyle(Paint.Style.FILL);
    mLinePaint.setStrokeWidth(lineWidth);
    mLinePaint.setAntiAlias(true);


    mlableLinePaint = new Paint();
    mlableLinePaint.setStyle(Paint.Style.STROKE);
    mlableLinePaint.setColor(Color.DKGRAY);
    mlableLinePaint.setStrokeWidth(3);
    // PathEffect是用来控制绘制轮廓(线条)的方式
    // 代码中的float数组,必须是偶数长度,且>=2,指定了多少长度的实线之后再画多少长度的空白
    // .如本代码中,绘制长度5的实线,再绘制长度5的空白,再绘制长度5的实线,再绘制长度5的空白,依次重复.1是偏移量,可以不用理会.
    PathEffect effects = new DashPathEffect(new float[]{5,5,5,5},1);
    mlableLinePaint.setPathEffect(effects);


}
 
源代码14 项目: Vorolay   文件: VoronoiView.java
private void initPaint() {
    p = new Paint();
    p.setAntiAlias(true);
    p.setColor(mBorderColor);
    p.setStrokeWidth(mBorderWidth);
    p.setStyle(Paint.Style.STROKE);

    if (mRoundCornersEnabled) {
        p.setStrokeJoin(Paint.Join.ROUND);
        p.setStrokeCap(Paint.Cap.SQUARE);
        p.setPathEffect(new CornerPathEffect(15));
    }
}
 
源代码15 项目: HzGrapher   文件: ScatterGraphView.java
private void setPaint()
{
	pPoint = new Paint();
	pPoint.setFlags(Paint.ANTI_ALIAS_FLAG);
	pPoint.setAntiAlias(true);
	pPoint.setFilterBitmap(true);
	pPoint.setColor(Color.BLUE);
	pPoint.setStrokeWidth(2);
	pPoint.setStyle(Style.FILL_AND_STROKE);
	
	pBaseLine = new Paint();
	pBaseLine.setFlags(Paint.ANTI_ALIAS_FLAG);
	pBaseLine.setAntiAlias(true);
	pBaseLine.setFilterBitmap(true);
	pBaseLine.setColor(Color.GRAY);
	pBaseLine.setStrokeWidth(3);
	
	pBaseLineD = new Paint();
	pBaseLineD.setFlags(Paint.ANTI_ALIAS_FLAG);
	pBaseLineD.setAntiAlias(true);
	pBaseLineD.setFilterBitmap(true);
	pBaseLineD.setColor(0xffcccccc);
	pBaseLineD.setStrokeWidth(1);
	pBaseLineD.setStyle(Style.STROKE);
	pBaseLineD.setPathEffect(new DashPathEffect(new float[] {10,5}, 0));
	
	pMarkText = new Paint();
	pMarkText.setFlags(Paint.ANTI_ALIAS_FLAG);
	pMarkText.setAntiAlias(true);
	pMarkText.setColor(Color.BLACK); 
	
}
 
源代码16 项目: hipda   文件: DownloadProgressBar.java
public DownloadProgressBar(Context context, AttributeSet attrs) {
    super(context, attrs);
    super.setOnClickListener(this);

    initIndeterminateAnimator();

    mClickListeners = new ArrayList<>();

    mBgPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
    mBgRect = new RectF();

    mProgressPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
    mProgressPaint.setStyle(Paint.Style.STROKE);
    mProgressPaint.setDither(true);
    mProgressPaint.setStrokeJoin(Paint.Join.ROUND);
    mProgressPaint.setStrokeCap(Paint.Cap.ROUND);
    mProgressPaint.setPathEffect(new CornerPathEffect(50f));

    mProgressRect = new RectF();

    Resources res = context.getResources();
    if (attrs != null) {
        TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.DownloadProgressBar, 0, 0);

        initBackgroundDrawableFromAttribs(res, a);

        mCurrState = a.getInt(R.styleable.DownloadProgressBar_state, STATE_IDLE);
        mCancelable = a.getBoolean(R.styleable.DownloadProgressBar_cancelable, DEF_CANCELABLE);
        mHideOnFinish = a.getBoolean(R.styleable.DownloadProgressBar_hideOnFinish, false);
        mProgressIndeterminateSweepAngle = a.getInteger(R.styleable.DownloadProgressBar_progressIndeterminateSweepAngle, DEF_PROGRESS_INDETERMINATE_WIDTH);
        mProgressDeterminateColor = a.getColor(R.styleable.DownloadProgressBar_progressDeterminateColor, DEF_DETERMINATE_COLOR);
        mProgressIndeterminateColor = a.getColor(R.styleable.DownloadProgressBar_progressIndeterminateColor, DEF_INDETERMINATE_COLOR);
        mProgressPaint.setStrokeWidth(
                a.getDimensionPixelSize(R.styleable.DownloadProgressBar_progressWidth, DEF_PROGRESS_WIDTH)
        );
        mProgressMargin = a.getDimensionPixelSize(R.styleable.DownloadProgressBar_progressMargin, DEF_PROGRESS_MARGIN);
        mCurrProgress = a.getInteger(R.styleable.DownloadProgressBar_currentProgress, 0);
        mMaxProgress = a.getInteger(R.styleable.DownloadProgressBar_maxProgress, 100);

        int icIdleDrawableId = a.getResourceId(R.styleable.DownloadProgressBar_idleIconDrawable, R.drawable.ic_action_download);
        mIdleIcon = res.getDrawable(icIdleDrawableId);
        mIdleIconWidth = a.getDimensionPixelSize(R.styleable.DownloadProgressBar_idleIconWidth, mIdleIcon.getMinimumWidth());
        mIdleIconHeight = a.getDimensionPixelSize(R.styleable.DownloadProgressBar_idleIconHeight, mIdleIcon.getMinimumHeight());

        int icCancelDrawableId = a.getResourceId(R.styleable.DownloadProgressBar_cancelIconDrawable, R.drawable.ic_action_cancel);
        mCancelIcon = res.getDrawable(icCancelDrawableId);
        mCancelIconWidth = a.getDimensionPixelSize(R.styleable.DownloadProgressBar_cancelIconWidth, mCancelIcon.getMinimumWidth());
        mCancelIconHeight = a.getDimensionPixelSize(R.styleable.DownloadProgressBar_cancelIconHeight, mCancelIcon.getMinimumHeight());

        int icFinishDrawableId = a.getResourceId(R.styleable.DownloadProgressBar_finishIconDrawable, R.drawable.ic_action_finish);
        mFinishIcon = res.getDrawable(icFinishDrawableId);
        mFinishIconWidth = a.getDimensionPixelSize(R.styleable.DownloadProgressBar_finishIconWidth, mFinishIcon.getMinimumWidth());
        mFinishIconHeight = a.getDimensionPixelSize(R.styleable.DownloadProgressBar_finishIconHeight, mFinishIcon.getMinimumHeight());

        int icErrorDrawableId = a.getResourceId(R.styleable.DownloadProgressBar_errorIconDrawable, R.drawable.ic_action_refresh);
        mErrorIcon = res.getDrawable(icErrorDrawableId);
        mErrorIconWidth = a.getDimensionPixelSize(R.styleable.DownloadProgressBar_errorIconWidth, mErrorIcon.getMinimumWidth());
        mErrorIconHeight = a.getDimensionPixelSize(R.styleable.DownloadProgressBar_errorIconHeight, mErrorIcon.getMinimumHeight());

        a.recycle();
    } else {
        mCurrState = STATE_IDLE;
        mCancelable = DEF_CANCELABLE;
        mHideOnFinish = false;
        mProgressIndeterminateSweepAngle = DEF_PROGRESS_INDETERMINATE_WIDTH;
        mProgressDeterminateColor = DEF_DETERMINATE_COLOR;
        mProgressIndeterminateColor = DEF_INDETERMINATE_COLOR;
        mProgressPaint.setStrokeWidth(DEF_PROGRESS_WIDTH);
        mProgressMargin = DEF_PROGRESS_MARGIN;
        mCurrProgress = 0;
        mMaxProgress = 100;

        mIdleBgColor = DEF_BG_COLOR;
        mFinishBgColor = DEF_BG_COLOR;
        mErrorBgColor = DEF_BG_COLOR;
        mIndeterminateBgColor = DEF_BG_COLOR;
        mDeterminateBgColor = DEF_BG_COLOR;

        mIdleIcon = res.getDrawable(R.drawable.ic_action_download);
        mIdleIconWidth = mIdleIcon.getMinimumWidth();
        mIdleIconHeight = mIdleIcon.getMinimumHeight();

        mCancelIcon = res.getDrawable(R.drawable.ic_action_cancel);
        mCancelIconWidth = mCancelIcon.getMinimumWidth();
        mCancelIconHeight = mCancelIcon.getMinimumHeight();

        mFinishIcon = res.getDrawable(R.drawable.ic_action_finish);
        mFinishIconWidth = mFinishIcon.getMinimumWidth();
        mFinishIconHeight = mFinishIcon.getMinimumHeight();

        mErrorIcon = res.getDrawable(R.drawable.ic_action_refresh);
        mErrorIconWidth = mErrorIcon.getMinimumWidth();
        mErrorIconHeight = mErrorIcon.getMinimumHeight();
    }

    if (mCurrState == STATE_INDETERMINATE)
        setIndeterminate();
    if (mCurrState == STATE_FINISHED && mHideOnFinish)
        setVisibility(GONE);
}
 
源代码17 项目: science-journal   文件: ChartView.java
private void makeDashedLinePaint(Paint paint, float lineWidth, float dashSize) {
  paint.setStyle(Paint.Style.STROKE);
  paint.setStrokeWidth(lineWidth);
  paint.setPathEffect(new DashPathEffect(new float[] {dashSize, dashSize}, dashSize));
}
 
源代码18 项目: FabricView   文件: FabricView.java
/**
 *  Constructor, sets defaut values.
 *
 * @param context the activity that containts the view
 * @param attrs   view attributes
 */
public FabricView(Context context, AttributeSet attrs) {
    super(context, attrs);

    setWillNotDraw(false);

    setFocusable(true);
    setFocusableInTouchMode(true);
    this.setBackgroundColor(mBackgroundColor);
    mTextExpectTouch = false;

    selectionPaint = new Paint();
    selectionPaint.setAntiAlias(true);
    selectionPaint.setColor(selectionColor);
    selectionPaint.setStyle(Paint.Style.STROKE);
    selectionPaint.setStrokeJoin(Paint.Join.ROUND);
    selectionPaint.setStrokeWidth(SELECTION_LINE_WIDTH);
    selectionPaint.setPathEffect(new DashPathEffect(new float[]{10, 20}, 0));

    deleteIcon = BitmapFactory.decodeResource(context.getResources(),
            android.R.drawable.ic_menu_delete);

    mScaleDetector = new ScaleRotationGestureDetector(context, new ScaleRotationGestureDetector.OnScaleRotationGestureListener() {

        @Override
        public void onScaleEnd(ScaleGestureDetector detector) {
            handleScaleEnd();
        }

        @Override
        public boolean onScaleBegin(ScaleGestureDetector detector) {
            return handleScaleBegin((ScaleRotationGestureDetector) detector);
        }

        @Override
        public boolean onScale(ScaleGestureDetector detector) {
            return handleScale((ScaleRotationGestureDetector) detector);
        }

        @Override
        public boolean onRotate(ScaleRotationGestureDetector detector) {
            return handleScale((ScaleRotationGestureDetector) detector);
        }

    });
}
 
源代码19 项目: Genius-Android   文件: BorderShape.java
@SuppressWarnings("SuspiciousNameCombination")
@Override
public void draw(Canvas canvas, Paint paint) {
    if (mBorder == null)
        return;

    float width = getWidth();
    float height = getHeight();

    if (mPathEffect == null) {

        // left
        if (mBorder.left > 0)
            canvas.drawRect(0, 0, mBorder.left, height, paint);

        // top
        if (mBorder.top > 0)
            canvas.drawRect(0, 0, width, mBorder.top, paint);

        // right
        if (mBorder.right > 0)
            canvas.drawRect(width - mBorder.right, 0, width, height, paint);

        // bottom
        if (mBorder.bottom > 0)
            canvas.drawRect(0, height - mBorder.bottom, width, height, paint);

    } else {
        if (paint.getPathEffect() != mPathEffect) {
            paint.setStyle(Paint.Style.STROKE);
            paint.setPathEffect(mPathEffect);
        }

        // left
        if (mBorder.left > 0) {
            paint.setStrokeWidth(mBorder.left);
            initPath(mBorder.left / 2, 0, mBorder.left / 2, height);
            canvas.drawPath(mPath, paint);
        }

        // top
        if (mBorder.top > 0) {
            paint.setStrokeWidth(mBorder.top);
            initPath(0, mBorder.top / 2, width, mBorder.top / 2);
            canvas.drawPath(mPath, paint);
        }

        // right
        if (mBorder.right > 0) {
            paint.setStrokeWidth(mBorder.right);
            initPath(width - mBorder.right / 2, 0, width - mBorder.right / 2, height);
            canvas.drawPath(mPath, paint);
        }

        // bottom
        if (mBorder.bottom > 0) {
            paint.setStrokeWidth(mBorder.bottom);
            initPath(0, height - mBorder.bottom / 2, width, height - mBorder.bottom / 2);
            canvas.drawPath(mPath, paint);
        }
    }
}
 
源代码20 项目: NightWatch   文件: PercentileView.java
private void drawGrid(Canvas canvas) {
    Paint myPaint = new Paint();
    myPaint.setStyle(Paint.Style.STROKE);
    myPaint.setAntiAlias(false);
    myPaint.setColor(Color.LTGRAY);
    myPaint.setStrokeWidth(dp2px(1));

    Paint myPaintText = new Paint();
    myPaintText.setStyle(Paint.Style.STROKE);
    myPaintText.setAntiAlias(false);
    myPaintText.setColor(Color.LTGRAY);
    myPaintText.setTextSize(dp2px(10));

    canvas.drawLine(dpOffset, 0, dpOffset, canvas.getHeight() - dpOffset, myPaint);
    canvas.drawLine(dpOffset, canvas.getHeight() - dpOffset, canvas.getWidth(), canvas.getHeight() - dpOffset, myPaint);

    for (int i = 0; i < 24; i++) {
        int x = (int) (dpOffset + ((canvas.getWidth() - dpOffset) / 24d) * i);
        if (i % 2 == 0) {
            canvas.drawLine(x, canvas.getHeight() - dpOffset - dp2px(2), x, canvas.getHeight() - dpOffset + dp2px(3), myPaint);
            if (i >= 10) x = x - dp2px(3);
            canvas.drawText(i + "", x - dp2px(4), canvas.getHeight() - dpOffset + dp2px(13), myPaintText);
        } else {
            canvas.drawLine(x, canvas.getHeight() - dpOffset - dp2px(2), x, canvas.getHeight() - dpOffset + dp2px(6), myPaint);
            if (i >= 10) x = x - dp2px(3);
            canvas.drawText(i + "", x - dp2px(4), canvas.getHeight() - dpOffset + dp2px(20), myPaintText);
        }
    }


    // add level markings
    myPaint.setPathEffect(new DashPathEffect(new float[]{dp2px(2), dp2px(3)}, 0));
    Path path = new Path();
    double[] levels;
    String[] labels;
    SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(getContext());
    boolean mgdl = "mgdl".equals(settings.getString("units", "mgdl"));
    if (mgdl) {
        levels = new double[]{50, 100, 150, 200, 250, 300, 350};
        labels = new String[]{"50", "100", "150", "200", "250", "300", "350"};
    } else {
        levels = new double[]{2.8, 5.5, 8.3, 11, 14, 17, 20};
        labels = new String[]{"2.8", "5.5", "8.3", "11", "14", "17", "20"};
        for (int i = 0; i < levels.length; i++) {
            levels[i] *= Constants.MMOLL_TO_MGDL;
        }
    }
    for (int i = 0; i < levels.length; i++) {
        path.moveTo(dpOffset, getYfromBG(levels[i], canvas));
        path.lineTo(canvas.getWidth(), getYfromBG(levels[i], canvas));
        canvas.drawText(labels[i], dp2px(5), getYfromBG(levels[i], canvas) + dp2px(4), myPaintText);
    }

    canvas.drawPath(path, myPaint);

}