當前位置: 首頁>>代碼示例>>Java>>正文


Java PathMeasure.getLength方法代碼示例

本文整理匯總了Java中android.graphics.PathMeasure.getLength方法的典型用法代碼示例。如果您正苦於以下問題:Java PathMeasure.getLength方法的具體用法?Java PathMeasure.getLength怎麽用?Java PathMeasure.getLength使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在android.graphics.PathMeasure的用法示例。


在下文中一共展示了PathMeasure.getLength方法的15個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Java代碼示例。

示例1: PathInterpolatorGingerbread

import android.graphics.PathMeasure; //導入方法依賴的package包/類
public PathInterpolatorGingerbread(Path path) {
    final PathMeasure pathMeasure = new PathMeasure(path, false /* forceClosed */);

    final float pathLength = pathMeasure.getLength();
    final int numPoints = (int) (pathLength / PRECISION) + 1;

    mX = new float[numPoints];
    mY = new float[numPoints];

    final float[] position = new float[2];
    for (int i = 0; i < numPoints; ++i) {
        final float distance = (i * pathLength) / (numPoints - 1);
        pathMeasure.getPosTan(distance, position, null /* tangent */);

        mX[i] = position[0];
        mY[i] = position[1];
    }
}
 
開發者ID:weiwenqiang,項目名稱:GitHub,代碼行數:19,代碼來源:PathInterpolatorGingerbread.java

示例2: setPos

import android.graphics.PathMeasure; //導入方法依賴的package包/類
/**
 * 用來給每一個button設置一個中心點
 *
 * @param orbit 一個特定角度的path
 */
private void setPos(Path orbit) {
    PathMeasure measure = new PathMeasure(orbit, false);
    TextLableView tv;
    for (int i = 0; i < mButtons.size(); i++) {
        PopupButton pp = mButtons.get(i);
        tv = kvs.get(pp);
        float[] coords = new float[]{0f, 0f};
        int length = (int) ((i) * measure.getLength() / mButtons.size());
        measure.getPosTan(length, coords, null);
        int px = (int) coords[0] - pp.getMeasuredWidth() / 2;
        int py = (int) coords[1] - pp.getMeasuredHeight() / 2;
        int tvx = (int) coords[0] - tv.getMeasuredWidth() / 2;
        tv.x = tvx;
        tv.y = py - 60;
        pp.x = px;
        pp.y = py;
    }
}
 
開發者ID:panshen,項目名稱:PopupCircleMenu,代碼行數:24,代碼來源:PopupLayer.java

示例3: PathInterpolatorDonut

import android.graphics.PathMeasure; //導入方法依賴的package包/類
public PathInterpolatorDonut(Path path) {
    final PathMeasure pathMeasure = new PathMeasure(path, false /* forceClosed */);

    final float pathLength = pathMeasure.getLength();
    final int numPoints = (int) (pathLength / PRECISION) + 1;

    mX = new float[numPoints];
    mY = new float[numPoints];

    final float[] position = new float[2];
    for (int i = 0; i < numPoints; ++i) {
        final float distance = (i * pathLength) / (numPoints - 1);
        pathMeasure.getPosTan(distance, position, null /* tangent */);

        mX[i] = position[0];
        mY[i] = position[1];
    }
}
 
開發者ID:liuwei1993,項目名稱:AndroidAnimationTools,代碼行數:19,代碼來源:PathInterpolatorDonut.java

示例4: PathInterpolatorBase

import android.graphics.PathMeasure; //導入方法依賴的package包/類
public PathInterpolatorBase(Path path) {
  final PathMeasure pathMeasure = new PathMeasure(path, false /* forceClosed */);

  final float pathLength = pathMeasure.getLength();
  final int numPoints = (int) (pathLength / PRECISION) + 1;

  mX = new float[numPoints];
  mY = new float[numPoints];

  final float[] position = new float[2];
  for (int i = 0; i < numPoints; ++i) {
    final float distance = (i * pathLength) / (numPoints - 1);
    pathMeasure.getPosTan(distance, position, null /* tangent */);

    mX[i] = position[0];
    mY[i] = position[1];
  }
}
 
開發者ID:dialogs,項目名稱:android-dialer,代碼行數:19,代碼來源:PathInterpolatorCompat.java

示例5: createSuccessPath

import android.graphics.PathMeasure; //導入方法依賴的package包/類
private void createSuccessPath(){

        if(mSuccessPath != null){
            mSuccessPath.reset();
        }else{
            mSuccessPath = new Path();
        }

        float mLineWith = 2*mDensity;

        float left = width/2 - mRadius + mRadius/3 + mLineWith;
        float top = mPadding + mRadius/2 + mLineWith;
        float right = width/2 + mRadius - mLineWith - mRadius/3;
        float bottom = (mLineWith + mRadius) * 1.5f + mPadding/2;
        float xPoint = width/2 - mRadius/6;

        mSuccessPath = new Path();
        mSuccessPath.moveTo(left, mPadding+mRadius + mLineWith);
        mSuccessPath.lineTo(xPoint,bottom);
        mSuccessPath.lineTo(right,top);

        PathMeasure measure = new PathMeasure(mSuccessPath, false);
        mSuccessPathLength = measure.getLength();
        mSuccessPathIntervals = new float[]{mSuccessPathLength, mSuccessPathLength};
    }
 
開發者ID:StevenDXC,項目名稱:DxLoadingButton,代碼行數:26,代碼來源:LoadingButton.java

示例6: createFailedPath

import android.graphics.PathMeasure; //導入方法依賴的package包/類
private void createFailedPath(){

        if(mFailedPath != null){
            mFailedPath.reset();
            mFailedPath2.reset();
        }else{
            mFailedPath = new Path();
            mFailedPath2 = new Path();
        }

        float left = width/2 - mRadius + mRadius/2;
        float top = mRadius/2 + mPadding;

        mFailedPath.moveTo(left,top);
        mFailedPath.lineTo(left+mRadius,top+mRadius);

        mFailedPath2.moveTo(width/2 + mRadius/2,top);
        mFailedPath2.lineTo(width/2 - mRadius + mRadius/2,top+mRadius);

        PathMeasure measure = new PathMeasure(mFailedPath, false);
        mFailedPathLength = measure.getLength();
        mFailedPathIntervals = new float[]{mFailedPathLength, mFailedPathLength};

        PathEffect PathEffect = new DashPathEffect(mFailedPathIntervals, mFailedPathLength);
        mPathEffectPaint2.setPathEffect(PathEffect);
    }
 
開發者ID:StevenDXC,項目名稱:DxLoadingButton,代碼行數:27,代碼來源:LoadingButton.java

示例7: getPoints

import android.graphics.PathMeasure; //導入方法依賴的package包/類
protected PathPoints[] getPoints(Path path, int size) {

        //Size of 100 indicates that, 100 points
        // would be extracted from the path
        PathPoints[] pointArray = new PathPoints[size];
        PathMeasure pm = new PathMeasure(path, false);
        float length = pm.getLength();
        float distance = 0f;
        float speed = length / size;
        int counter = 0;
        float[] aCoordinates = new float[2];

        while ((distance < length) && (counter < size)) {
            pm.getPosTan(distance, aCoordinates, null);
            pointArray[counter] = new PathPoints(aCoordinates[0], aCoordinates[1]);
            counter++;
            distance = distance + speed;
        }

        return pointArray;
    }
 
開發者ID:Haoxiqiang,項目名稱:MaterialCalendar,代碼行數:22,代碼來源:WeatherTemplateView.java

示例8: setPoints

import android.graphics.PathMeasure; //導入方法依賴的package包/類
public void setPoints(ArrayList<float[]> pointsToPath){
    synchronized (pointsToPath) {
        this.points = pointsToPath;
        float[] startPoint = convertXYToLinePoint(points.get(0));
        path.moveTo(startPoint[0], startPoint[1]);
        for (int i = 0; i<this.points.size(); i++) {
            float[] linePoint = convertXYToLinePoint(points.get(i));
            path.lineTo(linePoint[0],linePoint[1]);
        }
    }
    pathMeasure = new PathMeasure(path, false);
    pathLength = pathMeasure.getLength(); // the interpolated length of the entire path as it would be drawn on the screen in dp
    PathEffect pathEffect = new PathDashPathEffect(makeConvexArrow(15.0f, 15.0f), 5.0f, 0.0f, PathDashPathEffect.Style.ROTATE);
    paintSettings.setPathEffect(pathEffect);
    invalidate();
}
 
開發者ID:DifferentialEq,項目名稱:DirectionFieldAndroid,代碼行數:17,代碼來源:PhasePlane.java

示例9: calculateMenuItemPosition

import android.graphics.PathMeasure; //導入方法依賴的package包/類
/**
 * calculate and set position to menu items
 */
private void calculateMenuItemPosition() {

    float itemRadius = (expandedRadius + collapsedRadius) / 2, f;
    RectF area = new RectF(
            center.x - itemRadius,
            center.y - itemRadius,
            center.x + itemRadius,
            center.y + itemRadius);
    Path path = new Path();
    path.addArc(area, (float) fromAngle, (float) (toAngle - fromAngle));
    PathMeasure measure = new PathMeasure(path, false);
    float len = measure.getLength();
    int divisor = getChildCount();
    float divider = len / divisor;

    for (int i = 0; i < getChildCount(); i++) {
        float[] coords = new float[2];
        measure.getPosTan(i * divider + divider * .5f, coords, null);
        FilterMenu.Item item = (FilterMenu.Item) getChildAt(i).getTag();
        item.setX((int) coords[0] - item.getView().getMeasuredWidth() / 2);
        item.setY((int) coords[1] - item.getView().getMeasuredHeight() / 2);
    }
}
 
開發者ID:linroid,項目名稱:FilterMenu,代碼行數:27,代碼來源:FilterMenuLayout.java

示例10: draw

import android.graphics.PathMeasure; //導入方法依賴的package包/類
void draw(Canvas canvas, Paint paint, int color, float size, Path path) {
    PathMeasure mPathMeasure = new PathMeasure();
    float[] mPosition = new float[2];
    float[] mTan = new float[2];

    mPathMeasure.setPath(path, false);

    paint.setAntiAlias(true);
    paint.setColor(color);

    paint.setColorFilter(new PorterDuffColorFilter(color, PorterDuff.Mode.MULTIPLY));
    Bitmap brush;
    // done this way because of a bug in
    // Bitmap.createScaledBitmap(getBrush(),(int) size,(int) size,true);
    brush = createScaledBitmap(getBrush(), (int) size, (int) size, true);
    float len = mPathMeasure.getLength();
    float s2 = size / 2;
    float step = s2 / 8;
    for (float i = 0; i < len; i += step) {
        mPathMeasure.getPosTan(i, mPosition, mTan);
        //                canvas.drawCircle(pos[0], pos[1], size, paint);
        canvas.drawBitmap(brush, mPosition[0] - s2, mPosition[1] - s2, paint);
    }
}
 
開發者ID:asm-products,項目名稱:nexus-gallery,代碼行數:25,代碼來源:ImageFilterDraw.java

示例11: onSizeChanged

import android.graphics.PathMeasure; //導入方法依賴的package包/類
@Override
protected void onSizeChanged(final int w, final int h, int oldw, int oldh) {
    super.onSizeChanged(w, h, oldw, oldh);

    // Scale and translate the SVG path.
    Matrix matrix = new Matrix();
    RectF rectF = new RectF();
    mPath.computeBounds(rectF, false);
    RectF largeRectF = new RectF(0, 0, w * SCALE_FACTOR, h * SCALE_FACTOR);
    matrix.setRectToRect(rectF, largeRectF, Matrix.ScaleToFit.CENTER);

    float pathTranslationY = getResources().getDimension(R.dimen.path_translation_y);
    float pathTranslationX = getResources().getDimension(R.dimen.path_translation_x);
    matrix.postTranslate(pathTranslationX, pathTranslationY);
    mPath.transform(matrix);

    mPathMeasure = new PathMeasure(mPath, false);
    mLength = mPathMeasure.getLength();

    if (mProgress != 0) {
        // Animate the restored frame.
        animate(mProgress);
    }
}
 
開發者ID:IFTTT,項目名稱:SparkleMotion,代碼行數:25,代碼來源:PaperPlaneView.java

示例12: initPath

import android.graphics.PathMeasure; //導入方法依賴的package包/類
private void initPath(Path path) {
    final PathMeasure pathMeasure = new PathMeasure(path, false /* forceClosed */);

    final float pathLength = pathMeasure.getLength();
    final int numPoints = (int) (pathLength / PRECISION) + 1;

    mX = new float[numPoints];
    mY = new float[numPoints];

    final float[] position = new float[2];
    for (int i = 0; i < numPoints; ++i) {
        final float distance = (i * pathLength) / (numPoints - 1);
        pathMeasure.getPosTan(distance, position, null /* tangent */);

        mX[i] = position[0];
        mY[i] = position[1];
    }
}
 
開發者ID:iamareebjamal,項目名稱:eggster_xposed,代碼行數:19,代碼來源:PathInterpolator.java

示例13: drawFinish

import android.graphics.PathMeasure; //導入方法依賴的package包/類
private void drawFinish() {
    mCurrentlyDrawing = false;
    PathMeasure pm = new PathMeasure(mPath, false);
    mPath.lineTo(mX, mY);
    if (pm.getLength() > 0) {
        mCanvas.drawPath(mPath, mPaint);
        mUndo.add(mPath);
    } else {
        mCanvas.drawPoint(mX, mY, mPaint);
        mUndo.add(mX, mY);
    }
    mUndoModeActive = true;
    // kill the path so we don't double draw
    mPath.reset();
    if (mUndo.size() == 1 && mCardViewer.get() != null) {
        mCardViewer.get().supportInvalidateOptionsMenu();
    }
}
 
開發者ID:ankidroid,項目名稱:Anki-Android,代碼行數:19,代碼來源:Whiteboard.java

示例14: setPath

import android.graphics.PathMeasure; //導入方法依賴的package包/類
/**
 * Set the path.
 *
 * @param path The new path
 */
public void setPath(Path path) {
    this.path = path;
    partialPath = new Path();
    pathMeasure = new PathMeasure(this.path, false);
    pathLength = pathMeasure.getLength();
}
 
開發者ID:weiwenqiang,項目名稱:GitHub,代碼行數:12,代碼來源:WoWoPathView.java

示例15: drawTick

import android.graphics.PathMeasure; //導入方法依賴的package包/類
public void drawTick(Canvas canvas) {
    mBgPaint.setColor(mProgressColor);
    canvas.drawRoundRect(mOvalRect, mRadius, mRadius, mBgPaint);

    //draw left
    mLeftPath.moveTo(mWidth / 2, mHeight * 3 / 4);
    mLeftPath.lineTo(mWidth / 2 - mHeight / 4, mHeight * 3 / 5);

    mLeftPathMeasure = new PathMeasure(mLeftPath, true);
    Path leftDst = new Path();
    float leftStop = mLeftPathMeasure.getLength() * mAnimationValue;
    mLeftPathMeasure.getSegment(0, leftStop, leftDst, true);
    canvas.drawPath(leftDst, mTickPaint);


    //draw right
    mRightPath.moveTo(mWidth / 2, mHeight * 3 / 4);
    mRightPath.lineTo(mWidth / 2 + mHeight / 4, mHeight / 4);

    mRightPathMeasure = new PathMeasure(mRightPath, true);
    Path rightDst = new Path();
    float rightStop = mRightPathMeasure.getLength() * mAnimationValue;
    mRightPathMeasure.getSegment(0, rightStop, rightDst, true);
    canvas.drawPath(rightDst, mTickPaint);


    //some devices do not support pathmeasure
    if (mIsDone) {
        canvas.drawPath(mLeftPath, mTickPaint);
        canvas.drawPath(mRightPath, mTickPaint);
    }


}
 
開發者ID:arjinmc,項目名稱:AndroidButtonLib,代碼行數:35,代碼來源:DownloadButton.java


注:本文中的android.graphics.PathMeasure.getLength方法示例由純淨天空整理自Github/MSDocs等開源代碼及文檔管理平台,相關代碼片段篩選自各路編程大神貢獻的開源項目,源碼版權歸原作者所有,傳播和使用請參考對應項目的License;未經允許,請勿轉載。