Temas de audio y video de Android (1) Dibuje una imagen en la plataforma Android, utilizando al menos 3 API diferentes, ImageView, SurfaceView y vista personalizada

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

https://gitee.com/richardxiong/avdemo/compare/d3be1269cf53d891cc9b4e4075988dd40930a6a5...29a17cf7f2b922086d0e6a15e2c3c3e96502e1ec

 

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);
            }
        }
    }

Envíe  https://gitee.com/richardxiong/avdemo/compare/2b9ff829f0ffbaf2f654949adfd790caa6aa4923...6cb401880b8f8a48c67db045611764f19fe9b2cd

Supongo que te gusta

Origin blog.csdn.net/xfb1989/article/details/113338219
Recomendado
Clasificación