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.Resourcesres=getResources(); 2.Bitmapbmp=BitmapFactory.decodeResource(res,R.drawable.icon);

2、Bitmap → byte[] publicbyte[]Bitmap2Bytes(Bitmapbm){

ByteArrayOutputStreambaos=newByteArrayOutputStream();

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

returnbaos.toByteArray();

}

publicBitmapBytes2Bimap(byte[]b){ if(b.length!=0){ returnBitmapFactory.decodeByteArray(b,0,b.length); }else{ returnnull; } } publicstaticBitmapzoomBitmap(Bitmapbitmap,intwidth,intheight){ intw=bitmap.getWidth(); inth=bitmap.getHeight(); Matrixmatrix=newMatrix(); floatscaleWidth=((float)width/w); floatscaleHeight=((float)height/h); matrix.postScale(scaleWidth,scaleHeight); Bitmapnewbmp=Bitmap.createBitmap(bitmap,0,0,w,h,matrix,true); returnnewbmp; } drawable转化成bitmap publicstaticBitmapdrawableToBitmap(Drawabledrawable){ //取drawable的长宽 intw=drawable.getIntrinsicWidth(); inth=drawable.getIntrinsicHeight(); //取drawable的颜色格式 Bitmap.Configconfig=drawable.getOpacity()!=PixelFormat.OPAQUE?Bitmap.Config.ARGB_8888 :Bitmap.Config.RGB_565; //建立对应bitmap Bitmapbitmap=Bitmap.createBitmap(w,h,config); //建立对应bitmap的画布 Canvascanvas=newCanvas(bitmap); drawable.setBounds(0,0,w,h); //把drawable内容画到画布中 drawable.draw(canvas); returnbitmap; } 获得圆角图片 publicstaticBitmapgetRoundedCornerBitmap(Bitmapbitmap,floatroundPx){ intw=bitmap.getWidth(); inth=bitmap.getHeight(); Bitmapoutput=Bitmap.createBitmap(w,h,Config.ARGB_8888); Canvascanvas=newCanvas(output); finalintcolor=0xff424242; finalPaintpaint=newPaint(); finalRectrect=newRect(0,0,w,h); finalRectFrectF=newRectF(rect); paint.setAntiAlias(true); canvas.drawARGB(0,0,0,0); paint.setColor(color); canvas.drawRoundRect(rectF,roundPx,roundPx,paint); paint.setXfermode(newPorterDuffXfermode(Mode.SRC_IN)); canvas.drawBitmap(bitmap,rect,rect,paint); returnoutput; } 1、Bitmap转换成Drawable .Bitmapbm=xxx;//xxx根据你的情况获取 BitmapDrawablebd=newBitmapDrawable(getResource(),bm); 因为BtimapDrawable是Drawable的子类,最终直接使用bd对象即可。 2、Drawable缩放 publicstaticDrawablezoomDrawable(Drawabledrawable,intw,inth){ intwidth=drawable.getIntrinsicWidth(); intheight=drawable.getIntrinsicHeight(); //drawable转换成bitmap Bitmapoldbmp=drawableToBitmap(drawable); //创建操作图片用的Matrix对象 Matrixmatrix=newMatrix(); //计算缩放比例 floatsx=((float)w/width); floatsy=((float)h/height); //设置缩放比例 matrix.postScale(sx,sy); //建立新的bitmap,其内容是对原bitmap的缩放后的图 Bitmapnewbmp=Bitmap.createBitmap(oldbmp,0,0,width,height, matrix,true); returnnewBitmapDrawable(newbmp); }

更多相关文章

  1. Android中Context的使用总结
  2. 初试GreenDAO 3.2.3
  3. Android(安卓)在Java代码中设置style属性--使用代码创建Progress
  4. 【java】【android】序列化Serializable和继承
  5. Android(安卓)camera系统开发之IPC (三)
  6. Android(安卓)optionsMenu,菜单的使用
  7. android,java知识点总结(一)
  8. Android压缩图片到100K以下并保持不失真的高效方法 - feicien的
  9. Android中Bundle传递数据和对象

随机推荐

  1. 分享几种用PHP写99乘法表的方式
  2. 分享php+redis实现对200w用户的即时推送
  3. 教你用php实现栈结构
  4. PHP实现抓取百度搜索结果,并分析数据结构
  5. 分享十个PHP安全的必备技巧
  6. PHP协程框架Hyperf日志查看组件
  7. 解析PHP标准库SPL数据结构
  8. 创建 PSR-4 的 Php 包
  9. 看看PHP 多进程处理任务
  10. 一定要改掉 这5个PHP编程中的不良习惯!