共用方式為


ImageDecoder 類別

定義

類別,用於將編碼影像 (例如PNG、、JPEGWEBPGIFHEIF) 轉換成 DrawableBitmap 物件。

[Android.Runtime.Register("android/graphics/ImageDecoder", ApiSince=28, DoNotGenerateAcw=true)]
public sealed class ImageDecoder : Java.Lang.Object, IDisposable, Java.Interop.IJavaPeerable, Java.Lang.IAutoCloseable
[<Android.Runtime.Register("android/graphics/ImageDecoder", ApiSince=28, DoNotGenerateAcw=true)>]
type ImageDecoder = class
    inherit Object
    interface IAutoCloseable
    interface IJavaObject
    interface IDisposable
    interface IJavaPeerable
繼承
ImageDecoder
屬性
實作

備註

類別,用於將編碼影像 (例如PNG、、JPEGWEBPGIFHEIF) 轉換成 DrawableBitmap 物件。

若要使用它,請先使用其中createSource一個多載來建立 Source Source 。 例如,若要從 Uri譯碼,請呼叫 #createSource(ContentResolver, Uri) 並將結果傳遞至 #decodeDrawable(Source)#decodeBitmap(Source)

File file = new File(...);
             ImageDecoder.Source source = ImageDecoder.createSource(file);
             Drawable drawable = ImageDecoder.decodeDrawable(source);

若要變更預設設定,請將 和 OnHeaderDecodedListener OnHeaderDecodedListener 傳遞Source Source#decodeDrawable(Source, OnHeaderDecodedListener)#decodeBitmap(Source, OnHeaderDecodedListener)。 例如,若要建立具有原始影像寬度和高度一半的取樣影像,請在 內OnHeaderDecodedListener#onHeaderDecoded onHeaderDecoded呼叫 #setTargetSampleSize setTargetSampleSize(2)

OnHeaderDecodedListener listener = new OnHeaderDecodedListener() {
                 public void onHeaderDecoded(ImageDecoder decoder, ImageInfo info, Source source) {
                     decoder.setTargetSampleSize(2);
                 }
             };
             Drawable drawable = ImageDecoder.decodeDrawable(source, listener);

ImageInfo ImageInfo包含編碼影像的相關信息,例如其寬度和高度,而且Source Source當單OnHeaderDecodedListener OnHeaderDecodedListener一與多個Source Source物件搭配使用時,可以用來比對特定 Source Source

OnHeaderDecodedListener OnHeaderDecodedListener也可以實作為 Lambda:

Drawable drawable = ImageDecoder.decodeDrawable(source, (decoder, info, src) -&gt; {
                 decoder.setTargetSampleSize(2);
             });

如果編碼的影像是動畫 GIFWEBP#decodeDrawable decodeDrawable 則會傳 AnimatedImageDrawable回 。 若要啟動動畫,請呼叫 AnimatedImageDrawable#start AnimatedImageDrawable.start()

Drawable drawable = ImageDecoder.decodeDrawable(source);
             if (drawable instanceof AnimatedImageDrawable) {
                 ((AnimatedImageDrawable) drawable).start();
             }

根據預設, Bitmap 所建立的 ImageDecoder (包括 內部 Drawable的 一個 ) 將不可變(亦即 Bitmap#isMutable Bitmap.isMutable() 傳回 false),而且通常會有 ConfigBitmap.Config#HARDWARE。 雖然這些屬性可以使用 來變更 #setMutableRequired setMutableRequired(true) (這隻與 #decodeBitmap(Source)#decodeBitmap(Source, OnHeaderDecodedListener)相容),但是 #setAllocator也可以套用自定義效果,而不論最終傳回的物件是否可變動,傳遞 PostProcessor#setPostProcessor setPostProcessorPostProcessor也可以是 Lambda:

Drawable drawable = ImageDecoder.decodeDrawable(source, (decoder, info, src) -&gt; {
                 decoder.setPostProcessor((canvas) -&gt; {
                         // This will create rounded corners.
                         Path path = new Path();
                         path.setFillType(Path.FillType.INVERSE_EVEN_ODD);
                         int width = canvas.getWidth();
                         int height = canvas.getHeight();
                         path.addRoundRect(0, 0, width, height, 20, 20, Path.Direction.CW);
                         Paint paint = new Paint();
                         paint.setAntiAlias(true);
                         paint.setColor(Color.TRANSPARENT);
                         paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC));
                         canvas.drawPath(path, paint);
                         return PixelFormat.TRANSLUCENT;
                 });
             });

如果編碼的影像不完整或包含錯誤,或在 Exception 譯碼期間發生 , DecodeException DecodeException 則會擲回 。 在某些情況下, ImageDecoder 可能已譯碼影像的一部分。 若要顯示部分影像, OnPartialImageListener OnPartialImageListener 必須將 傳遞至 #setOnPartialImageListener setOnPartialImageListener。 例如:

Drawable drawable = ImageDecoder.decodeDrawable(source, (decoder, info, src) -&gt; {
                 decoder.setOnPartialImageListener((DecodeException e) -&gt; {
                         // Returning true indicates to create a Drawable or Bitmap even
                         // if the whole image could not be decoded. Any remaining lines
                         // will be blank.
                         return true;
                 });
             });

android.graphics.ImageDecoderJava 檔。

此頁面的部分是根據 Android 開放原始碼專案所建立和共用的工作進行修改,並根據 Creative Commons 2.5 屬性授權中所述的詞彙使用。

欄位

AllocatorDefault
已淘汰.

使用像素記憶體的預設配置。

AllocatorHardware
已淘汰.

Bitmap.Config#HARDWAREBitmap需要 。

AllocatorSharedMemory
已淘汰.

針對圖元記憶體使用共用記憶體。

AllocatorSoftware
已淘汰.

使用圖元記憶體的軟體配置。

MemoryPolicyDefault
已淘汰.

對內部 Bitmap使用最自然Bitmap.Config的 。

MemoryPolicyLowRam
已淘汰.

盡可能使用較 Bitmap.Config 密集的記憶體,代價是部分影像品質。

屬性

Class

傳回這個 Object的運行時間類別。

(繼承來源 Object)
Crop

如果已設定,則傳回裁剪矩形。 -或- 將輸出裁剪為 subset (可能) 縮放影像。

DecodeAsAlphaMaskEnabled

傳回是否要將單一通道輸入視為Alpha。 -或- 指定是否可能將輸出視為 Alpha 遮罩。

Handle

基礎Android實例的句柄。

(繼承來源 Object)
JniIdentityHashCode

類別,用於將編碼影像 (例如PNG、、JPEGWEBPGIFHEIF) 轉換成 DrawableBitmap 物件。

(繼承來源 Object)
JniPeerMembers

類別,用於將編碼影像 (例如PNG、、JPEGWEBPGIFHEIF) 轉換成 DrawableBitmap 物件。

MemorySizePolicy

擷取已 Bitmap譯碼 的記憶體原則。 -或- 指定已 Bitmap譯碼 的記憶體原則。

MutableRequired

傳回譯 Bitmap 碼是否可變動。 -或- 指定 是否 Bitmap 應該可變動。

OnPartialImageListener

在這裡物件上設定 (replace) OnPartialImageListener

PeerReference

類別,用於將編碼影像 (例如PNG、、JPEGWEBPGIFHEIF) 轉換成 DrawableBitmap 物件。

(繼承來源 Object)
PostProcessor

PostProcessor傳回目前集合。 -或- 在譯碼和縮放之後修改影像。

ThresholdClass

此 API 支援適用於 Android 的 Mono 基礎結構,並不適合直接從您的程式代碼使用。

(繼承來源 Object)
ThresholdType

此 API 支援適用於 Android 的 Mono 基礎結構,並不適合直接從您的程式代碼使用。

(繼承來源 Object)
UnpremultipliedRequired

傳回 是否會 Bitmap 有未取代的圖元。 -或- 指定 是否 Bitmap 應該有未取代的圖元。

方法

Clone()

建立並傳回這個 對象的複本。

(繼承來源 Object)
Close()

關閉此資源,放棄任何基礎資源。

CreateSource(AssetManager, String)

android.net.Uri建立新的 Source

CreateSource(Byte[])

android.net.Uri建立新的 Source

CreateSource(Byte[], Int32, Int32)

android.net.Uri建立新的 Source

CreateSource(ByteBuffer)

android.net.Uri建立新的 Source

CreateSource(ContentResolver, Uri)

android.net.Uri建立新的 Source

CreateSource(File)

android.net.Uri建立新的 Source

CreateSource(ICallable)

android.net.Uri建立新的 Source

CreateSource(Resources, Int32)

android.net.Uri建立新的 Source

DecodeBitmap(ImageDecoder+Source)

請參閱 #decodeBitmap(Source, OnHeaderDecodedListener)

DecodeBitmap(ImageDecoder+Source, ImageDecoder+IOnHeaderDecodedListener)

請參閱 #decodeBitmap(Source, OnHeaderDecodedListener)

DecodeDrawable(ImageDecoder+Source)

請參閱 #decodeDrawable(Source, OnHeaderDecodedListener)

DecodeDrawable(ImageDecoder+Source, ImageDecoder+IOnHeaderDecodedListener)

請參閱 #decodeDrawable(Source, OnHeaderDecodedListener)

Dispose()

類別,用於將編碼影像 (例如PNG、、JPEGWEBPGIFHEIF) 轉換成 DrawableBitmap 物件。

(繼承來源 Object)
Dispose(Boolean)

類別,用於將編碼影像 (例如PNG、、JPEGWEBPGIFHEIF) 轉換成 DrawableBitmap 物件。

(繼承來源 Object)
Equals(Object)

指出其他物件是否「等於」這個物件。

(繼承來源 Object)
GetHashCode()

傳回此物件的雜湊碼值。

(繼承來源 Object)
IsMimeTypeSupported(String)

如果指定的 MIME 類型是可由這個類別譯碼的支援檔案格式,則傳回 。

JavaFinalize()

當垃圾收集決定不再參考物件時,垃圾收集行程在 物件上呼叫。

(繼承來源 Object)
Notify()

喚醒正在等候此物件監視器的單一線程。

(繼承來源 Object)
NotifyAll()

喚醒正在等候此物件監視器的所有線程。

(繼承來源 Object)
SetHandle(IntPtr, JniHandleOwnership)

設定 Handle 屬性。

(繼承來源 Object)
SetTargetColorSpace(ColorSpace)

指定輸出所需的 ColorSpace

SetTargetSampleSize(Int32)

使用 sampleSize 設定目標大小。

SetTargetSize(Int32, Int32)

指定輸出 DrawableBitmap的大小。

ToArray<T>()

類別,用於將編碼影像 (例如PNG、、JPEGWEBPGIFHEIF) 轉換成 DrawableBitmap 物件。

(繼承來源 Object)
ToString()

傳回物件的字串表示。

(繼承來源 Object)
UnregisterFromRuntime()

類別,用於將編碼影像 (例如PNG、、JPEGWEBPGIFHEIF) 轉換成 DrawableBitmap 物件。

(繼承來源 Object)
Wait()

讓目前線程等候直到喚醒為止,通常是藉由em <notified/em>或<em>interrupted</em> 來喚醒它。<>

(繼承來源 Object)
Wait(Int64)

讓目前的線程等到喚醒為止,通常是因為 <em>notified</em> 或 <em>interrupted</em>,或直到經過一定數量的實時為止。

(繼承來源 Object)
Wait(Int64, Int32)

讓目前的線程等到喚醒為止,通常是因為 <em>notified</em> 或 <em>interrupted</em>,或直到經過一定數量的實時為止。

(繼承來源 Object)

事件

PartialImage

類別,用於將編碼影像 (例如PNG、、JPEGWEBPGIFHEIF) 轉換成 DrawableBitmap 物件。

明確介面實作

IJavaPeerable.Disposed()

類別,用於將編碼影像 (例如PNG、、JPEGWEBPGIFHEIF) 轉換成 DrawableBitmap 物件。

(繼承來源 Object)
IJavaPeerable.DisposeUnlessReferenced()

類別,用於將編碼影像 (例如PNG、、JPEGWEBPGIFHEIF) 轉換成 DrawableBitmap 物件。

(繼承來源 Object)
IJavaPeerable.Finalized()

類別,用於將編碼影像 (例如PNG、、JPEGWEBPGIFHEIF) 轉換成 DrawableBitmap 物件。

(繼承來源 Object)
IJavaPeerable.JniManagedPeerState

類別,用於將編碼影像 (例如PNG、、JPEGWEBPGIFHEIF) 轉換成 DrawableBitmap 物件。

(繼承來源 Object)
IJavaPeerable.SetJniIdentityHashCode(Int32)

類別,用於將編碼影像 (例如PNG、、JPEGWEBPGIFHEIF) 轉換成 DrawableBitmap 物件。

(繼承來源 Object)
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates)

類別,用於將編碼影像 (例如PNG、、JPEGWEBPGIFHEIF) 轉換成 DrawableBitmap 物件。

(繼承來源 Object)
IJavaPeerable.SetPeerReference(JniObjectReference)

類別,用於將編碼影像 (例如PNG、、JPEGWEBPGIFHEIF) 轉換成 DrawableBitmap 物件。

(繼承來源 Object)

擴充方法

JavaCast<TResult>(IJavaObject)

執行 Android 執行時間檢查的類型轉換。

JavaCast<TResult>(IJavaObject)

類別,用於將編碼影像 (例如PNG、、JPEGWEBPGIFHEIF) 轉換成 DrawableBitmap 物件。

GetJniTypeName(IJavaPeerable)

類別,用於將編碼影像 (例如PNG、、JPEGWEBPGIFHEIF) 轉換成 DrawableBitmap 物件。

適用於