zoukankan      html  css  js  c++  java
  • drawable-图片绘制

    首先看一下,下端代码

    private Bitmap createSelectedChip(RecipientEntry contact, TextPaint paint) {
            int height = (int) mChipHeight;
            int deleteWidth = height;
            float[] widths = new float[1];
            paint.getTextWidths(" ", widths);
            CharSequence ellipsizedText = ellipsizeText(createChipDisplayText(contact), paint,
                    calculateAvailableWidth() - deleteWidth - widths[0]);
            printDebugLog(TAG,"[createSelectedChip] " + ellipsizedText);
    
            int width = Math.max( 0 /*deleteWidth * 2*/, (int) Math.floor(paint.measureText(ellipsizedText, 0,
                    ellipsizedText.length()))
                    + (mChipPadding * 2) + deleteWidth);
            /// @}
            // Create the background of the chip.
    
    //创建一个画布,宽为width,高为height
            Bitmap tmpBitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
    //创建一个工具,这个工具的操作,都是在这个画布上进行的
            Canvas canvas = new Canvas(tmpBitmap);
            if (mChipBackgroundPressed != null) {
    //创建一个矩形
                Rect backgroundPadding = new Rect();
                mChipBackgroundPressed.getPadding(backgroundPadding);
    //获得一个图片的大小,这个应该是按比例压缩的感觉
                mChipBackgroundPressed.setBounds(0, 0, width - deleteWidth, height);
    //把这个压缩以后的图片绘制到这个画布上(图过工具)
                mChipBackgroundPressed.draw(canvas);
    //创建一个画笔,给他设定颜色
                paint.setColor(sSelectedTextColor);
    //通过工具跟画笔,绘制一个文字
                canvas.drawText(ellipsizedText, 0, ellipsizedText.length(), mChipPadding,
                        getTextYOffset((String) ellipsizedText, paint, height), paint);
                mChipDelete.setBounds(width - deleteWidth - backgroundPadding.left,
    + backgroundPadding.top/2,
                        width - backgroundPadding.right/2,
                        height);
                mChipDelete.draw(canvas);
            } else {
                Log.w(TAG, "Unable to draw a background for the chips as it was never set");
            }
            return tmpBitmap;
        }

    Drawable drawable = xxxx;
    drawable.setBounds(int, int, int, int);
    drawable.draw(canvas);

    setBounds 有人给出的解释是,绘制图片时候,相对于父容器的边距

    但是,通过验证,我感觉应该是如下的解释,看图

  • 相关阅读:
    简单的PHP+SMARTY分页类
    三大WEB服务器对比分析(apache ,lighttpd,nginx)
    逐步设置vim C/C++语法高亮显示和自动缩进
    Lighttpd 的安装配置(web服务器软件)
    ASP如何获取文件和目录空间大小
    innerHtml用法
    临时表操作的一些见解(解决了我在存储过程中使用临时表的困惑)
    Javascript的IE和Firefox兼容性汇编
    Javascript的IE和Firefox兼容性汇编
    innerHtml用法
  • 原文地址:https://www.cnblogs.com/zhangshuli-1989/p/zhangshuli_drawable_150327135.html
Copyright © 2011-2022 走看看