用drawBitmap写了个会动的小僵尸
首先是图片资源
自定义View中代码如下
public class ZoombieView extends View { private int width,height; private int intervalW,intervalH; private Paint bitmapPaint; private Bitmap bitmap; private Rect src; private Rect dst; private int currentW=0; private int currentH=0; private Handler handler=new Handler(){ @Override public void handleMessage(Message msg) { super.handleMessage(msg); if (currentW<10&¤tH==0){ currentW++; invalidate(); sendEmptyMessageDelayed(0,300); }else if (currentW==10&¤tH==0){ currentH++; currentW=0; invalidate(); sendEmptyMessageDelayed(0,300); }else if (currentW<10&¤tH==1){ currentW++; invalidate(); sendEmptyMessageDelayed(0,300); } } }; @Override protected void onSizeChanged(int w, int h, int oldw, int oldh) { super.onSizeChanged(w, h, oldw, oldh); width=w; height=h; } public ZoombieView(Context context) { this(context,null); } public ZoombieView(Context context, AttributeSet attrs) { super(context, attrs); initView(); } private void initView() { bitmapPaint=new Paint(); bitmapPaint.setAntiAlias(true); bitmapPaint.setDither(true); bitmapPaint.setFilterBitmap(true); bitmap= BitmapFactory.decodeResource(getResources(), R.mipmap.zombie); intervalW=bitmap.getWidth()/11; intervalH=bitmap.getHeight()/2; } @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); canvas.translate(width/2,height/2); src=new Rect(intervalW*currentW,intervalH*currentH,intervalW*(currentW+1),intervalH*(currentH+1)); dst=new Rect(-intervalW/2,-intervalH/2,intervalW/2,intervalH/2); canvas.drawBitmap(bitmap,src,dst,bitmapPaint); if (currentW==0&¤tH==0){ handler.sendEmptyMessageDelayed(0,300); } } }
在布局中引用