如题,怎么移动用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);
}
解决方案 »
- android开发的几个问题
- 怎样让一个activity运行结束以后再运行另一个activity
- android访问pc端共享文件夹
- Android OS能不能在XP装有虚拟机的环境下编译通过?XP下虚拟机一般用那个?虚拟机上装的LINUX OS一般用那个版本?
- 帮忙看下这段数据库代码
- 求教,模拟http协议向表单提交用户名密码,404or400错误
- Android NDK编译的问题
- 高德地图开发中如何加载离线地图
- 游戏多渠道打包工具原理
- Android MediaCodec YV12转YUV420 编码后花屏、四重影
- 实现多个APK登入一个问题
- 怎么自动适应800*480和960*540二种分辨率?
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();
}