如题,怎么移动用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);
}
下面的代码貌似是通过更新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);
}
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();
}