如题,怎么移动用path创建的ShapeDrawable 对象比较高效呢? 
下面的代码貌似是通过更新path来移动的,这样每次画图都要重新创建ShapeDrawable 对象,非常浪费资源,有什么办法不?
 private void drawBitmapShape(Canvas canvas, Paint paint)
    {
      /*画一个空心三角形*/
        Path path=new Path();
        path.moveTo(10, 330);
        path.lineTo(70,330);
        path.lineTo(40,270);
        path.close();
        //canvas.drawPath(path, paint);     /* 构建ShapeDrawable对象并定义形状为椭圆 */
mShape = new ShapeDrawable(new PathShape(path, BitQQheight, BitQQheight)); /* 设置要绘制的椭圆形的东西为ShapeDrawable图片 */
mShape.getPaint().setShader(mBitmapShader);
/* 设置显示区域 */
//BitQQheight=BitQQheight*2;
mShape.setBounds(0,0, BitQQwidth, BitQQheight);

/* 绘制ShapeDrawableQQ */
mShape.draw(canvas);
    }

解决方案 »

  1.   

    吼吼,解决了:
    private void drawBitmapShape(Canvas canvas, Paint paint)
        {
         canvas.save();
         canvas.translate(5, 5);
    // rotate
    //canvas.rotate(90, 60, 310);
          /*画一个空心三角形*/
            Path path=new Path();
            path.moveTo(10, 330);
            path.lineTo(70,330);
            path.lineTo(40,270);
            path.close();
            //canvas.drawPath(path, paint);     /* 构建ShapeDrawable对象并定义形状为椭圆 */
    mShape = new ShapeDrawable(new PathShape(path, BitQQheight, BitQQheight)); /* 设置要绘制的椭圆形的东西为ShapeDrawable图片 */
    mShape.getPaint().setShader(mBitmapShader);
    /* 设置显示区域 */
    //BitQQheight=BitQQheight*2;
    mShape.setBounds(0,0, BitQQwidth, BitQQheight);

    /* 绘制ShapeDrawableQQ */
    mShape.draw(canvas);
    canvas.restore();
        }