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. 1Drawable就是一个可画的对象,其可能是一张位图(BitmapDrawable),也可能是一个图形(ShapeDrawable),还有可能是一个图层(LayerDrawable),我们根据画图的需求,创建相应的可画对象
  1. 2Canvas画布,绘图的目的区域,用于绘图
  1. 3Bitmap位图,用于图的处理
  1. 4Matrix矩阵
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);  
     }

android 图片的更多相关文章

  1. Android图片缓存之Lru算法

    前言: 上篇我们总结了Bitmap的处理,同时对比了各种处理的效率以及对内存占用大小.我们得知一个应用如果使用大量图片就会导致OOM(out of memory),那该如何处理才能近可能的降低oom发 ...

  2. Android图片处理

    相信做Android开发的小伙伴对于Android图片压缩.裁剪一定有很深的印象,今天我将带领大家一起学习一下这个看着高深莫测的知识,以便再以后的学习.工作中可以帮助到大家. 首先我们看一下这个问题出 ...

  3. Android图片缓存之Glide进阶

    前言: 前面学习了Glide的简单使用(Android图片缓存之初识Glide),今天来学习一下Glide稍微复杂一点的使用. 图片缓存相关博客地址: Android图片缓存之Bitmap详解 And ...

  4. Android图片缓存之初识Glide

    前言: 前面总结学习了图片的使用以及Lru算法,今天来学习一下比较优秀的图片缓存开源框架.技术本身就要不断的更迭,从最初的自己使用SoftReference实现自己的图片缓存,到后来做电商项目自己的实 ...

  5. Android图片缓存之Bitmap详解

    前言: 最近准备研究一下图片缓存框架,基于这个想法觉得还是先了解有关图片缓存的基础知识,今天重点学习一下Bitmap.BitmapFactory这两个类. 图片缓存相关博客地址: Android图片缓 ...

  6. Android 图片压缩、照片选择、裁剪,上传、一整套图片解决方案

    1.Android一整套图片解决方案 http://mp.weixin.qq.com/s?__biz=MzAxMTI4MTkwNQ==&mid=2650820998&idx=1& ...

  7. 一步一步打造自己的Android图片浏览器(原创)

    今天我们试着来制作一个自己的Android图片浏览器. 图片浏览器应该具有什么功能呢?鉴于不同的人不同的理解,这里提出一个基本的需求: 搜索手机内的所有图片,展示于一个列表中: 列表中展示的是图片的缩 ...

  8. Android 图片浏览器 从原来位置放大至全屏显示

    android 图片浏览器 特点: 1.从网络加载图片,只需要传图片地址数组即可 2.点击图片,从原来位置放大至全屏 3.支持手势操作 4.完全自定义布局 项目源码请到GitHub下载:https:/ ...

  9. android图片处理方法

    Java代码 //压缩图片大小 public static Bitmap compressImage(Bitmap image) { ByteArrayOutputStream baos = new ...

  10. Android 图片文件操作、屏幕相关、.9图片的理解

     一:Android图片操作 1.存储bitmap到本地文件系统 public static void bitmapToFile(Bitmap bitmap, String uri) { if(!ex ...

随机推荐

  1. UVa 1644 Prime Gap (水题,暴力)

    题意:给定一个数 n,求它后一个素数和前一个素数差. 析:先打表,再二分查找. 代码如下: #pragma comment(linker, "/STACK:1024000000,102400 ...

  2. sql server编写通用脚本自动统计各表数据量心得

    工作过程中,如果一个数据库的表比较多,手工编写统计脚本就会比较繁琐,于是摸索出自动生成各表统计数据量脚本的通用方法,直接上代码: /* 脚本来源:https://www.cnblogs.com/zha ...

  3. 你不知道的meta标签

    前言 meta标签可以用来做seo优化.指定移动端viewport的展现形式.设置http请求.告诉浏览器缓存静态资源的模式等等.今天整理一下使用meta标签实用的,常见的场景. meta标签的组成 ...

  4. firewall-cmd 使用总结

    firewalld的简要说明: firewalld .firewall-cmd .firewall-offline-cmd它们Python脚本,通过定义的在/usr/lib/firewalld下面的x ...

  5. AtCoder Grand Contest 017 A

    Problem Statement There are N bags of biscuits. The i-th bag contains Ai biscuits. Takaki will selec ...

  6. Educational Codeforces Round 20 B

    Description You are given the array of integer numbers a0, a1, ..., an - 1. For each element find th ...

  7. azkaban web ui界面出现异常诡异“丑”界面的问题解决(图文详解)

    前期博客 启动azkaban时出现User xml file conf/azkaban-users.xml doesn't exist问题解决(图文详解) 问题详情 [hadoop@master co ...

  8. 项目错误提示Multiple markers at this line

    新安装个Myeclipse,导入以前做的程序后程序里好多错,第一行提示: Multiple markers at this line         - The type java.lang.Obje ...

  9. [转]深入浅出WPF(7)——数据的绿色通道,Binding

    本文转自:http://liutiemeng.blog.51cto.com/120361/95273 小序: 怎么直接从2蹦到7啦?!啊哦,实在是不好意思,最近实在是太忙了,忙的原因也非常简单——自己 ...

  10. re正则表达式公式讲解3

    1.分组匹配    用()把需要分组的类型括起来,如下 import re m = re.search("([a-z]+)([0-9]+)","alex123" ...