Android 自定义荧光粒子效果控件

FluorescenceView

自定义荧光粒子效果控件
传送门:https://github.com/YuToo/FluorescenceView


运行效果

使用方式

xml中引用
<xyz.yutoo.fluorescenceview.FluorescenceView
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@mipmap/bg_conversation"
    tools:context="xyz.yutoo.fluorescenceview.MainActivity">


    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Hello world"
        android:layout_gravity="center"
        android:textColor="@android:color/white"/>

</xyz.yutoo.fluorescenceview.FluorescenceView>

1. 本控件继承自FrameLayout,因此使用方式和FrameLayout一致

暂未提供对外方法,可在Fluorescence控件中修改相关配置,基本都是有注释的
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在 Android 中实现荧光笔绘画,可以使用 Paint 类的 setXfermode 方法和 setMaskFilter 方法。具体实现步骤如下: 1. 创建一个自定义 View,并在 onDraw 方法中实现绘图逻辑。 2. 创建两个 Paint 对象,一个用于绘制荧光效果,另一个用于绘制轨迹。 3. 为荧光笔 Paint 对象设置 Xfermode 为 SRC_OVER,表示将绘制的颜色与原来的颜色叠加。 4. 为轨迹 Paint 对象设置 MaskFilter 为 BlurMaskFilter,可以调整模糊半径大小来控制荧光效果的强度。 5. 在 onDraw 方法中使用 Canvas 对象的 drawPath 方法分别绘制荧光效果和轨迹。 以下是一个简单的实现示例: ```java public class MyView extends View { private Path mPath; private Paint mFluorescentPaint; private Paint mPathPaint; public MyView(Context context) { super(context); init(); } public MyView(Context context, AttributeSet attrs) { super(context, attrs); init(); } private void init() { mPath = new Path(); mFluorescentPaint = new Paint(); mFluorescentPaint.setStyle(Paint.Style.STROKE); mFluorescentPaint.setStrokeWidth(20); mFluorescentPaint.setColor(Color.GREEN); mFluorescentPaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_OVER)); mPathPaint = new Paint(); mPathPaint.setStyle(Paint.Style.STROKE); mPathPaint.setStrokeWidth(10); mPathPaint.setColor(Color.BLACK); mPathPaint.setMaskFilter(new BlurMaskFilter(50, BlurMaskFilter.Blur.NORMAL)); } @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); canvas.drawPath(mPath, mFluorescentPaint); canvas.drawPath(mPath, mPathPaint); } @Override public boolean onTouchEvent(MotionEvent event) { float x = event.getX(); float y = event.getY(); switch (event.getAction()) { case MotionEvent.ACTION_DOWN: mPath.moveTo(x, y); break; case MotionEvent.ACTION_MOVE: mPath.lineTo(x, y); break; case MotionEvent.ACTION_UP: break; } invalidate(); return true; } } ``` 在这个示例中,我们创建了一个自定义 View,使用了一个 Path 对象来保存手指滑动的轨迹,使用了两个 Paint 对象来分别绘制荧光效果和轨迹。为了实现荧光效果,我们为荧光笔 Paint 对象设置了 Xfermode 为 SRC_OVER,表示将绘制的颜色与原来的颜色叠加;为了实现荧光效果的强度,我们为轨迹 Paint 对象设置了 MaskFilter 为 BlurMaskFilter,调整模糊半径大小即可。在 onTouchEvent 方法中,我们根据手指的移动轨迹更新 Path 对象,并调用 invalidate 方法触发 onDraw 方法重新绘制视图。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值