Tratando de dibujar en un mapa de bits cargado por el usuario
Estoy tratando de dibujar en un mapa de bits cargado por el usuario. Esto está en onCreate
.
imageView = (ImageView) this.findViewById(R.id.ImageView); Display currentDisplay = getWindowManager().getDefaultDisplay(); float dw = currentDisplay.getWidth(); float dh = currentDisplay.getHeight(); bitmap = Bitmap.createBitmap((int) dw, (int) dh, Bitmap.Config.ARGB_8888); canvas = new Canvas(bitmap); paint = new Paint(); paint.setColor(Color.BLUE); imageView.setImageBitmap(bitmap); imageView.setOnTouchListener(this);
El siguiente código es cuando el usuario pulsa un botón para obtener el mapa de bits y después de que el mapa de bits se recupera correctamente. Es al final de " onActivityResult
"
- Lona de Android a mapa de bits
- Convertir la textura procesada de OpenGL ES 2.0 en mapa de bits y volver
- Escribir metadatos EXIF en imágenes en Android
- Android Paint PorterDuff.Mode.CLEAR
- ¿Cómo hacer que cualquier vista dibuje a la lona?
canvas = new Canvas(bitmap); paint = new Paint(); paint.setColor(Color.BLUE); imageView.setImageBitmap(BitmapFactory.decodeFile(picturePath)); imageView.setOnTouchListener(this);
Soy capaz de dibujar en el mapa de bits en blanco que se realiza durante onCreate
, pero cuando el usuario carga el nuevo mapa de bits y tratar de dibujar no se muestra. El nuevo mapa de bits se carga sin embargo.
Me cansé de hacer esto también
canvas = new Canvas(BitmapFactory.decodeFile(picturePath));
Entonces me dio error.
Alguien sabe si estoy haciendo algo mal?
EDIT: Este es el archivo de registro:
10-25 03:19:31.409: W/System.err(1971): java.lang.Exception: java.lang.IllegalStateException: Immutable bitmap passed to Canvas constructor 10-25 03:19:31.409: W/System.err(1971): at com.example.milestone2.Draw.onActivityResult(Draw.java:148) 10-25 03:19:31.409: W/System.err(1971): at android.app.Activity.dispatchActivityResult(Activity.java:5293) 10-25 03:19:31.409: W/System.err(1971): at android.app.ActivityThread.deliverResults(ActivityThread.java:3315) 10-25 03:19:31.409: W/System.err(1971): at android.app.ActivityThread.handleSendResult(ActivityThread.java:3362) 10-25 03:19:31.409: W/System.err(1971): at android.app.ActivityThread.access$1100(ActivityThread.java:141) 10-25 03:19:31.419: W/System.err(1971): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1282) 10-25 03:19:31.419: W/System.err(1971): at android.os.Handler.dispatchMessage(Handler.java:99) 10-25 03:19:31.419: W/System.err(1971): at android.os.Looper.loop(Looper.java:137) 10-25 03:19:31.428: W/System.err(1971): at android.app.ActivityThread.main(ActivityThread.java:5041) 10-25 03:19:31.428: W/System.err(1971): at java.lang.reflect.Method.invokeNative(Native Method) 10-25 03:19:31.428: W/System.err(1971): at java.lang.reflect.Method.invoke(Method.java:511) 10-25 03:19:31.428: W/System.err(1971): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793) 10-25 03:19:31.428: W/System.err(1971): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560) 10-25 03:19:31.428: W/System.err(1971): at dalvik.system.NativeStart.main(Native Method) 10-25 03:19:31.438: W/System.err(1971): Caused by: java.lang.IllegalStateException: Immutable bitmap passed to Canvas constructor 10-25 03:19:31.448: W/System.err(1971): at android.graphics.Canvas.<init>(Canvas.java:127) 10-25 03:19:31.469: W/System.err(1971): at com.example.milestone2.Draw.onActivityResult(Draw.java:141) 10-25 03:19:31.469: W/System.err(1971): ... 13 more 10-25 03:19:31.588: E/SurfaceFlinger(37): ro.sf.lcd_density must be defined as a build property
- Borde sobre un mapa de bits con esquinas redondeadas en Android
- Repetición de mapa de bits + esquinas redondeadas
- Tome la imagen y convertir a Base64
- Cómo convertir todo el contenido en una vista de desplazamiento a un mapa de bits?
- mapa de bits de Android a matriz de bytes sin compresión
- La sombra CardView no se procesa cuando se convierte en mapa de bits
- ¿Cómo hacer efecto de resplandor alrededor de un mapa de bits?
- Opengl es 2.0 dibujar superposición de mapa de bits en vídeo
Debe establecer el mapa de bits que se devuelve como el mapa de bits para el lienzo. Pero BitmapFactory.decodeFile(picturePath)
devuelve un mapa de bits inmutable. Convertir esto en un mapa de bits mutable y luego establecer es el lienzo.
Prueba esto:
Bitmap loadedBitmap = BitmapFactory.decodeFile(picturePath); Bitmap drawableBitmap = loadedBitmap.copy(Bitmap.Config.ARGB_8888, true); canvas = new Canvas(drawableBitmap); paint = new Paint(); paint.setColor(Color.BLUE); imageView.setImageBitmap(drawableBitmap); imageView.setOnTouchListener(this);
- Necesita un buen método para cambiar (SQLite) tipo de datos de columna
- Android: formato de fuente en diálogo de alerta