В отличие от Codo's answer, что обсуждается «глубже» различие между этими классами (см трубопровода изображения раздел here), я буду обсуждать разницу юзабилити.
Перебирая the source code из SimpleDraweeView
и смежных классов можно увидеть следующую иерархию наследования:
public class SimpleDraweeView extends GenericDraweeView
public class GenericDraweeView extends DraweeView<GenericDraweeHierarchy>
public class DraweeView<DH extends DraweeHierarchy> extends ImageView
Следующее описание появляется перед определением класса из DraweeView
:
Хотя ImageView
является подклассы вместо подкласса View
напрямую, этот класс не поддерживает ImageView
setImageXxx
, setScaleType
и аналогичные методы. Расширение ImageView
- это краткосрочное решение, чтобы наследовать часть его реализации (расчет дополнений и т. Д.). Этот класс, скорее всего, будет преобразован в расширение View
непосредственно в будущем, поэтому избегайте использования методов и свойств (T5856175).
Итак, мы знаем, что DraweeView
в наше время наследует от ImageView
- которые, как правило, означает, что «он делает все ImageView
делает и более» (за исключением рассмотренных в замечании блоке выше). Этот упрощенный подход может дать вам общую идею, но игнорирует самый важный аспект совместимости с Fresco.
Fresco docs объяснить, как использовать drawees, и вы можете увидеть прямо из их определений XML, что они гораздо более настраиваемый than 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"
/>
Что касается добавления - похоже Фреско предназначена только для скачивания изображений. Вы можете посмотреть Robospice/Retrofit для ваших загрузок.
thnanx для ответа ... –