安卓自定义弹幕view,实现飞屏

本文介绍了如何在安卓应用中实现类似迅雷飞屏效果的自定义弹幕View。开发者通过创建一个继承自RelativeLayout的ViewGroup,并使用TextView作为飞过的“小蜜蜂”。详细讲解了实现思路,包括设置ViewGroup的宽高、自定义MyTextView以及维护显示与等待显示的视图列表。提供了关键代码供参考。
摘要由CSDN通过智能技术生成

前两天在电脑上使用迅雷的时候发现,现在的迅雷有一个类似弹幕的东西,热门搜索词会循环的在屏幕上飞过,就想能不能做一个安卓的飞屏view,然后在一番尝试后做出来了一个比较像样的demo.然后由于技术有限也没有做深入研究.现在贴上来.
飞屏

代码思路:
1.整个view是继承relativelayout的ViewGroup,然后飞过的每个”小蜜蜂”是一个textview.
2.ViewGroup需要根据设定的宽高值及飞屏的行数来确定自己的宽高
(当高度为fill_parent 或者 固定值时,如果设置的高度小于要显示的行数*行高,设置间隔高度等于行高,其实这是设置的固定值并不生效)
3.自定义MyTextView继承textView,并添加字段,point来标志自身的位置,speed表示每次更新位置时的增幅,相当于移动速度
4.在ViewGroup中维护两个list,一个表示等待显示的view的集合,一个表示正在显示的view的集合,当需要添加view到ViewGroup时,取waitList中第一个view加入ViewGroup中,然后不断更新正在显示的view的位置信息即可

表达的比较混乱,表达能力不好,但是程序员交流直接看代码就好.上面仅供参考.

FlyingStringLayout代码

package com.example.flyingstring;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Random;

import android.annotation.SuppressLint;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Point;
import android.graphics.Rect;
import android.graphics.AvoidXfermode.Mode;
import android.os.SystemClock;
import android.util.AttributeSet;
import android.view.View;
import android.widget.RelativeLayout;
import android.widget.TextView;

public class FlyingStringLayout extends RelativeLayout {
   

    private Context mContext;
    /**
     * 文字的行数(默认3)
     */
    private int mStrLineNum = 5;

    /**
     * 间隔的行数=文字行数 + 1
     */
    private int mSeparatorLineNum = mStrLineNum + 1;

    /**
     * 每行文字的高度
     */
    private int mStrLineHeight;

    /**
     * 间隔的高度
     */
    private int mSeparatorHeight;

    /**
     * 字体大小(sp)
     */
    private int mTextSize = 20;
    /**
     * 画笔
     */
    private Paint paint;

    private int[] colors = { Color.parseColor("#bb45C9C2"), Color.parseColor("#bb2727E7"), Color.parseColor("#bbEDF21C"), Color.parseColor("#bb8C1AF4"), Color.parseColor("#bb65A967"), Color.parseColor("#bb32DC98"),
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值