Android Api demo系列(18) (Graphics>AlphaBitmap)
来源:互联网 发布:centos 7.2安装选项 编辑:程序博客网 时间:2024/06/10 02:07
Graphics>AlphaBitmap
这节主要讲的是bitmap相关的绘制,把一张图片绘制在view上。
在src下的raw文件夹中读取图片
InputStream is = context.getResources().openRawResource(R.drawable.app_sample_code);使用bitmapFactory把流转成bitmap
mBitmap = BitmapFactory.decodeStream(is);提取mBitmap的alpha通道轮廓
mBitmap2 = mBitmap.extractAlpha();//只取出mBitmap的alpha通道,形成一个新的bitmap
创建一个空白的bitmap,尺寸200*200
mBitmap3 = Bitmap.createBitmap(200, 200, Bitmap.Config.ALPHA_8);//创建一个bitmap当做容器,保存接下来的像素值
初始化这个bitmap3
private static void drawIntoBitmap(Bitmap bm) { float x = bm.getWidth(); float y = bm.getHeight(); Canvas c = new Canvas(bm);//设置之前创建的空白bitmap,把画布上的数据全部保存在bitmap上 Paint p = new Paint(); p.setAntiAlias(true); p.setAlpha(0x80); c.drawCircle(x/2, y/2, x/2, p);//画圆,圆心和半径 p.setAlpha(0x30); p.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC)); p.setTextSize(60);//设置字体大小 p.setTextAlign(Paint.Align.CENTER); Paint.FontMetrics fm = p.getFontMetrics(); c.drawText("Alpha", x/2, (y-fm.ascent)/2, p); }
把上面三个bitmap画在view上
@Override protected void onDraw(Canvas canvas) { canvas.drawColor(Color.WHITE); Paint p = new Paint(); float y = 10; p.setColor(Color.RED); canvas.drawBitmap(mBitmap, 10, y, p); y += mBitmap.getHeight() + 10; canvas.drawBitmap(mBitmap2, 10, y, p); y += mBitmap2.getHeight() + 10; p.setShader(mShader); canvas.drawBitmap(mBitmap3, 10, y, p); }最左上角显示ApiDemo的图标mBitmap。 mBitmap2 中存储了mBitmap中的Alpha通道值,此是如果调用Canvas.drawBitmap(mBitmap2),mBitmap2 的颜色会显示由Paint传入的值(此例为红色),有兴趣的可以改为其它颜色试试,mBitmap2的颜色也会随着变化。对于mBitmap3 来说 ,drawIntoBitmap中只绘制了一个圆和一行文字,但由于创建时采用的是ALPHA_8配置,因此和mBitmap2类似,它也会使用有Paint定义的颜色,但Paint此时定义的颜色是由Shader定义颜色线性渐变,所以就有了五颜六色的背景。
阅读全文
0 0
- Android Api demo系列(18) (Graphics>AlphaBitmap)
- Android Api Demos登顶之路(六十五)Graphics-->AlphaBitmap
- Android Api demo系列(19) (Graphics>AnimateDrawables)
- Android Api demo系列(20) (Graphics>clipping)
- Android Api demo系列(21) (Graphics>PathEffects)
- Android Api demo系列(22) (Graphics>Patterns)
- Android Api demo系列(23) (Graphics>Pictures)
- Android Api demo系列(26) (Graphics>Sweep)
- Android Api demo系列(27) (Graphics>Text Align)
- Android Api demo系列(28) (Graphics>Typefaces)
- Android Api demo系列(24) (Graphics>RoundRects(讲解的是GradientDrawable的使用))
- Android Api demo系列(24) (Graphics>shadow card drag)
- Android Api demo系列(25) (Graphics>shadow card stack)
- Android ApiDemos示例解析(51):Graphics->AlphaBitmap
- Graphics之AlphaBitmap
- Android Api demo系列(一) (App>Activity>Animation)
- Android Api demo系列(二) (App>Activity>CustomDialog)
- Android Api demo系列(3) (App>Activity>CustomTitle)
- request内置对象
- Diagonal Traverse问题及解法
- iOS开发中支付宝支付的集成(其实很简单)
- 常见浏览器的兼容问题
- 有关c#通过串口接收机器数据的分析
- Android Api demo系列(18) (Graphics>AlphaBitmap)
- Ruby 代码块及其作用域详解
- 动态规划总结
- python
- 操作系统常见面试和笔试题
- java ssl通信
- CSS的四种引入方式
- Lambda表达式
- 202. Happy Number