Android实现直播间飘屏效果(顶部抽奖飘屏右左到右滚动跑马灯效果)

这个功能由两个部分组成
第一部分为组合动画
第二部分为文字如果文字的长度大的话进行滚动
组合动画部分(这个动画xml文件为由左到右平移渐变之后持续2.5秒继续移动到屏幕外)
lucky_msg_in.xml

<!-- res/anim/slide_in_animation.xml -->
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <translate
        android:fromXDelta="100%"
        android:toXDelta="0"
        android:duration="500"/>
    <alpha
         android:duration="250"
         android:fromAlpha="0.0"
         android:toAlpha="1.0"/>

    <translate
        android:fromXDelta="0"
        android:toXDelta="-100%"
        android:duration="250"
        android:startOffset="2500">
    </translate>
</set>

代码

 Animation slideInAnimation = AnimationUtils.loadAnimation(MainActivity.this, 
ry.startAnimation(slideInAnimation);

实现文字滚动

  <TextView
            android:id="@+id/marqueeTextView"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginRight="70dp"
            android:layout_marginLeft="50dp"
            android:gravity="center"
            android:text=""
            android:singleLine="true"
            android:ellipsize="marquee"
            android:focusable="true"
            android:textSize="11dp"
            android:textColor="#ffffff"
            android:focusableInTouchMode="true"
            android:marqueeRepeatLimit="marquee_forever"
            android:scrollHorizontally="true"
            />
  marqueeTextView.setHorizontallyScrolling(true);
                        marqueeTextView.setSelected(true);

那么整体思路发完了 上整体代码
xml部分

  <LinearLayout
        android:id="@+id/ry"
        android:layout_width="match_parent"
        android:layout_height="36dp"
        android:background="@drawable/piaoping1"
        android:gravity="center_vertical"
        android:visibility="gone"
        android:orientation="horizontal">

        <TextView
            android:id="@+id/marqueeTextView"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginRight="70dp"
            android:layout_marginLeft="50dp"
            android:gravity="center"
            android:text=""
            android:singleLine="true"
            android:ellipsize="marquee"
            android:focusable="true"
            android:textSize="11dp"
            android:textColor="#ffffff"
            android:focusableInTouchMode="true"
            android:marqueeRepeatLimit="marquee_forever"
            android:scrollHorizontally="true"

            />
    </LinearLayout>

这个是我的飘屏素材
在这里插入图片描述
这个是组合动画

<!-- res/anim/slide_in_animation.xml -->
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <translate
        android:fromXDelta="100%"
        android:toXDelta="0"
        android:duration="500"/>
    <alpha
         android:duration="250"
         android:fromAlpha="0.0"
         android:toAlpha="1.0"/>

    <translate
        android:fromXDelta="0"
        android:toXDelta="-100%"
        android:duration="250"
        android:startOffset="2500">
    </translate>
</set>
public class MainActivity extends AppCompatActivity {
    private TextView marqueeTextView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        marqueeTextView = findViewById(R.id.marqueeTextView);
        findViewById(R.id.bt1).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                marqueeTextView.setText(""); // 清空文本
                marqueeTextView.setText("哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈");

                // 在主线程中延迟启动滚动
                marqueeTextView.postDelayed(new Runnable() {
                    @Override
                    public void run() {
                        marqueeTextView.setHorizontallyScrolling(true);
                        marqueeTextView.setSelected(true);
                    }
                }, 1000);
                LinearLayout ry = findViewById(R.id.ry);
                ry .setVisibility(View.VISIBLE);
                // 加载动画资源
                Animation slideInAnimation = AnimationUtils.loadAnimation(MainActivity.this, R.anim.lucky_msg_in);
                slideInAnimation.setAnimationListener(new Animation.AnimationListener() {
                    @Override
                    public void onAnimationStart(Animation animation) {
                        // 动画开始时的处理
                    }

                    @Override
                    public void onAnimationEnd(Animation animation) {
                        // 动画结束时的处理
                        marqueeTextView.setText("");
                        marqueeTextView.setHorizontallyScrolling(false); // 停止滚动
                        marqueeTextView.setSelected(false);
                        ry.setVisibility(View.GONE); // 隐藏视图
                    }

                    @Override
                    public void onAnimationRepeat(Animation animation) {
                        // 动画重复时的处理
                    }
                });
                // 启动动画
                ry.startAnimation(slideInAnimation);

            }
        });
    }

最后效果
请添加图片描述
但是跟原版不一样那么我就加颜色吧

 // 原始文本
                String originalText = "笑笑 在 西游记 获取了 1个唐僧、1个孙悟空、1个猪八戒、1个白龙马";

                // 寻找关键字的位置
                int startIndex = originalText.indexOf("在");
                int endIndex = originalText.indexOf("获取了") + 3;

                // 打印关键字位置,用于调试
                Log.d("MainActivity", "startIndex: " + startIndex + ", endIndex: " + endIndex);

                // 创建 SpannableString 对象
                SpannableString spannableString = new SpannableString(originalText);

                // 设置不同颜色的 ForegroundColorSpan
                spannableString.setSpan(new ForegroundColorSpan(Color.rgb(255, 233, 255)), 0, startIndex, 0);
                spannableString.setSpan(new ForegroundColorSpan(Color.rgb(240, 202, 255)), startIndex, startIndex + 1, 0);
                spannableString.setSpan(new ForegroundColorSpan(Color.rgb(255, 233, 240)), startIndex + 1, endIndex - 4, 0);
                spannableString.setSpan(new ForegroundColorSpan(Color.rgb(240, 202, 255)), endIndex - 4, endIndex, 0);
                spannableString.setSpan(new ForegroundColorSpan(Color.rgb(246, 201, 121)), endIndex, originalText.length(), 0);

                // 将 SpannableString 应用到 TextView
                marqueeTextView.setText(spannableString);

效果
请添加图片描述
⚠️不要作为不正规或者损害用户利益的功能开发有些饭不能恰⚠️

飘屏专家无人直播礼物屏幕飘文字直播间需要搭建直播OBS软件工具软件。OBS是一款功能强大的开源直播软件,它允许用户通过各种媒体源进行实时直播,并能够对直播内容进行调整和编辑。搭建直播间需要几个步骤: 首先,您需要下载并安装OBS软件。在官方网站上,您可以找到适用于不同操作系统的OBS版本,并进行下载和安装。 安装完成后,打开OBS软件。进入设置界面,您可以进行基本的配置,如选择默认的直播输出分辨率、帧率等。根据您直播的需求,您可以根据屏幕分辨率和网络带宽数值进行适当调整。 接下来,您需要添加屏幕捕获源。选择“来源”选项卡,点击“添加”按钮,然后选择“屏幕捕获”选项。在弹出的窗口中,您可以选择要捕获的屏幕,还可以调整捕获区域的大小和位置。确保您选择的是要直播的屏幕。 在直播过程中,您可能需要添加文字和礼物特效。在“来源”选项卡中,点击“添加”按钮,选择“文字”或“媒体源”选项。然后,您可以添加自定义的文字,调整文字样式、大小和位置等。如果您需要添加礼物效果,您可以使用媒体源来添加预先设计好的礼物素材。 最后,您需要设置直播平台的流媒体信息。选择“设置”菜单中的“流媒体”选项,然后根据您使用的直播平台提供的信息,填写流媒体服务器地址和流媒体密钥等信息。 完成以上步骤,您的飘屏专家无人直播礼物屏幕飘文字直播间就搭建完成了。您可以调整直播布局和效果,并根据需要进行录制、剪辑和流媒体推送等操作。OBS提供了许多工具和选项,可根据您的需求进行个性化设置和优化。记得在直播前,测试直播效果,确保一切正常,然后就可以享受直播的乐趣了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

王鑫林呀!

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值