androidcanvas变形,移动,旋转-创新互联

public class testView extends View {

    private Bitmap mBitmap = null;
    private Bitmap nBitmap = null;
    private float scaleX = 1.0f;
    private float scaleY = 1.0f;
    private float step = 0.0001f;
    
    public testView(Context context, AttributeSet attrs) {
        super(context, attrs);
        mBitmap = BitmapFactory.decodeResource(context.getResources(), R.drawable.ic_pet_spirit);
        nBitmap = BitmapFactory.decodeResource(context.getResources(), R.drawable.ic_pet_spirit_lighting);
    }
    
    @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);
        scaleCanvas(canvas);
        invalidate();
    }

    private void scaleCanvas(Canvas canvas) {
        scaleX += step;
        scaleY += step;
        Matrix matrix = new Matrix();
        Paint paint = new Paint();
        canvas.scale(scaleX, scaleY);
        canvas.drawBitmap(mBitmap, matrix, paint);
        canvas.drawBitmap(nBitmap, matrix, paint);
    }

}

先上代码,代码入门级!主要分享(1)canvas动画原理(2)应用场景(3)硬件加速兼容的bug

为金秀等地区用户提供了全套网页设计制作服务,及金秀网站建设行业解决方案。主营业务为做网站、网站设计、金秀网站设计,以传统方式定制建设网站,并提供域名空间备案等一条龙服务,秉承以专业、用心的态度为用户提供真诚的服务。我们深信只要达到每一位用户的要求,就会得到认可,从而选择与我们长期合作。这样,我们也可以走得更远!
  • canvas动画原理:

画布初始大小一定,要通过scale,rotate,translate变化画布大小,角度,位移。在变化后的canvas上绘制想要的内容,内容也就跟着相应的变化。刚开始还以为是要先在canvas上绘制一边,在对canvas变形,这种误区刚开始会困惑很多人。其实canvas的draw方法是将绘制的内容画在变形后的画布上。原理是这样的:每次调用ondraw后都将获得一个新的canvas,这个canvas是一个满屏的区域,如果在刚获得这个canvas后就进行绘制,绘制的内容是立刻就显示出来了,但之后再进行变形后,canvas并不会自行进行绘制,如果在变形后在进行一次绘制,这时图像就重复了。

  • 应用场景:

为什么要用canvas进行变形呢,如果我们用一串图片实现相应的动画,这时就会有大量的内存为题需要考虑。而canvas的变形方式使用的都是native方法,所以自然快,方便。而调用ondraw进行动画效果绘制现在应用在各种view插件上面的是比较多的。各种点击动画效果。

  • 硬件加速兼容的bug:

clipPath()
clipRegion()
drawPicture()
drawTextOnPath()
drawVertices()

这几个方法在调用前一定要确定你已经在调用的activity中关闭了硬件加速,修改manifest

android:hardwareAccelerated="false"。否则你将会发现截取屏幕中的rgb时是有颜色的,可是屏幕一片惨白(幽灵绘制)

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


当前名称:androidcanvas变形,移动,旋转-创新互联
文章源于:http://azwzsj.com/article/pgcdp.html