この相互作用は爆発的に増加しました。1分間でWeChatを使用し、透過的にドラッグアンドドロップしてPhotoViewに戻ります。

この記事はSanjing-Dajingウィングによって寄稿されました

Sanjing-Dajing wingのブログアドレス:

http://blog.csdn.net/wingichoy

この相互作用が爆発したことをまだ覚えている場合:画像がどのように空腹で詳細ページに変わったか、これは同じ著者であり、著者はシリーズを開始したようであり、相互作用は非常に「爆発」していると考えることができるはずです~~

この相互作用は爆発的に増加しました。1分間でWeChatを使用し、透過的にドラッグアンドドロップしてPhotoViewに戻ります。

しばらくリラックス

「InteractiveExplosion」は、一連のハイエンドの特殊効果チュートリアルである可能性があります。この記事では、いくつかのクールな特殊効果と実現のためのアイデアを紹介します。特殊効果自体はそれほど難しくないかもしれません。難しさは実現のアイデアにあります。アイデアが開かれると、特殊効果は簡単に実装できます。

DragPhotoViewプロジェクトアドレス

https://github.com/githubwing/DragPhotoView

みなさん、こんにちは。この号はインタラクティブ爆発の第4号です〜この号の影響は、最新バージョンのWeChat Momentsの影響です。画像を見てドラッグします。まだご覧になっていない場合は、WeChatを更新してください~~

この問題は過去とは異なり
ます。デモではありません!直接使用してください!デモではありません!直接使用してください!デモではありません!直接使用してください!理解している3つを言うことが重要です。

レンダリングは次のとおりです。

この相互作用は爆発的に増加しました。1分間でWeChatを使用し、透過的にドラッグアンドドロップしてPhotoViewに戻ります。
自己実現の効果は悪くないと思いますが、いきなりWeChatハハだと思いました。

1 1分間の使用で
、build.gradleファイルを変更します

この相互作用は爆発的に増加しました。1分間でWeChatを使用し、透過的にドラッグアンドドロップしてPhotoViewに戻ります。
xmlに入れて

通常のImageViewとして使用するだけで、すべてのImageViewゲームプレイをプレイできます。ドラッグアウトモニタリングであるonExitListenerを追加する必要があることに注意してください。

この相互作用は爆発的に増加しました。1分間でWeChatを使用し、透過的にドラッグアンドドロップしてPhotoViewに戻ります。
このようにして、アクセスは1分よりも速く完了します。何かありますか!タイトルパーティを拒否します。

上記の説明は使い方についてですが、使い方は誰でも知っています.3部構成のライブラリを使用する場合は、実装を理解する必要がありますか?実装のアイデアを紹介しましょう。

2実現

PhotoViewに基づく

この効果を一目見ただけで、多くのシナリオがあるので、それを達成したいという衝動があります。そこで、GitHubで最もスターのPhotoViewを直接見つけて拡張します。ここでは、PhotoViewに直接依存して継承することを選択します。理由は、PhotoViewの場合です。アップデートがある場合は、バージョンを直接変更することに頼ることができます。ソースコードのコピーを変更することを選択した場合、PhotoViewのサポートは受けられません。

画像ズーム、透明な背景

ここでは、背景を透明に設定するためのアクティビティが必要です。背景は本当に黒です。ジェスチャーでビューの背景の透明度を変更するために、背景として機能する特大の長方形を描画します。
この相互作用は爆発的に増加しました。1分間でWeChatを使用し、透過的にドラッグアンドドロップしてPhotoViewに戻ります。

キャンバスの変位、ズーム、透明度はすべてジェスチャーによって変化します。そこで、タッチイベントを処理するために、最初にonTouchEventメソッドを書き直そうとしましたが、PhotoViewが内部で独自のジェスチャー処理メカニズムを使用しているため、機能しないことがわかりました。ジェスチャー処理は無力です。ここにありますか?いいえ、dispatchTouchEventで処理を実行できます。したがって、このメソッドを書き直してください。

最初にズームモードかどうかを判断します。ズームモードでない場合にのみドラッグできます

この相互作用は爆発的に増加しました。1分間でWeChatを使用し、透過的にドラッグアンドドロップしてPhotoViewに戻ります。
ACTION_MOVEイベントを処理した後:

ViewpagerとDragPhotoViewおよびPhotoViewの間の競合を解決する必要があることに注意してください。

DragPhotoViewとPhotoViewの競合はジェスチャーズームであるため、現在のタッチポイントを判断するだけです。

ViewpagerとDragPhotoViewの競合は左右にスライドしているため、ここで判断します。下に移動していない場合、Y変位は0で、ViewPagerに渡されます。下に移動している場合は、フラグを変更してドラッグ状態であることを示します。

この相互作用は爆発的に増加しました。1分間でWeChatを使用し、透過的にドラッグアンドドロップしてPhotoViewに戻ります。
ACTION_UPでは、ドラッグがしきい値を超えているかどうかを判断する必要があり、しきい値を超えている場合はアクティビティ操作を終了します。

ここで遭遇する落とし穴は、シングルフィンガーリターンとダブルクリックズームジェスチャが競合することです。現在、良い解決策はありません。スレッドのタイミングをオンにしてフラグに基づいて判断することしかできません。誰もが良い解決策を持っています。私に連絡して知らせてください。 、ありがとうございました!

この相互作用は爆発的に増加しました。1分間でWeChatを使用し、透過的にドラッグアンドドロップしてPhotoViewに戻ります。

これで基本的にPhotoViewの拡張は完了です。すでにプロジェクトで使用できます。

しかし、この記事はまだ終わっていません。共有要素のフルバージョンの実装について話しましょう。

3共有要素のフルバージョンの実装

Androidの組み込み共有要素は5.0以降でのみ使用できます。5.0未満で互換性を持たせるにはどうすればよいですか。また、デモでのドラッグ共有はどのように実装されていますか?

実際、アイデアは非常に単純です。アクティビティAがアクティビティBを開始するときにシステムの特別なアニメーションを閉じ、クリックしたビューのサイズや座標などの情報を渡すだけです。Bは最初に透明な状態になり、B上のビューは変位アニメーションになります。それは達成することができます。

この相互作用は爆発的に増加しました。1分間でWeChatを使用し、透過的にドラッグアンドドロップしてPhotoViewに戻ります。

共有要素のドラッグアンドドロップに関しては、原則は同じで、具体的な詳細はデモにあります~~

これでこの記事は終わりです〜

DragPhotoViewプロジェクトアドレス

気分が良ければ、スターを歓迎します

おすすめ

転載: blog.51cto.com/15064646/2575374