Ho una classe in cui ho un Drawable
come membro.
Questa classe che sto utilizzando per l'invio di dati tra le attività come un extra Parcelable
.Come passare disegnabile utilizzando Parcelable
Per questo ho esteso il parceble e implementato le funzioni richieste.
Sono in grado di inviare i tipi di dati di base utilizzando int/string di lettura/scrittura.
Ma sto affrontando il problema mentre eseguo il marshalling dell'oggetto Drawable.
Per quello ho provato a convertire il Drawable
in byte array
, ma sto ottenendo eccezioni di cast di classe.
Sto usando il codice seguente per convertire il mio Drawable a matrice Byte:
Bitmap bitmap = (Bitmap)((BitmapDrawable) mMyDrawable).getBitmap();
ByteArrayOutputStream stream = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, stream);
byte[]byteArray = stream.toByteArray();
out.writeInt(byteArray.length);
out.writeByteArray(byteArray);
E per convertire array di byte in drawable sto usando seguente codice:
final int contentBytesLen = in.readInt();
byte[] contentBytes = new byte[contentBytesLen];
in.readByteArray(contentBytes);
mMyDrawable = new BitmapDrawable(BitmapFactory.decodeByteArray(contentBytes, 0, contentBytes.length));
Quando ho eseguito questo ottengo Eccezione cast di classe.
Come possiamo scrivere/passare disegni utilizzando HashMap?
Esiste un modo per passare Drawable in Parcel.
Grazie.
Quindi, ad esempio, se ho un oggetto con una bitmap e altri tipi, non devo scrivere l'immagine nel pacco? e funzionerà tutto per trovare e dandy per me? – eddiecubed
@yorkw 'getBitmap()' restituisce 'Bitmap' in modo predefinito, perché si esegue di nuovo il typecasting? – blizzard
Esiste un'alternativa per questo ora che 'BitmapDrawable' è deprecato? – AdamMc331