直播平台搭建,自定义气泡效果(BubbleView)

发布时间 2023-11-28 14:09:31作者: 云豹科技-苏凌霄

直播平台搭建,自定义气泡效果(BubbleView)

 

package com.example.myapplication;
import android.content.Context;
import android.graphics.BlurMaskFilter;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.RectF;
import android.util.AttributeSet;
import android.util.Log;
import android.util.TypedValue;
import android.view.View;
import androidx.annotation.Nullable;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
public class BubbleView extends View {
    private int mBubbleMaxRadius = 15;          // 气泡最大半径 px
    private int mBubbleMinRadius = 8;           // 气泡最小半径 px
    private int mBubbleMaxSize = 50;            // 气泡数量
    private int mBubbleRefreshTime = 50;        // 刷新间隔
    private int mBubbleMaxSpeedY = 2;           // 气泡速度
    private int mBubbleMaxSpeedX = 4;           // 气泡速度
    private int mBubbleAlpha = 128;             // 气泡画笔
    private float mContentWidth;                 // 瓶子宽度
    private float mContentHeight;                // 瓶子高度
    private RectF mContentRectF;                // 实际可用内容区域
    private Paint mBubblePaint;                 // 气泡画笔
    public BubbleView(Context context) {
        this(context, null);
    }
    public BubbleView(Context context, @Nullable AttributeSet attrs) {
        this(context, attrs, 0);
    }
    public BubbleView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
        mContentWidth = dp2px(130);
        mContentHeight = dp2px(260);
        mBubblePaint = new Paint();
        mBubblePaint.setColor(Color.GREEN);
        mBubblePaint.setAlpha(mBubbleAlpha);
    }
    @Override
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
        super.onMeasure(widthMeasureSpec, heightMeasureSpec);
        int widthSpecMode = MeasureSpec.getMode(widthMeasureSpec);
        int widthSize = MeasureSpec.getSize(widthMeasureSpec);
        int heightSize = MeasureSpec.getSize(heightMeasureSpec);
        int heightSpecMode = MeasureSpec.getMode(heightMeasureSpec);
        int width;
        int height;
        if (widthSpecMode == MeasureSpec.EXACTLY || widthSpecMode == MeasureSpec.AT_MOST) {
            width = widthSize;
            mContentWidth = width;
        } else {
            width = (int) mContentWidth;
        }
        if (heightSpecMode == MeasureSpec.EXACTLY || heightSpecMode == MeasureSpec.AT_MOST) {
            height = heightSize;
            mContentHeight = height;
        } else {
            height = (int) mContentHeight;
        }
        setMeasuredDimension(width, height);
    }
    @Override
    protected void onSizeChanged(int w, int h, int oldw, int oldh) {
        super.onSizeChanged(w, h, oldw, oldh);
        mContentRectF = new RectF(getPaddingLeft(), getPaddingTop(), w - getPaddingRight(), h - getPaddingBottom());
    }
    @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);
        drawBubble(canvas);
    }
    @Override
    protected void onAttachedToWindow() {
        super.onAttachedToWindow();
        startBubbleSync();
    }
    @Override
    protected void onDetachedFromWindow() {
        super.onDetachedFromWindow();
        stopBubbleSync();
    }
 

目前为自定义属性,布局文件中直接引用即可。

 


  <com.example.myapplication.BubbleView
        android:layout_width="300dp"
        android:layout_height="100dp"/>

 

以上就是 直播平台搭建,自定义气泡效果(BubbleView),更多内容欢迎关注之后的文章