Paints a Flutter UI provided by an android.media.ImageReader
onto a android.graphics.Canvas
.
A FlutterImageView
is intended for situations where a developer needs to render a Flutter UI, but also needs to render an interactive io.flutter.plugin.platform.PlatformView
.
This View
takes an android.media.ImageReader
that provides the Flutter UI in an android.media.Image
and renders it to the android.graphics.Canvas
in
onDraw
.
Definition at line 44 of file FlutterImageView.java.
◆ FlutterImageView() [1/4]
io.flutter.embedding.android.FlutterImageView.FlutterImageView |
( |
@NonNull Context |
context, |
|
|
int |
width, |
|
|
int |
height, |
|
|
SurfaceKind |
kind |
|
) |
| |
|
inline |
◆ FlutterImageView() [2/4]
io.flutter.embedding.android.FlutterImageView.FlutterImageView |
( |
@NonNull Context |
context | ) |
|
|
inline |
◆ FlutterImageView() [3/4]
io.flutter.embedding.android.FlutterImageView.FlutterImageView |
( |
@NonNull Context |
context, |
|
|
@NonNull AttributeSet |
attrs |
|
) |
| |
|
inline |
◆ FlutterImageView() [4/4]
io.flutter.embedding.android.FlutterImageView.FlutterImageView |
( |
@NonNull Context |
context, |
|
|
@NonNull ImageReader |
imageReader, |
|
|
SurfaceKind |
kind |
|
) |
| |
|
inlinepackage |
Definition at line 87 of file FlutterImageView.java.
88 {
89 super(context, null);
90 this.imageReader = imageReader;
91 this.kind = kind;
92 init();
93 }
◆ acquireLatestImage()
boolean io.flutter.embedding.android.FlutterImageView.acquireLatestImage |
( |
| ) |
|
|
inline |
Acquires the next image to be drawn to the android.graphics.Canvas
. Returns true if there's an image available in the queue.
Definition at line 190 of file FlutterImageView.java.
190 {
191 if (!isAttachedToFlutterRenderer) {
192 return false;
193 }
194
195
196
197
198
199
200 final Image newImage = imageReader.acquireLatestImage();
201 if (newImage != null) {
202
203 closeCurrentImage();
204 currentImage = newImage;
205 invalidate();
206 }
207 return newImage != null;
208 }
◆ attachToRenderer()
void io.flutter.embedding.android.FlutterImageView.attachToRenderer |
( |
@NonNull FlutterRenderer |
flutterRenderer | ) |
|
|
inline |
Invoked by the owner of this FlutterImageView
when it wants to begin rendering a Flutter UI to this FlutterImageView
.
Definition at line 142 of file FlutterImageView.java.
142 {
143 switch (kind) {
144 case background:
145 flutterRenderer.swapSurface(imageReader.getSurface());
146 break;
147 case overlay:
148
149
150 break;
151 }
152 setAlpha(1.0f);
153 this.flutterRenderer = flutterRenderer;
154 isAttachedToFlutterRenderer = true;
155 }
◆ closeImageReader()
void io.flutter.embedding.android.FlutterImageView.closeImageReader |
( |
| ) |
|
|
inline |
Closes the image reader associated with the current FlutterImageView
.
Once the image reader is closed, calling acquireLatestImage
will result in an
IllegalStateException
.
Definition at line 233 of file FlutterImageView.java.
233 {
234 imageReader.close();
235 }
◆ detachFromRenderer()
void io.flutter.embedding.android.FlutterImageView.detachFromRenderer |
( |
| ) |
|
|
inline |
Invoked by the owner of this FlutterImageView
when it no longer wants to render a Flutter UI to this FlutterImageView
.
Definition at line 161 of file FlutterImageView.java.
161 {
162 if (!isAttachedToFlutterRenderer) {
163 return;
164 }
165 setAlpha(0.0f);
166
167
169
170 currentBitmap = null;
171
172
173 closeCurrentImage();
174 invalidate();
175 isAttachedToFlutterRenderer = false;
176 }
boolean acquireLatestImage()
◆ getAttachedRenderer()
FlutterRenderer io.flutter.embedding.android.FlutterImageView.getAttachedRenderer |
( |
| ) |
|
|
inline |
◆ getImageReader()
ImageReader io.flutter.embedding.android.FlutterImageView.getImageReader |
( |
| ) |
|
|
inline |
◆ getSurface()
Surface io.flutter.embedding.android.FlutterImageView.getSurface |
( |
| ) |
|
|
inline |
◆ onDraw()
void io.flutter.embedding.android.FlutterImageView.onDraw |
( |
Canvas |
canvas | ) |
|
|
inlineprotected |
Definition at line 238 of file FlutterImageView.java.
238 {
239 super.onDraw(canvas);
240 if (currentImage != null) {
241 updateCurrentBitmap();
242 }
243 if (currentBitmap != null) {
244 canvas.drawBitmap(currentBitmap, 0, 0, null);
245 }
246 }
◆ onSizeChanged()
void io.flutter.embedding.android.FlutterImageView.onSizeChanged |
( |
int |
width, |
|
|
int |
height, |
|
|
int |
oldWidth, |
|
|
int |
oldHeight |
|
) |
| |
|
inlineprotected |
Definition at line 286 of file FlutterImageView.java.
286 {
287 if (
width == imageReader.getWidth() &&
height == imageReader.getHeight()) {
288 return;
289 }
290
291
292
293 if (kind == SurfaceKind.background && isAttachedToFlutterRenderer) {
295
296
297 flutterRenderer.swapSurface(imageReader.getSurface());
298 }
299 }
void resizeIfNeeded(int width, int height)
◆ pause()
void io.flutter.embedding.android.FlutterImageView.pause |
( |
| ) |
|
|
inline |
◆ resizeIfNeeded()
void io.flutter.embedding.android.FlutterImageView.resizeIfNeeded |
( |
int |
width, |
|
|
int |
height |
|
) |
| |
|
inline |
Creates a new image reader with the provided size.
Definition at line 211 of file FlutterImageView.java.
211 {
212 if (flutterRenderer == null) {
213 return;
214 }
215 if (
width == imageReader.getWidth() &&
height == imageReader.getHeight()) {
216 return;
217 }
218
219
220 closeCurrentImage();
221
222
225 }
◆ resume()
void io.flutter.embedding.android.FlutterImageView.resume |
( |
| ) |
|
|
inline |
The documentation for this class was generated from the following file: