3

2 つの異なるアプリ間で共有要素遷移を使用する可能性はありますか?

4

1 に答える 1

7

はい、共有要素は異なるアプリケーション間で機能します。2 つのアプリケーション間で共有する共通の名前に同意する必要があります。通常、これは @AlexLockwood が示唆するように transitionName で行われますが、ビューに同じ名前を付ける必要はありません。たまたまそうすると、無料で多くの助けが得られます。

アプリケーション間で要素を共有することには重要な側面があります。それらは同じタスク内にある必要があります。同じタスクにない場合、アクティビティ オプションは拒否されます。

レイアウトで異なる transitionNames を使用する場合は、次のようにします。

ActivityOptions options = ActivityOptions.makeSceneTransitionAnimation(
    this, view, "remoteName");
startActivity(intent, options.toBundle());

ここで、リモート アプリケーションがそのレイアウト ファイルの transitionName に「remoteName」を使用した場合、特別なことを行う必要はありません。ただし、別の名前を使用する場合は、その名前をビューにマップする必要があります。

setEnterSharedElementCallback(new SharedElementCallback() {
        @Override
        public void onMapSharedElements(List<String> names,
                Map<String, View> sharedElements) {
            // You may want to validate that names contains "remoteName"
            // if this can be instantiated with different shared elements
            sharedElements.put("remoteName", findViewById(R.id.mySharedElement));
        }
    });

この機能は、共有可能なビューのリストを持つものと共有する場合に重要です。たとえば、連絡先のリストには、異なる transitionNames を持つすべての連絡先画像が含まれます。1 つの連絡先からその連絡先リストに移動するには、1 つの共有連絡先をリスト内の連絡先の 1 つにマップする必要があります。

于 2014-11-03T23:52:16.703 に答える