首页 > 编程语言 >视频直播网站源码,自定义气泡效果(BubbleView)

视频直播网站源码,自定义气泡效果(BubbleView)

时间:2023-06-08 14:22:52浏览次数:38  
标签:自定义 int private BubbleView 源码 import android 气泡

视频直播网站源码,自定义气泡效果(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();
    }

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

 


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

 

以上就是 视频直播网站源码,自定义气泡效果(BubbleView),更多内容欢迎关注之后的文章

 

标签:自定义,int,private,BubbleView,源码,import,android,气泡
From: https://www.cnblogs.com/yunbaomengnan/p/17466343.html

相关文章

  • 中国象棋程序的设计与实现(二)--源码
    本篇将正式公布中国象棋程序–高级版–楚汉棋兵的所有源码。介绍一些相关信息,如源码下载地址、QQ交流群、源码结构、版权声明。其它更多文档,如毕业设计论文、项目架构图图、心得体会、开发记录,将在本月全部公布。有兴趣的同学,可以趁着中秋节3天、国庆7天等假期,进行研究。我也将......
  • 使用ImportBeanDefinitionRegistrar处理自定义注解将类注册到容器中
    START两个自定义注解:@Documented@Target({ElementType.TYPE})@Retention(RetentionPolicy.RUNTIME)@Import(LogRegistry.class)public@interfaceEnableLog{StringbasePackage()default"";}该注解的作用是扫描指定的basePackage目录中使用了@Log注解的类,并将这......
  • 直播源码app开发技术特效功能的实现
    网络时代的发展使得直播源码app平台日渐火爆,抖音就是这些火爆的直播源码app平台的其中之一。大家在使用抖音看直播时有没有看见过这样的情况,在某一个直播间里,正在直播的人的脸在屏幕中会变长变宽,甚至是变得扭曲,或者是那个人会带上西瓜贴纸等其他水果贴纸,又或是在屏幕上看见动漫人物......
  • Swagger 自定义输出文档
    Swagger作为Java开发中常用的接口文档生成组件,绝大部分情况下都可以满足我们的业务需求。但有些时候依然有些不足,比如针对系统中某些特殊接口需要作出一些增强。我自己在使用Swagger时候遇到需要将base_path消除并直接拼接到接口路径上的情形。一共寻找到两种方式......
  • AI编译器CINN v.s TVM 中CodeGen 源码解读
    如下的技术点梳理仅以「日常优化工作」为牵引点,涉及哪个模块,就具体去看哪个模块的代码。一、CINN框架CINN中CodeGen之后的代码编译主要交给了Compiler类来负责。核心的函数主要是:Build(ir::Module&,string&code)Lookup(string&fn_name)classCompilerfinal{publ......
  • 想要提高办公效率,可以采用表单自定义工具
    当前,随着社会的进步和科技的发展,表单自定义工具逐渐在现代化办公场所中得到重用和喜爱。因为它的灵活、简便、易操作等优势特性,使得其突破了传统表单制作工具的局限,成为广大中大型企业实现流程化管理和数字化进程的得力助手。如果您也想打破传统表单限制,实现提质增效的办公目的,不......
  • JAVA的springboot+vue企业客户信息反馈平台,附源码+数据库+文档+PPT
    1、项目介绍企业客户信息反馈平台能够通过互联网得到广泛的、全面的宣传,让尽可能多的用户了解和熟知企业客户信息反馈平台的便捷高效,不仅为客户提供了服务,而且也推广了自己,让更多的客户了解自己。对于企业客户信息反馈而言,若拥有自己的平台,通过平台得到更好的管理,同时提升了形象......
  • Shiro自定义异常无法被捕获总是抛出AuthenticationException解决方案
    问题描述配置Realm之后,发现在Realm中抛出的异常被无法捕获,最后抛出AuthenticationException异场景再现 下面是errorlog2023-06-0711:49:26.131[TID:N/A][][http-nio-9]ERRORo.s.c.sleuth.instrument.web.ExceptionLoggingFilter:54-Uncaughtexceptionthrow......
  • 使用 Dockerfile 自定义 Docker 镜像
    对于一些常用的Docker镜像,我们可以从Docker官方仓库或者国内的阿里云仓库中获取,比如mysql、redis、nginx等等。但是对于一些我们自己开发的程序,要想很方便的在Docker中部署,还是需要自己制作镜像。这里不介绍Docker常用命令的使用,网上学习资料很多,这里就直接进行演示。......
  • 自定义缓存注解
    自定义Springboot缓存注解在使用redis缓存时,我们可能使用Jedis,RedisTemplate或者使用@Cacheable注解。尽管这些方法都能够实现缓存的功能,但是有时在真实的业务当中这些方法可能还不够简洁和灵活,于是我们可以自定义缓存注解来解决问题。SpringBoot中注解的格式......