Android图形动画学习之图形与动画综合小实例
图形与动画综合小实例
☆☆☆使用图像序列来实现逐帧动画
1.将序列图像加载为bitmap对象。
2.从序列图像中截取动画帧(序列)。
3.使用drawBitmap绘制截取的序列。
4.如此反复绘制不同的序列,实现动画效果。
☆☆☆使用Android Studio实现图形与动画综合实例。
1.打开Android Studio,新建工程后,在res文件夹中drawable文件夹,放入图片。
2.新建类MyPaint继承自View。
package lession.example.com.androidlession4_10_2;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Rect;
import android.os.Handler;
import android.os.Message;
import android.view.View;
public class MyPaint extends View{
Bitmap mAnBmp;
Rect bmpRect,drawRect;
int bmpSx,bmpSy,dx,dy;
int drawSx,drawSy;
int aniPage,maxPage;
Handler mHandler;
public MyPaint(Context context) {
super(context);
mAnBmp = BitmapFactory.decodeResource(context.getResources(),R.drawable.pp);
bmpRect = new Rect();drawRect = new Rect();
drawSx = 300;drawSy = 500;
dx = mAnBmp.getWidth()/15;dy = mAnBmp.getHeight();
aniPage = 0; maxPage = 14;
mHandler = new Handler(){
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
aniPage++;
if (aniPage>maxPage)
aniPage = 0;
invalidate();
this.sendEmptyMessageDelayed(0,100);
}
};
mHandler.sendEmptyMessageDelayed(0,200);
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
bmpSx = aniPage*dx;bmpSy = 0;
bmpRect.set(bmpSx,bmpSy,bmpSx+dx,bmpSy+dy);
drawRect.set(drawSx,drawSy,drawSx+dx*2,drawSy+dy*2);
canvas.drawBitmap(mAnBmp,bmpRect,drawRect,null);
}
}
3.在MainActivity.java中,编写相关代码。
package lession.example.com.androidlession4_10_2;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//setContentView(R.layout.activity_main);
MyPaint mp = new MyPaint(this);
setContentView(mp);
}
}
运行结果:
这就是一个图形与动画综合的小实例,如果转载以及CV操作,请务必注明出处,谢谢!