android path的长度,浅谈Android PathMeasure详解和应用

PathMeasure,顾名思义,就是一个用来测量Path的类,主要有以下方法:

69226f03e40a52d2e5f12582f432604f.png

构造方法

无参构造方法:

PathMeasure()

创建一个空的PathMeasure,用这个构造函数可创建一个空的 PathMeasure,但是使用之前需要先调用 setPath 方法来与 Path 进行关联。被关联的 Path 必须是已经创建好的,如果关联之后 Path 内容进行了更改,则需要使用 setPath 方法重新关联。

有参构造方法

PathMeasure(Path path, boolean forceClosed)

该构造函数是创建一个 PathMeasure 并关联一个 Path, 其实和创建一个空的 PathMeasure 后调用 setPath 进行关联效果是一样的,同样,被关联的 Path 也必须是已经创建好的,如果关联之后 Path 内容进行了更改,则需要使用 setPath 方法重新关联。 该方法有两个参数,第一个参数自然就是被关联的 Path 了,第二个参数是用来确保 Path 闭合,如果设置为 true, 则不论之前Path是否闭合,都会自动闭合该 Path(如果Path可以闭合的话)。

这里需要说明以下forceClosed:

1)不论 forceClosed 设置为何种状态(true 或者 false), 都不会影响原有Path的状态,即 Path 与 PathMeasure 关联之后,之前的的 Path 不会有任何改变。

2)forceClosed 的设置状态可能会影响测量结果,如果 Path 没有闭合但在与 PathMeasure 关联的时候设置 forceClosed 为 true 时,测量结果可能会比 Path 实际长度稍长一点,获取得到的是该 Path 闭合时的状态。

setPath

setPath(Path path, boolean forceClosed)方法就是关联一个Path,需要预先创建好。

isClosed

isClosed方法用于判断 Path 是否闭合,但是如果你在关联 Path 的时候设置 forceClosed 为 true 的话,这个方法的返回值则一定为true。

getLength

getLength()方法用于获取Path的长度。

public class PathMeasureView extends View {

private static final String TAG = "lwj";

private int mViewHeight;

private int mViewWidth;

private Paint paint;

public PathMeasureView(Context context) {

super(context);

init(context);

}

private void init(Context context) {

paint = new Paint();

paint.setColor(Color.RED);

paint.setStyle(Paint.Style.STROKE);

paint.setStrokeWidth(10);

}

@Override

protected void onDraw(Canvas canvas) {

super.onDraw(canvas);

canvas.translate(mViewWidth/2, mViewHeight/2);

Path path = new Path();

path.lineTo(0, 300);

path.lineTo(300, 300);

path.lineTo(300, 0);

PathMeasure measure = new PathMeasure(path, false);

PathMeasure measure2 = new PathMeasure(path, true);

Log.i(TAG, "length:"+measure.getLength());//900

Log.i(TAG,"length:"+ measure2.getLength());//1200

canvas.drawPath(path, paint);

}

//该方法在当前View尺寸变化时被调用

@Override

protected void onSizeChanged(int w, int h, int oldw, int oldh) {

super.onSizeChanged(w, h, oldw, oldh);

mViewHeight = h;

mViewWidth = w;

}

}

nextContour

我们知道 Path 可以由多条曲线构成,但不论是 getLength , getgetSegment 或者是其它方法,都只会在其中第一条线段上运行,而这个 nextContour 就是用于跳转到下一条曲线到方法,如果跳转成功,则返回 true, 如果跳转失败,则返回 false

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android path指的是在Android应用程序中访问文件和文件夹的路径。在Android中,可以使用多种路径来访问不同的文件和文件夹。 以下是一些常用的Android路径: 1. 内部存储路径:/data/data/your_package_name/files/ 这是应用程序的内部存储路径,只能由应用程序本身访问。可以在这个路径下创建文件和文件夹,并进行读写操作。但是,当应用程序被卸载时,这个路径下的所有文件和文件夹都会被删除。 2. 外部存储路径:/sdcard/ 或者 /mnt/sdcard/ 或者 /storage/emulated/0/ 这是设备的外部存储路径,可以在这个路径下创建文件和文件夹,并进行读写操作。但是,需要注意的是,这个路径下的文件和文件夹可能会被用户删除或者设备被重置时被清除掉。 3. Assets路径:使用Context.getAssets()获取 Assets文件夹是存储在应用程序APK文件中的资源文件夹,可以在这个路径下访问一些静态文件,如图片、音频、文本等。可以使用AssetManager类获取Assets文件夹中的文件。 4. Raw路径:使用Context.getResources().openRawResource()获取 Raw文件夹也是存储在应用程序APK文件中的资源文件夹,可以在这个路径下访问一些静态文件,如音频、视频等。可以使用Resources类的openRawResource()方法获取Raw文件夹中的文件。 以上是一些常用的Android路径,可以根据需要选择不同的路径进行文件和文件夹的访问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值