ImageView と com.facebook.drawee.view.SimpleDraweeView. の本当の違いと、フレスコ画が imageview を使用しない理由を誰か説明してもらえますか?
fresco を介してサーバーに画像をアップロードできますか? はいの場合は、コードを共有してください..
これらのクラス間の「より深い」違いについて説明しているCodo の回答とは異なり(こちらのイメージ パイプラインのセクションを参照)、使いやすさの違いについて説明します。
および関連するクラスのソース コードをSimpleDraweeView
調べると、次の継承階層が表示されます。
public class SimpleDraweeView extends GenericDraweeView
public class GenericDraweeView extends DraweeView<GenericDraweeHierarchy>
public class DraweeView<DH extends DraweeHierarchy> extends ImageView
次の説明は、 のクラス定義の前に表示されますDraweeView
。
ImageView
は直接サブクラス化するのではなくサブクラス化されていますが、このクラスはや類似のメソッドをView
サポートしていません。拡張は、その実装の一部 (パディング計算など) を継承するための短期的なソリューションです。このクラスは、将来、直接拡張するように変換される可能性があるため、のメソッドとプロパティを使用しないでください (T5856175)。ImageView
setImageXxx
setScaleType
ImageView
View
ImageView
これは通常、「すべてを実行し、さらに多くのことをDraweeView
実行ImageView
する」ことを意味しますImageView
(上記のコメント ブロックで説明した例外を除きます)。この単純化されたアプローチは、一般的なアイデアを提供できますが、Fresco との互換性の最も重要な側面を無視しています。
Frescoのドキュメントでは、名宛人を使用する方法が説明されています。XML 定義から、名宛人の方がはるかImageView
にカスタマイズ可能であることがすぐにわかります。
<com.facebook.drawee.view.SimpleDraweeView
android:id="@+id/my_image_view"
android:layout_width="20dp"
android:layout_height="20dp"
fresco:fadeDuration="300"
fresco:actualImageScaleType="focusCrop"
fresco:placeholderImage="@color/wait_color"
fresco:placeholderImageScaleType="fitCenter"
fresco:failureImage="@drawable/error"
fresco:failureImageScaleType="centerInside"
fresco:retryImage="@drawable/retrying"
fresco:retryImageScaleType="centerCrop"
fresco:progressBarImage="@drawable/progress_bar"
fresco:progressBarImageScaleType="centerInside"
fresco:progressBarAutoRotateInterval="1000"
fresco:backgroundImage="@color/blue"
fresco:overlayImage="@drawable/watermark"
fresco:pressedStateOverlayImage="@color/red"
fresco:roundAsCircle="false"
fresco:roundedCornerRadius="1dp"
fresco:roundTopLeft="true"
fresco:roundTopRight="false"
fresco:roundBottomLeft="false"
fresco:roundBottomRight="true"
fresco:roundWithOverlayColor="@color/corner_color"
fresco:roundingBorderWidth="2dp"
fresco:roundingBorderColor="@color/border_color"
/>
アップロードに関しては、Fresco は画像のダウンロードのみを目的としているようです。アップロードのニーズについては、Robospice / Retrofitを調べることをお勧めします。
Android 5 より前のバージョンの Android では、大量の画像を処理する際に深刻な問題が発生します。Android 2 では Java ヒープ上にあると問題が発生し、Android 4 ではアクティビティを破棄しないと適切に解放されません。
そのため、Fresco はイメージをネイティブ ヒープ (Android 2) に移動し、Android 4 用に独自の参照カウントを実装して、イメージがいつ参照されなくなり、再利用できるようになったかを認識します。
画像への参照を完全に制御するために、にImageView
置き換えます。SimpleDrawView
実際、画像に直接アクセスできるのは低レベルの API だけです。そうでなければ、参照カウントを使用したアプローチが機能します。
Facebook は独自の ImageView を提供しているため、独自の CustomView または ImageView を作成するのではなく、それらの View を使用できます。
ただし、独自のカスタム ビューと比較して、制御が少ない可能性があることに注意してください。
これにより、 Button、Viewなどの完全なパッケージと機能が提供されます。
の丸みを帯びた角については、このようにImageView
<de.hdodenhof.circleimageview.CircleImageView
android:layout_width="50dp"
android:layout_height="50dp"
android:id="@+id/userImage"
android:layout_alignParentTop="true"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true"
android:layout_marginRight="10dp"
android:layout_marginTop="10dp" />