类android.graphics.drawable.shapes.PathShape源码实例Demo

下面列出了怎么用android.graphics.drawable.shapes.PathShape的API类实例代码及写法,或者点击链接到github查看源代码。

源代码1 项目: Document-Scanner   文件: ImageProcessor.java
private void drawDocumentBox(Point[] points, Size stdSize) {

        Path path = new Path();

        HUDCanvasView hud = mMainActivity.getHUD();

        // ATTENTION: axis are swapped

        float previewWidth = (float) stdSize.height;
        float previewHeight = (float) stdSize.width;

        path.moveTo( previewWidth - (float) points[0].y, (float) points[0].x );
        path.lineTo( previewWidth - (float) points[1].y, (float) points[1].x );
        path.lineTo( previewWidth - (float) points[2].y, (float) points[2].x );
        path.lineTo( previewWidth - (float) points[3].y, (float) points[3].x );
        path.close();

        PathShape newBox = new PathShape(path , previewWidth , previewHeight);

        Paint paint = new Paint();
        paint.setColor(Color.argb(64, 0, 255, 0));

        Paint border = new Paint();
        border.setColor(Color.rgb(0, 255, 0));
        border.setStrokeWidth(5);

        hud.clear();
        hud.addShape(newBox, paint, border);
        mMainActivity.invalidateHUD();
    }
 
源代码2 项目: ResearchStack   文件: SignatureView.java
/**
 * 1. Iterating over the path points, saving them in an array ... not bueno. Try to use
 * {@link android.graphics.PathMeasure} class and get minX and minY from that.
 * <p>
 * 2. Scale bitmap down. Currently drawing at density of device.
 */
public Bitmap createSignatureBitmap() {

    Paint bitmapSigPaint = new Paint(sigPaint);
    bitmapSigPaint.setColor(sigPrintColor);

    RectF sigBounds = new RectF();
    sigPath.computeBounds(sigBounds, true);

    if (sigBounds.width() != 0 && sigBounds.height() != 0) {
        float density = getResources().getDisplayMetrics().density;
        int dipWidth = (int) (sigBounds.width() / density);
        int dipHeight = (int) (sigBounds.height() / density);

        Bitmap returnedBitmap = Bitmap.createBitmap(dipWidth, dipHeight,
                Bitmap.Config.ARGB_4444);

        float minX = Integer.MAX_VALUE;
        float minY = Integer.MAX_VALUE;

        for (LinePathPoint point : sigPoints) {
            minX = Math.min(minX, point.x);
            minY = Math.min(minY, point.y);
        }

        sigPath.offset(-minX, -minY);

        PathShape pathShape = new PathShape(sigPath, sigBounds.width(), sigBounds.height());
        pathShape.resize(dipWidth, dipHeight);

        Canvas canvas = new Canvas(returnedBitmap);
        pathShape.draw(canvas, bitmapSigPaint);

        return returnedBitmap;
    }

    return null;
}
 
源代码3 项目: md2tv   文件: MainActivity.java
public void crossLineButtonClick(View view){
    Path path = new Path();
    path.moveTo(0, 12);
    path.lineTo(100, 88);

    ShapeBackgroundSpan shapeSpan = new ShapeBackgroundSpan(0xFF000000, new PathShape(path, 100, 100), true);
    shapeSpan.setStrokeWidth(6);

    textView.setSelectionSpan(shapeSpan, new ArrowBackgroundSpan(0xFF7373, 0x22000000));
}
 
源代码4 项目: CurtainSlidingMenu   文件: MainActivity.java
public void crossLineButtonClick(View view){
    Path path = new Path();
    path.moveTo(0, 12);
    path.lineTo(100, 88);

    ShapeBackgroundSpan shapeSpan = new ShapeBackgroundSpan(0xFF000000, new PathShape(path, 100, 100), true);
    shapeSpan.setStrokeWidth(6);

    editText.setSelectionSpan(shapeSpan, new ArrowBackgroundSpan(0xFF7373, 0x22000000));
}
 
源代码5 项目: CVScanner   文件: DocumentGraphic.java
/**
 * Draw the graphic on the supplied canvas.  Drawing should use the following methods to
 * convert to view coordinates for the graphics that are drawn:
 * <ol>
 * <li>{@link GraphicOverlay.Graphic#scaleX(float)} and {@link GraphicOverlay.Graphic#scaleY(float)} adjust the size of
 * the supplied value from the preview scale to the view scale.</li>
 * <li>{@link GraphicOverlay.Graphic#translateX(float)} and {@link GraphicOverlay.Graphic#translateY(float)} adjust the
 * coordinate from the preview's coordinate system to the view coordinate system.</li>
 * </ol>
 *
 * @param canvas drawing canvas
 */
@Override
public void draw(Canvas canvas) {
    //TODO fix the coordinates see http://zhengrui.github.io/android-coordinates.html

    if(scannedDoc != null && scannedDoc.detectedQuad != null){
        //boolean isPortrait = Util.isPortraitMode(mOverlay.getContext());
        Path path = new Path();

        /*
        Log.d("DOC-GRAPHIC", "IsPortrait? " + isPortrait);

        float tlX = isPortrait? translateY((float) scannedDoc.detectedQuad.points[0].y):translateX((float) scannedDoc.detectedQuad.points[0].x);
        float tlY = isPortrait? translateX((float) scannedDoc.detectedQuad.points[0].x):translateY((float) scannedDoc.detectedQuad.points[0].y);

        Log.d("DOC-GRAPHIC", "Top left: x: " + scannedDoc.detectedQuad.points[0].x + ", y: " + scannedDoc.detectedQuad.points[0].y
                + " -> x: " + tlX + ", y: " + tlY);

        float blX = isPortrait? translateY((float) scannedDoc.detectedQuad.points[1].y):translateX((float) scannedDoc.detectedQuad.points[1].x);
        float blY = isPortrait? translateX((float) scannedDoc.detectedQuad.points[1].x):translateY((float) scannedDoc.detectedQuad.points[1].y);

        Log.d("DOC-GRAPHIC", "Bottom left: x: " + scannedDoc.detectedQuad.points[1].x + ", y: " + scannedDoc.detectedQuad.points[1].y
                + " -> x: " + blX + ", y: " + blY);

        float brX = isPortrait? translateY((float) scannedDoc.detectedQuad.points[2].y):translateX((float) scannedDoc.detectedQuad.points[2].x);
        float brY = isPortrait? translateX((float) scannedDoc.detectedQuad.points[2].x):translateY((float) scannedDoc.detectedQuad.points[2].y);

        Log.d("DOC-GRAPHIC", "Bottom right: x: " + scannedDoc.detectedQuad.points[2].x + ", y: " + scannedDoc.detectedQuad.points[2].y
                + " -> x: " + brX + ", y: " + brY);

        float trX = isPortrait? translateY((float) scannedDoc.detectedQuad.points[3].y):translateX((float) scannedDoc.detectedQuad.points[3].x);
        float trY = isPortrait? translateX((float) scannedDoc.detectedQuad.points[3].x):translateY((float) scannedDoc.detectedQuad.points[3].y);

        Log.d("DOC-GRAPHIC", "Top right: x: " + scannedDoc.detectedQuad.points[3].x + ", y: " + scannedDoc.detectedQuad.points[3].y
                + " -> x: " + trX + ", y: " + trY);
        */
        int frameWidth = scannedDoc.getImage().getMetadata().getHeight();

        path.moveTo(((float)(frameWidth - scannedDoc.detectedQuad.points[0].y)), ((float)scannedDoc.detectedQuad.points[0].x));
        path.lineTo(((float)(frameWidth - scannedDoc.detectedQuad.points[1].y)), ((float)scannedDoc.detectedQuad.points[1].x));
        path.lineTo(((float)(frameWidth - scannedDoc.detectedQuad.points[2].y)), ((float)scannedDoc.detectedQuad.points[2].x));
        path.lineTo(((float)(frameWidth - scannedDoc.detectedQuad.points[3].y)), ((float)scannedDoc.detectedQuad.points[3].x));
        path.close();

        PathShape shape = new PathShape(path, scannedDoc.getImage().getMetadata().getHeight(), scannedDoc.getImage().getMetadata().getWidth());
        shape.resize(canvas.getWidth(), canvas.getHeight());

        shape.draw(canvas, bodyPaint);
        shape.draw(canvas, borderPaint);

        //canvas.drawPath(path, borderPaint);
        //canvas.drawPath(path, bodyPaint);

        Log.d("DOC-GRAPHIC", "DONE DRAWING");
    }
}
 
private void drawDocumentBox(Point[] points, Size stdSize) {

        Path path = new Path();

        HUDCanvasView hud = mMainActivity.getHUD();

        // ATTENTION: axis are swapped

        float previewWidth = (float) stdSize.height;
        float previewHeight = (float) stdSize.width;

        path.moveTo( previewWidth - (float) points[0].y, (float) points[0].x );
        path.lineTo( previewWidth - (float) points[1].y, (float) points[1].x );
        path.lineTo( previewWidth - (float) points[2].y, (float) points[2].x );
        path.lineTo( previewWidth - (float) points[3].y, (float) points[3].x );
        path.close();

        PathShape newBox = new PathShape(path , previewWidth , previewHeight);

        Paint paint = new Paint();
        paint.setColor(Color.argb(180, 66, 165, 245));

        Paint border = new Paint();
        border.setColor(Color.rgb(66, 165, 245));
        border.setStrokeWidth(5);

        hud.clear();
        hud.addShape(newBox, paint, border);
        mMainActivity.invalidateHUD();


    }
 
 类方法
 同包方法