Prefacio
Si desea comenzar con el desarrollo de audio y video paso a paso, debe aprender, organizar y acumular paso a paso. Este artículo es el primero acumulado en desarrollo de audio y video. El contenido correspondiente a aprender es:
Para dibujar una imagen en la plataforma Android, use al menos 3 API diferentes, ImageView, SurfaceView y vista personalizada.
1. ImageView hace dibujos
Bitmap bitmap = BitmapFactory.decodeFile(Environment.getExternalStorageDirectory().getPath() + File.separator + "11.jpg");
imageView.setImageBitmap(bitmap);
Si se envía el código, si se encuentra con 02-04 17: 25: 52.573 E / BitmapFactory (4789): No se puede decodificar el flujo: java.io.FileNotFoundException: sdcard / 22.jpg: error de apertura: problema EACCES (Permiso denegado)
Agregue android: requestLegacyExternalStorage = "true" en el archivo de manifiesto
2. SurfaceView hace dibujos
SurfaceView surfaceView = (SurfaceView) findViewById(R.id.surface);
surfaceView.getHolder().addCallback(new SurfaceHolder.Callback() {
@Override
public void surfaceCreated(SurfaceHolder surfaceHolder) {
if (surfaceHolder == null) {
return;
}
Paint paint = new Paint();
paint.setAntiAlias(true);
paint.setStyle(Paint.Style.STROKE);
// 获取bitmap
Bitmap bitmap = BitmapFactory.decodeFile(Environment.getExternalStorageDirectory().getPath() + File.separator + "11.jpg");
// 先锁定当前surfaceView的画布
Canvas canvas = surfaceHolder.lockCanvas();
//执行绘制操作
canvas.drawBitmap(bitmap, 0, 0, paint);
// 解除锁定并显示在界面上
surfaceHolder.unlockCanvasAndPost(canvas);
}
@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
}
@Override
public void surfaceDestroyed(SurfaceHolder holder) {
}
});
3. Personaliza la vista para hacer dibujos
public class CustomView extends View {
Paint paint = new Paint();
Bitmap bitmap;
public CustomView(Context context) {
super(context);
paint.setAntiAlias(true);
paint.setStyle(Paint.Style.STROKE);
// 获取bitmap
bitmap = BitmapFactory.decodeFile(Environment.getExternalStorageDirectory().getPath()
+ File.separator + "11.jpg");
}
@Override
public void draw(Canvas canvas) {
super.draw(canvas);
// 不建议在onDraw做任何分配内存的操作
if (bitmap != null) {
canvas.drawBitmap(bitmap, 0, 0, paint);
}
}
}