Android   发布时间:2022-04-28  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了android图像动画怎么做 大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

我正在尝试进行简单的图像动画处理.我想使它看起来好像直升机的螺旋桨叶片正在转动.我有3幅直升机图像,并且根据动画进度显示这些图像之一.问题是所有三个图像最终都彼此重叠,而不是一次显示一个图像,从而创建了动画.这是我到目前为止所做的,我什至尝试通过执行canvas.drawColor(Color.bLACK)来清除画布,但这会清除整个画布,这不是我想要的.

这就是我所拥有的:

1)在View类中:

静态类直升机{
        专用长mLastupdate;
        private long mProgress = 0;
        私人最终流通量mX;
        私人最终流通量

    private final Bitmap mHelicopter1;
    private final Bitmap mHelicopter2;
    private final Bitmap mHelicopter3;
    private final float mRadius;

    Helicopter(long mLastupdate,float mX,float mY,Bitmap Helicopter1,Bitmap Helicopter2,Bitmap Helicopter3) {
        this.mLastupdate = mLastupdate;
        this.mX = mX;
        this.mY = mY;
        this.mHelicopter1 = Helicopter1;
        this.mHelicopter2 = Helicopter2;
        this.mHelicopter3 = Helicopter3;
        mRadius = ((float) mHelicopter1.getWidth()) / 2f;

    }

    public void update(long Now) {
        mProgress += (Now - mLastupdatE);

        if(mProgress >= 400L)
        {
         mProgress = 0;
        }
        mLastupdate = Now;
    }

    public void setNow(long Now) {
        mLastupdate = Now;
    }

    public void draw(Canvas canvas,Paint paint) 
    {       

        if (mProgress < 150L) 
        {
            canvas.drawBitmap(mHelicopter1,mX - mRadius,mY - mRadius,paint);
        } 
        else if (mProgress < 300L) 
        {
            canvas.drawBitmap(mHelicopter2,paint);

        } 
        else if(mProgress < 400L)
        {
         canvas.drawBitmap(mHelicopter3,paint);
        }

    }

    public Boolean done() {
        return mProgress > 700L;
    }
}

private ArrayList<Helicopter> mHelicopters = new ArrayList<Helicopter>();

2)这在线程的run()中被调用

private void doDraw(Canvas canvas) 
    {
     final long Now = SystemClock.elapsedRealtime();

        canvas.save();

        for (int i = 0; i < mHelicopters.size(); i++) {
            final Helicopter explosion = mHelicopters.get(i);
            explosion.update(Now);
        }

        for (int i = 0; i < mHelicopters.size(); i++) {
            final Helicopter explosion = mHelicopters.get(i);
            explosion.draw(canvas,mPaint);
        }

        canvas.restore();
    }

有人能帮我吗?我看了很多有关动画的网络示例,它们似乎总是涉及文本,而不涉及图像.谢谢.

最佳答案
通常,绘制画布的线程会重绘整个画布以及所有道具/演员.这样,如果您增加直升机叶片图像索引,它将在其余画布重新绘制后被绘制到位.诸如此类的东西:BACkground-> Helicopter-> Blade1下一次迭代BACkground-> Helicopter-> Blade2.

大佬总结

以上是大佬教程为你收集整理的android图像动画怎么做 全部内容,希望文章能够帮你解决android图像动画怎么做 所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。