Cómo pasar Drawable usando Parcelable
Tengo una clase en la que tengo un Drawable
como miembro.
Esta clase estoy usando para enviar datos a través de actividades como un extra Parcelable
.
Para eso he extendido el parcelero, e implementado las funciones requeridas.
- Casting objetos a subclases de una superclase Parcelable?
- ¿Es posible distribuir una clase genérica?
- Cómo escribir y leer org.joda.time.Date en la clase Parcelable
- Implementar interfaz parcelable utilizando Gson
- BadParcelableException - Error de BroadcastReceiver intentado
Puedo enviar los tipos de datos básicos usando read / write int / string.
Pero estoy enfrentando el problema mientras que el objeto de dibujo.
Para eso Drawable
intentado convertir la Drawable
de Drawable
a byte array
, pero estoy recibiendo Excepciones de Drawable
de clase.
Estoy usando el siguiente código para cubrir mi matriz Drawable to 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);
Y para convertir la matriz de bytes a Drawable estoy usando código siguiente:
final int contentBytesLen = in.readInt(); byte[] contentBytes = new byte[contentBytesLen]; in.readByteArray(contentBytes); mMyDrawable = new BitmapDrawable(BitmapFactory.decodeByteArray(contentBytes, 0, contentBytes.length));
Cuando ejecuto esto obtengo una excepción de clase.
¿Cómo podemos escribir / pasar Drawable usando el HashMap?
¿Hay alguna manera por la cual podemos pasar Drawable en paquete.
Gracias.
- Algunos objetos parcelables reunidos en un intento / paquete podrían interferir y comprometer la lectura de Intención / Bundle?
- ¿Cómo arreglar Unmarshalling código de tipo desconocido XXX en el desplazamiento YYY en Android?
- No se puede poner más en una intención
- Parcelable donde / cuando se describeContents () usado?
- Parcelable y herencia en Android
- Android ArrayList <MyObject> pasar como parcelable
- Leer y escribir arreglos de objetos parcelables
- Android: ¿Cómo pasar el objeto Parcelable a la intención y el uso getParcelable método de paquete?
Como ya convierte Drawable a Bitmap en su código, ¿por qué no utilizar Bitmap como miembro de su clase Parcelable?
Bitmap implementa Parcelable por defecto en la API, utilizando Bitmap, no necesita hacer nada especial en su código y será manejado automáticamente por Parcel.
O si insistes en usar Drawable, implementa tu Parcelable como algo así:
public void writeToParcel(Parcel out, int flags) { ... ... // Convert Drawable to Bitmap first: Bitmap bitmap = (Bitmap)((BitmapDrawable) mMyDrawable).getBitmap(); // Serialize bitmap as Parcelable: out.writeParcelable(bitmap, flags); ... ... } private Guide(Parcel in) { ... ... // Deserialize Parcelable and cast to Bitmap first: Bitmap bitmap = (Bitmap)in.readParcelable(getClass().getClassLoader()); // Convert Bitmap to Drawable: mMyDrawable = new BitmapDrawable(bitmap); ... ... }
Espero que esto ayude.
En mi aplicación, guardé Drawable / BitMap en Cache y lo pasé usando la ruta de acceso del archivo String.
No es una solución que buscaba, pero al menos alguna alternativa para su problema.
- ¿Cómo hacer un HTTPS POST de Android?
- Android.content.res.Resources $ NotFoundException al establecer programación android.R.attr.listChoiceIndicatorMultiple