android.graphics.Path可以Parcelable吗?

问题描述 投票:0回答:2

我找到了一些关于制作 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) {

    }
}
android memory serialization path parcelable
2个回答
0
投票

如果您需要构建仅由直线组成的路径并将其编组到另一个进程,则可以使用

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 的有限子集。


-2
投票

如果您使用 Android Studio,有一个不错的插件可以解决您的问题并自动执行创建类 Parcelable 的过程。

你可以看这里:在Android Studio中快速创建Parcelable类 Android教程移动开发

© www.soinside.com 2019 - 2024. All rights reserved.