最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
SurfaceView实现红包雨平移动画
时间:2022-06-25 22:54:54 编辑:袖梨 来源:一聚教程网
使用SurfaceView实现简单的红包雨动画,供大家参考,具体内容如下
具体代码:
public class TranslateSurfaceView extends SurfaceView implements DrawInterface {
private DrawHandler drawHandler;
private int width;
private int height;
private Bitmap bitmap;
private int bitmapWidth;
private int bitmapHeight;
private Toast toast;
private int count = 0;
private ArrayList moveList = new ArrayList();
public TranslateSurfaceView(Context context) {
this(context, null);
}
public TranslateSurfaceView(Context context, AttributeSet attrs) {
this(context, attrs, -1);
}
public TranslateSurfaceView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
init();
}
private void init() {
SurfaceHolder holder = getHolder();
setZOrderOnTop(true);
holder.setFormat(PixelFormat.TRANSLUCENT);
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
width = getMeasuredWidth();
height = getMeasuredHeight();
}
public void prepare() {
DrawThread drawThread = new DrawThread();
drawThread.start();
drawHandler = new DrawHandler(drawThread.getLooper(), this);
bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.icon_redenvelope2);
bitmapWidth = bitmap.getWidth();
bitmapHeight = bitmap.getHeight();
}
public void addMoveModel(MoveModel moveModel) {
moveList.add(moveModel);
}
public void start() {
count = 0;
moveList.clear();
for (int i = 0; i width || moveModel.y > height) {
resetMoveModel(moveModel);
} else {
moveModel.y += moveModel.randomY;
}
}
holder.unlockCanvasAndPost(canvas);
drawHandler.sendEmptyMessage(DrawHandler.START_DRAW_KEY);
}
@Override
public void stopDraw() {
drawHandler.removeMessages(DrawHandler.START_DRAW_KEY);
}
@Override
public boolean onTouchEvent(MotionEvent event) {
int action = event.getActionMasked();
switch (action) {
case MotionEvent.ACTION_DOWN:
checkInRect((int) event.getX(), (int) event.getY());
break;
}
return true;
}
/**
* 是否点击在红包区域
* @param x
* @param y
*/
private void checkInRect(int x, int y) {
int length = moveList.size();
for (int i = 0; i
相关文章
- 《Pokemon TCG》Mega Evolution - Chaos Rising 系列 Crobat 全图卡牌情报公开 04-25
- TGA年度最佳《光与影 33号远征队》销量爆炸 官宣突破八百万 04-25
- 刺客信条 黑旗记忆重置版现价格异常,豪华版短时直降10美元引热议 04-25
- 全本小说账号怎么注销 04-25
- 异环新手实用开荒建议指南 04-25
- 怎么解锁《Kiln》中的所有成就 04-25
