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:原始图片的高度

解决方案 »

  1.   


            Bitmap tmpBitmap = Bitmap.createBitmap( this.bitmap, 0, 0, bitmap.getWidth(), bitmap.getHeight(), matrix, true );
    旋转图片的时候 用图片本身的宽高设置旋转!!
      

  2.   


    this.w和this.h就是原始图片的宽跟高
      

  3.   

    this.w, this.h如何取值的,
    用bitmap.getWidth()
      

  4.   

    除了垂直/水平的旋转(90,180...),用Matrix转完后返回的图片总是会变大,中心点不变对于矩形的图片:tmpBitmap.getWidth()==
    bitmap.getWidth()*Math.cos(degree)+bitmap.getHeight()*Math.sin(degree);
      

  5.   

    不会有圆形的图片的... 因为背景透明所以看着是圆的,其实是正方形的图,这样 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 );
      

  6.   

    我也遇见过这个问题,你这样的逻辑是不对的,不能旋转Bitmap,你要试试旋转canvas,这样还不会浪费内存,也不用截取图片
      

  7.   

    最近也在研究这个问题,我用的是canvas旋转,但图片不是以中心柱旋转的
      

  8.   

    楼主可以这样做
    你得到了新的rebitmap
    这时候你宽度 高度都变了当你canvas.drawBitmap();时 用你新得到的图片的宽高  rebitmap。getwidth()/2