我找到了一些关于制作 Path
Serializable
对象的 topics,但我找不到任何关于制作
Parcelable
的内容。据我所知,Parcelable
对象在 Bundle
中打包和拆包效率更高。
我创建了一个名为
ParcelablePath
的新对象,它扩展了“Path”并实现了 Parcelable
并重写了所需的方法,但我不太确定在重写的方法中要做什么。
我的问题是,是否有可能将
Path
制作为 Parcelable
对象?如果是这样我该怎么办?
这是一些示例代码:
public class ParcelablePath extends Path implements Parcelable {
protected ParcelablePath(Parcel in) {
}
public static final Creator<ParcelablePath> CREATOR = new Creator<ParcelablePath>() {
@Override
public ParcelablePath createFromParcel(Parcel in) {
return new ParcelablePath(in);
}
@Override
public ParcelablePath[] newArray(int size) {
return new ParcelablePath[size];
}
};
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
}
}
如果您需要构建仅由直线组成的路径并将其编组到另一个进程,则可以使用
Gesture
。
Gesture
实现 Parcelable
,因此可以在 Parcel
中跨进程边界发送,并提供 toPath
方法在另一端构造 Path
。
// build path
val points = ArrayList<GesturePoint>()
points += GesturePoint(x = 0f, y = 0f, timestamp = 0L)
// make parcelable
val stroke = GestureStroke(points)
val gesture = Gesture().apply { addStroke(stroke) }
// send away
您可以将其作为
ParcelablePath
的实现细节,它将不再扩展 Path
并仅公开 toPath
和 Path
API 的有限子集。
如果您使用 Android Studio,有一个不错的插件可以解决您的问题并自动执行创建类 Parcelable 的过程。