在Android系统中图形类为我们提供了很多图形对象类,很多网友知道Drawable,了解Bitmap之类的,那么今天的Picture和PictureDrawable又是什么东西呢? Android123再次给大家说下,Picture在android.graphics.Picture包中,相对于Drawable和Bitmap而言,Picture对象就小巧的多,它并不存储实际的像素,仅仅记录了每个绘制的过程。整个类提供了两个重载形式,其中比较特别的是Picture(Picture src) 从一个Picture对象去实例化操作,
Canvas beginRecording(int width, int height) //开始记录绘制过程
static Picture createFromStream(InputStream stream) //静态方法,从输入流创建一个Pictrue对象
void draw(Canvas canvas) //在canvas上画这个picture对象
void endRecording() //结束录制绘制过程
int getHeight()
int getWidth()
void writeToStream(OutputStream stream) //将绘制结果写到输出流中
我们可以看到整个类中方法不多,但主要的beginRecording和endRecording记录开始和结束,最终通过draw方法绘制到画布上去,而createFromStream和writeToStream可以帮助我们从流中读写这个Picture对象,我们可以将整个绘制过程通过FileInputStream或FileOutputStream放到文件中去。
PictureDrawable是什么呢? 这里Android123提示大家它位于android.graphics.drawable.PictureDrawable 是从Drawable类继承而来的,它的构造方法只有一个就是从Picture对象中实例化,PictureDrawable(Picture picture)
void draw(Canvas canvas) // 绘制到Canvas
int getIntrinsicHeight()
int getIntrinsicWidth()
int getOpacity() //获取透明度级别
Picture getPicture() //从PictureDrawable转为Picture
void setAlpha(int alpha) //设置透明级别
void setColorFilter(ColorFilter colorFilter)
void setDither(boolean dither)
void setFilterBitmap(boolean filter)
void setPicture(Picture picture)
下面我们就一个简单的例子,来看看它们的具体工作原理:
Picture p=new Picture();
Canvas c=p.beginRecording(320,480);
//// c.drawBitmap() ,drawLine等方法处理
p.endRecording();
PictureDrawable pd=new PictureDrawable(p);
pd.draw(canvaeObj) ;
RSS