首页 > 系统 > Android > 正文

android中一些容易遗忘的知识点

2019-11-15 00:56:02
字体:
来源:转载
供稿:网友
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、从资源中获取Bitmap1.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); }
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表