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.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); }更多相关文章
- Android中Context的使用总结
- 初试GreenDAO 3.2.3
- Android(安卓)在Java代码中设置style属性--使用代码创建Progress
- 【java】【android】序列化Serializable和继承
- Android(安卓)camera系统开发之IPC (三)
- Android(安卓)optionsMenu,菜单的使用
- android,java知识点总结(一)
- Android压缩图片到100K以下并保持不失真的高效方法 - feicien的
- Android中Bundle传递数据和对象