声明:本教程不收取任何费用,欢迎转载,尊重作者劳动成果,不得用于商业用途,侵权必究!!!
任务目标:1、在 Android 平台绘制一张图片,使用至少 3 种不同的 API:ImageView,SurfaceView,自定义 View
一、ImageView 绘制图片
1、主要代码
Bitmap bitmap = BitmapFactory.decodeFile(Environment.
getExternalStorageDirectory().getPath() + File.separator + "share.jpg");
imageView.setImageBitmap(bitmap);
有可能会报权限错误:BitmapFactory: Unable to decode stream: java.io.FileNotFoundException: /storage/emulated/0/share.jpg (Permission denied) 详细可参考:Android6.0动态申请SD卡读写的权限
2、源代码、效果图
源代码可参考:Android 6.0以上权限演示:ImageView 绘制图片显示
二、SurfaceView 绘制图片
1、主要代码
surfaceView.getHolder().addCallback(new SurfaceHolder.Callback() {
@Override
public void surfaceCreated(SurfaceHolder holder) {
if (holder == null) {
return;
}
Paint paint = new Paint();//画笔
paint.setAntiAlias(true);//设置是否抗锯齿
paint.setStyle(Paint.Style.STROKE);//设置画笔风格
Bitmap bitmap = BitmapFactory.decodeResource(getResources(),
R.mipmap.ic_launcher); // 获取bitmap【项目资源目录】
Canvas canvas = holder.lockCanvas(); // 先锁定当前surfaceView的画布
canvas.drawBitmap(bitmap, 0, 0, paint); //执行绘制操作
holder.unlockCanvasAndPost(canvas); // 解除锁定并显示在界面上
}
@Override
//AS没有导入源码,所以参数杂乱。导入源码后,如下
// public void surfaceChanged(SurfaceHolder arg0, int arg1, int arg2, int arg3) {
public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
}
@Override
public void surfaceDestroyed(SurfaceHolder holder) {
}
});
2、源代码、效果图
源代码可参考:SurfaceView绘制图片
相关文章持续更新:
三、自定义View 绘制图片
详见:自定义View绘制图片