zoukankan      html  css  js  c++  java
  • android 图片

    1,setCompoundDrawables(Drawable left, Drawable top,Drawable right, Drawable bottom)

      设置图片出现在textView,button,editText的各个方向.其中,left是drawable类型的.

    2.如何获取上面的drawable

      Drawable drawable = getResources().getDrawable(R.drawable.username);

      drawable.setBounds(5,1,60,50);

      设置drawable的坐标为5,1,宽和高为:60和50

    3.

    手动设置文本与图片相对位置时,常用到如下方法:

    setCompoundDrawables(left, top, right, bottom)

    setCompoundDrawablesWithIntrinsicBounds(left, top, right, bottom)

    意思是设置Drawable显示在text的左、上、右、下位置。


    但是两者有些区别:
    setCompoundDrawables 画的drawable的宽高是按drawable.setBound()设置的宽高,
    所以才有The Drawables must already have had setBounds(Rect) called.

    使用之前必须使用Drawable.setBounds设置Drawable的长宽。

    setCompoundDrawablesWithIntrinsicBounds是画的drawable的宽高是按drawable固定的宽高,
    所以才有The Drawables' bounds will be set to their intrinsic bounds.

    即通过getIntrinsicWidth()与getIntrinsicHeight()获得,

    4.

    1、Drawable就是一个可画的对象,其可能是一张位图(BitmapDrawable),也可能是一个图形(ShapeDrawable),还有可能是一个图层(LayerDrawable),我们根据画图的需求,创建相应的可画对象
    2、Canvas画布,绘图的目的区域,用于绘图
    3、Bitmap位图,用于图的处理
    4、Matrix矩阵
    1、从资源中获取Bitmap
     
        1. Resources res = getResources();  
        2. Bitmap bmp = BitmapFactory.decodeResource(res, R.drawable.icon);  

     

    2、Bitmap → byte[]
     
    public byte[] Bitmap2Bytes(Bitmap bm) {  

     ByteArrayOutputStream baos = new ByteArrayOutputStream();  

     bm.compress(Bitmap.CompressFormat.PNG, 100, baos);

    return baos.toByteArray();  

    }  

     
     
         public Bitmap Bytes2Bimap(byte[] b) {  
          if (b.length != 0) {  
            return BitmapFactory.decodeByteArray(b, 0, b.length);  
         } else {  
              return null;  
         }  
         }  
     
         public static Bitmap zoomBitmap(Bitmap bitmap, int width, int height) {  
           int w = bitmap.getWidth();  
            int h = bitmap.getHeight();  
            Matrix matrix = new Matrix();  
           float scaleWidth = ((float) width / w);  
            float scaleHeight = ((float) height / h);  
             matrix.postScale(scaleWidth, scaleHeight);  
            Bitmap newbmp = Bitmap.createBitmap(bitmap, 0, 0, w, h, matrix, true);  
            return newbmp;  
         }  
      drawable转化成bitmap
     
         public static Bitmap drawableToBitmap(Drawable drawable) {  
              // 取 drawable 的长宽  
              int w = drawable.getIntrinsicWidth();  
               int h = drawable.getIntrinsicHeight();  
        
               // 取 drawable 的颜色格式  
               Bitmap.Config config = drawable.getOpacity() != PixelFormat.OPAQUE ? Bitmap.Config.ARGB_8888  
                        : Bitmap.Config.RGB_565;  
            // 建立对应 bitmap  
               Bitmap bitmap = Bitmap.createBitmap(w, h, config);  
              // 建立对应 bitmap 的画布  
                 Canvas canvas = new Canvas(bitmap);  
               drawable.setBounds(0, 0, w, h);  
               // 把 drawable 内容画到画布中  
               drawable.draw(canvas);  
               return bitmap;  
           }  
    获得圆角图片 
     
         public static Bitmap getRoundedCornerBitmap(Bitmap bitmap, float roundPx) {  
             int w = bitmap.getWidth();  
             int h = bitmap.getHeight();  
             Bitmap output = Bitmap.createBitmap(w, h, Config.ARGB_8888);  
            Canvas canvas = new Canvas(output);  
            final int color = 0xff424242;  
            final Paint paint = new Paint();  
             final Rect rect = new Rect(0, 0, w, h);  
            final RectF rectF = new RectF(rect);  
             paint.setAntiAlias(true);  
           canvas.drawARGB(0, 0, 0, 0);  
             paint.setColor(color);  
             canvas.drawRoundRect(rectF, roundPx, roundPx, paint);  
             paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN));  
             canvas.drawBitmap(bitmap, rect, rect, paint);  
           
             return output;  
        }  
     
     
     
    1、Bitmap转换成Drawable
        .Bitmap bm=xxx; //xxx根据你的情况获取  
         BitmapDrawable bd= new BitmapDrawable(getResource(), bm);   
         因为BtimapDrawable是Drawable的子类,最终直接使用bd对象即可。
      
    2、Drawable缩放
         public static Drawable zoomDrawable(Drawable drawable, int w, int h) {  
           int width = drawable.getIntrinsicWidth();  
            int height = drawable.getIntrinsicHeight();  
           // drawable转换成bitmap  
             Bitmap oldbmp = drawableToBitmap(drawable);  
             // 创建操作图片用的Matrix对象  
            Matrix matrix = new Matrix();  
            // 计算缩放比例  
             float sx = ((float) w / width);  
             float sy = ((float) h / height);  
             // 设置缩放比例  
             matrix.postScale(sx, sy);  
          // 建立新的bitmap,其内容是对原bitmap的缩放后的图  
             Bitmap newbmp = Bitmap.createBitmap(oldbmp, 0, 0, width, height,  
                     matrix, true);  
            return new BitmapDrawable(newbmp);  
         }
  • 相关阅读:
    Unix命令大全
    vs2008 与 IE8出现的兼容性问题
    Java 创建文件、文件夹以及临时文件
    如何修改Wamp中mysql默认空密码
    PAT 乙级真题 1003.数素数
    Tags support in htmlText flash as3
    DelphiXE4 FireMonkey 试玩记录,开发IOS应用 还是移植
    10 Great iphone App Review sites to Promote your Apps!
    HTML tags in textfield
    Delphi XE4 IOS 开发, "No eligible applications were found“
  • 原文地址:https://www.cnblogs.com/likeju/p/4675948.html
Copyright © 2011-2022 走看看