Android使用RotateImageView 旋转ImageView
废话不多说了,直接给大家代码。
具体代码如下所示:
packagecom.droidhen.game.layout;
importandroid.content.Context;
importandroid.graphics.Bitmap;
importandroid.graphics.Bitmap.Config;
importandroid.graphics.Canvas;
importandroid.graphics.Paint;
importandroid.graphics.PaintFlagsDrawFilter;
importandroid.graphics.Rect;
importandroid.widget.ImageView;
publicclassRotateImageViewextendsImageView{
/**旋转角度**/
privatefloat_degree;
/**旋转中心**/
privatefloat_x;
privatefloat_y;
/**背景和前景资源*/
privateBitmap_bgRes,_fgRes;
/**数字图片资源*/
privateBitmap_nums;
privateBitmap_buffer;
privateCanvas_canvas;
privateintstart=;
privateintunitx=;
publicRotateImageView(Contextcontext){
super(context);
_degree=f;
_x=;
_y=;
_nums=BitmapFactory.decodeResource(getResources(),R.drawable.level_num);
}
publicvoidsetResIds(intbgResId,intfgResId){
_bgRes=BitmapFactory.decodeResource(getResources(),bgResId);
_fgRes=BitmapFactory.decodeResource(getResources(),fgResId);
}
publicvoidsetLevel(intlevel){
String_level=String.valueOf(level);
_buffer=Bitmap.createBitmap(_level.length()*(_nums.getWidth()/),_nums.getHeight(),Config.ARGB_);
unitx=_nums.getWidth()/;
_canvas=newCanvas(_buffer);
for(inti=;i<=_level.length()-;i++){
Rectsrc=newRect((_level.charAt(i)-'')*unitx,,(_level.charAt(i)-''+)*unitx,_nums.getHeight());
Rectdst=newRect(i*unitx,,(i+)*unitx,_nums.getHeight());
_canvas.drawBitmap(_nums,src,dst,null);
}
}
publicvoidsetLevel(intlevel,intResid){
_nums=BitmapFactory.decodeResource(getResources(),Resid);
String_level=String.valueOf(level);
_buffer=Bitmap.createBitmap(_level.length()*(_nums.getWidth()/),_nums.getHeight(),Config.ARGB_);
unitx=_nums.getWidth()/;
_canvas=newCanvas(_buffer);
for(inti=;i<=_level.length()-;i++){
Rectsrc=newRect((_level.charAt(i)-'')*unitx,,(_level.charAt(i)-''+)*unitx,_nums.getHeight());
Rectdst=newRect(i*unitx,,(i+)*unitx,_nums.getHeight());
_canvas.drawBitmap(_nums,src,dst,null);
}
}
publicvoidsetDegree(floatdegree){
_degree=degree;
}
publicvoidsetDegree(floatdegree,floatx,floaty){
_degree=degree;
_x=x;
_y=y;
}
publicfloatgetDegree(){
return_degree;
}
publicfloatgetRotateX(){
return_x;
}
publicfloatgetRotateY(){
return_y;
}
@Override
publicvoiddraw(Canvascanvas){
canvas.save();
canvas.setDrawFilter(newPaintFlagsDrawFilter(,Paint.ANTI_ALIAS_FLAG|Paint.FILTER_BITMAP_FLAG));
canvas.rotate(_degree,_x,_y);
canvas.drawBitmap(_bgRes,,,null);
canvas.drawBitmap(_fgRes,,,null);
canvas.drawBitmap(_buffer,(_bgRes.getWidth()-_buffer.getWidth())/f,,null);
canvas.restore();
}
}
以上代码是关于AndroidRotateImageView可旋转ImageView的全部内容,希望对大家有所帮助。