序文
オーディオとビデオの開発を段階的に開始したい場合は、段階的に学習、整理、および蓄積する必要があります。この記事は、オーディオとビデオの開発で蓄積された最初の記事です。学習する対応するコンテンツは次のとおりです。
Androidプラットフォームで絵を描くには、少なくとも3つの異なるAPI、ImageView、SurfaceView、およびカスタムビューを使用します。
1.ImageViewは絵を描きます
Bitmap bitmap = BitmapFactory.decodeFile(Environment.getExternalStorageDirectory().getPath() + File.separator + "11.jpg");
imageView.setImageBitmap(bitmap);
コードが送信された場合、02-04 17:25:52.573 E / BitmapFactory(4789)が発生した場合:ストリームをデコードできません:java.io.FileNotFoundException:sdcard / 22.jpg:オープンに失敗しました:EACCES(アクセスが拒否されました)の問題
マニフェストファイルにandroid:requestLegacyExternalStorage = "true"を追加します
2.SurfaceViewは絵を描きます
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.ビューをカスタマイズして絵を描きます
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);
}
}
}