新しいバージョンの gmail には、複数の連絡先画像を表示するクールな imageView があります (link here for example) 。
たとえば、誰かが私に電子メールを送った場合、私は彼の画像しか見ることができません:
#######
# #
# A #
# #
#######
彼に返信した場合、その横に自分の画像が表示されますが、私の画像と彼の画像の両方が半分になり、imageView の同じスペースを共有します (両方とも scaleType が中央のトリミングになっていると思います):
#######
# # #
# A# B#
# # #
#######
別の人が会話に参加している場合、次のようになります。
#######
# # B#
# A####
# # C#
#######
別のものが参加している場合は、次のようになります。
#######
# A# C#
#######
# B# D#
#######
項目の順序 (およびルール、したがってここにあるものはすべて私の推測です) と、より多くの人が参加するとどうなるかについてはわかりません。
重要なことは、これを達成する方法を知りたいということです。
誰もこれに対する解決策を知っていますか? 彼らはどうやってそれをしたのですか?どのビューが使用されましたか?
それは間違いなくカスタムビューですが、それを行う最良の方法は何ですか? おそらく最も効率的で、多くのメモリを使用しない方法...
最終的な画像を丸くしたいかもしれないので、imageViewの代わりにビットマップを処理する方が良いかもしれません...
そのようなビューを呼び出す方法さえわかりません。「CollageView」または「MosaicView」を考えました。
明確にするために、このような問題は次の API を使用して処理する必要があると思います。
public static Bitmap createMosaicOfBitmaps(int targetWidth,int targetHeight,ArrayList<Bitmap> imagesToShow)
または、ビットマップが大量のメモリを消費する可能性がある場合は、次のようなものを使用できます。
public static Bitmap createMosaicOfBitmaps(int targetWidth,int targetHeight,ArrayList<LazyBitmap> imagesToShow)
/**interface for lazy loading of a bitmap, while downscaling the bitmap to the needed size*/
public interface LazyBitmap{
public getBitmap(int width,int height);
}
私は2つの解決策を思いつきました.それぞれに長所と短所がありますが、最終結果に特殊効果を適用する必要があります(特に角を丸くしますが、他のことも可能です)。する方法を知っています。
誰でも助けてもらえますか?Google はアプリで何を使用していると思いますか?
編集: このスレッドへの回答を書いたそれぞれについて、いくつかの可能な解決策を考え出しました。どれが一番いいかわからないので全部載せました。それぞれに長所と短所があると思います。
私の現在のソリューションは、私が提供したようにビットマップを処理しませんが、非常に直感的です...
あなたの意見でこれをどのように行うべきかについて、私はまだいくつかのアドバイスを望んでいます.