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

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

 

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

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

 

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

 

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

 

posted @   云豹科技-苏凌霄  阅读(20)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
历史上的今天:
2022-11-28 直播app源码,HTML + jQuery 实现轮播图
2022-11-28 直播平台制作,使用 NProgress 进度条
2022-11-28 搭建直播平台,给首页配备搜索框
点击右上角即可分享
微信分享提示