最新下载
热门教程
- 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 ArrayListmoveList = 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
相关文章
- 三角洲行动10月14日摩斯密码是什么 各地点对应密码汇总 10-14
- 出战追击兑换码是什么 出战追击2025最新兑换码大全 10-14
- 向僵尸开炮兑换码有哪些 2025最新可用兑换码大全 10-14
- 为了吾王兑换码是什么 为了吾王2025最新兑换码大全 10-14
- 原神兑换码有哪些 2025最新可用兑换码大全 10-14
- 重建生存营地兑换码是什么 重建生存营地2025最新兑换码大全 10-14