私はDraweeHolderを持つカスタムビューを実装しました。私は私のカスタムビュー(attach/detach/invalidateDrawable/setListener)のすべてのコールバックとリスナーを実装しました。カスタムビューとアニメーションGIF-gifが正しく再生されない
コントローラにGIF画像URLを設定すると、gifが正しく再生されません。ビューが再描画されたときにのみgifをリフレッシュします。アニメーションGIFに無効化コールバックなどがあるはずです。
P.S. GifはDraweeViewを使用すると正しく動作します。また、他のすべての画像が私のカスタムビュー内で正しく機能します。
ホルダーを作成:
コントローラの設定private DraweeHolder<GenericDraweeHierarchy> createComponentHolder(View parent, Context context) {
GenericDraweeHierarchy componentHierarchy = new GenericDraweeHierarchyBuilder(parent.getResources())
.setRoundingParams(RoundingParams.fromCornersRadius(LayoutHelper.dp(3)).setBorder(Theme.COLOR_MEDIA_BORDER, 1))
.build();
DraweeHolder<GenericDraweeHierarchy> holder = DraweeHolder.create(componentHierarchy, context);
holder.getTopLevelDrawable().setCallback(parent);
return holder;
}
:
PipelineDraweeControllerBuilder controllerBuilder = Fresco.newDraweeControllerBuilder()
.setImageRequest(MediaHelper.getImageRequest(filePath))
.setAutoPlayAnimations(true)
.setControllerListener(controllerListener)
.setOldController(draweeHolder.getController());
if (thumbUrl != null) {
controllerBuilder.setLowResImageRequest(getThumbnailRequest(thumbUrl));
}
draweeHolder.setController(controllerBuilder.build());
画像要求:
public static ImageRequest getImageRequest(String filePath) {
int imageSize = LayoutHelper.dp(100);
return ImageRequestBuilder.newBuilderWithSource(Uri.fromFile(new File(filePath)))
.setResizeOptions(new ResizeOptions(imageSize, imageSize))
.setAutoRotateEnabled(true)
.build();
}
ドロアブルコールバックを設定しましたか? 'mDraweeHolder.getTopLevelDrawable()。setCallback(yourView);' –
のようなコードの最初のブロックに表示されるように設定されています。 –