this.degree += degree;
Matrix matrix = new Matrix();
matrix.setRotate( this.degree );
Bitmap tmpBitmap = Bitmap.createBitmap( this.bitmap, 0, 0, this.w, this.h, matrix, true );
BitmapDrawable bitmapDrawable = new BitmapDrawable( tmpBitmap );
this.imageView.setImageDrawable( bitmapDrawable );
使用上面的代码对图片进行旋转时,图片的大小会变,怎样才能让图片只旋转而大小不变?
this.imageView:图片对应的ImageView对象
degree:本次旋转的角度
this.w:原始图片的宽度
this.h:原始图片的高度
------解决方案--------------------
- Java code
Bitmap tmpBitmap = Bitmap.createBitmap( this.bitmap, 0, 0, bitmap.getWidth(), bitmap.getHeight(), matrix, true );
------解决方案--------------------
------解决方案--------------------
this.w, this.h如何取值的,
用bitmap.getWidth()
------解决方案--------------------
除了垂直/水平的旋转(90,180...),用Matrix转完后返回的图片总是会变大,中心点不变
对于矩形的图片:tmpBitmap.getWidth()==
bitmap.getWidth()*Math.cos(degree)+bitmap.getHeight()*Math.sin(degree);
------解决方案--------------------
不会有圆形的图片的... 因为背景透明所以看着是圆的,其实是正方形的图,这样 h==w
Bitmap tmpBitmap = Bitmap.createBitmap( this.bitmap, 0, 0, this.w, this.h, matrix, true );
//把图片截出来就行了
int x= ?//这个自己手算下吧
int y= ?//这个自己手算下吧
int width=bitmap.getWidth();
int height=bitmap.getHeight();
Bitmap tmpSliceBitmap = Bitmap.createBitmap(tmpBitmap, x, y, width, height)
BitmapDrawable bitmapDrawable = new BitmapDrawable( tmpSliceBitmap );
this.imageView.setImageDrawable( bitmapDrawable );