有两个问题:
1. 希望一张图片能根据指定的点如图盘左上角的点旋转,但是使用Imageview的setRotate(degree, top ,left)不起作用,仍是按照中心点旋转的,是什么原因?2. 重写了Imageview,通过onDraw来重画旋转的图片:                 protected void onDraw(Canvas canvas) {                        canvas.rotate(degree, top, left);                        super.onDraw(canvas); }
复制代码这样能满足按左上角的点旋转的要求,但又出现另一个问题, 旋转到原Imageview矩形大小以外的区域就没有画出来。这是什么原因,怎么解决?

解决方案 »

  1.   

    可以限制degree的旋转角度.
    if(degree == 180) canvas.translate(-this.getHeight(), this.getWidth());
      

  2.   

    1.函数就是这样转的
    2.因为显示多少是根据你自己实现的view的宽高来决定的,如果view是100x100的,那么如果图片在0,0起始点显示,转动后肯定就跑到(<0,<0)的位置了,不在view显示的范围内。因此只能说把view在onMeausre计算宽高的时候,宽高指定为屏幕的尺寸,这样在屏幕范围内就都能显示了。
      

  3.   

    1.函数就是这样转的
    2.因为显示多少是根据你自己实现的view的宽高来决定的,如果view是100x100的,那么如果图片在0,0起始点显示,转动后肯定就跑到(<0,<0)的位置了,不在view显示的范围内。因此只能说把view在onMeausre计算宽高的时候,宽高指定为屏幕的尺寸,这样在屏幕范围内就都能显示了。