Android常用的开源项目库二,实例解析如何在Android应用中实现弹幕动画效果

在B站或者其他视频网站看视频时,常常会打开弹幕效果,边看节目边看大家的吐槽。弹幕看起来很有意思,今天我们就来实现一个简单的弹幕效果。

空白页
MultiStateView★760

冠亚体育手机网站 1

  • 基于状态显示不同内容的Android视图
    progress-activity★743
  • 进度条空视图及错误视图库
    StatusView★546
  • Android自定义状态视图
    StatefulLayout★530
  • 显示最常见的状态模板
    ErrorView★519
  • 显示错误信息的自定义视图
    LoadingLayoutDemo★483
  • 加载中/无网络/无数据/出错四种情况效果封装
    MultipleStatusView★439
  • 支持多种状态的自定义View
    TEmptyView★424
  • 更简单地设置EmptyView
    stateLayout★351
  • 快速switch布局
    loadinglayout★296
  • 简单实用的页面多状态布局
    FlowLayout★217
  • 非常常见的安卓视图流
    MultiStateView★178
  • 用于切换不同View的各种状态
    LoadDataLayout★163
  • 加载数据Layout
    ProgressLayout★98
  • 展示加载布局空白布局和error布局
    PageStateManager★78
  • 页面状态管理
    HHEmptyView★35
  • 网络加载提示进度封装View
    DataLoadingLayoutAndroid★15
  • 展示当前数据加载状态的库
    滑动删除
    AndroidSwipeLayout★7804
  • 安卓滑动出现子菜单
    SwipeRecyclerView★1579
  • RecyclerView侧滑菜单
    Swipeable-Cards★1368
  • 提供类似Tinder卡片效果
    RecyclerViewUndoSwipe★1263
  • 本地ItemTouch助手
    SwipeStack★1118
  • 安卓纸质视图栈
    SwipeDelMenuLayout★887
  • 仿IOS侧滑Item删除菜单
    itemtouchhelper-extension★795
  • 添加滑动条目处理
    SwipeMenu★636
  • 滑动菜单
    AndroidSwipeableCardStack★545
  • 流畅的纸质卡片组件
    SwipeRevealLayout★490
  • 通过swipe及slide显示另一个布局
    QQTipsView★471
  • 仿QQ消息未读拖拽清除
    SwipeCardsView★361
  • Android高仿秒拍热榜的卡片滑动和左右飞出效果
    冠亚体育手机网站,SwipeCardRecyclerView★234
  • 炫酷滑动卡片
    SlideLayout★176
  • 全方向完美滑动处理侧滑控件
    CardSwipeLayout★172
  • RecyclerView卡片滑动布局
    accordion-swipe-layout★69
  • Android手风琴滑动布局
    手势操作
    sensey★1890
  • 手势交互Android库
    GestureViews★1184
  • 手势控制和位置动画
    InboxLayout★641
  • 仿谷歌下拉返回效果
    Swipper★47
  • 控制亮度的自定义视图
    RecyclerView
    BaseRecyclerViewAdapterHelper★6876
  • 强大灵活的RecyclerAdapter
    recyclerview-animators★5977
  • 轻松创建动画RecyclerView
    UltimateRecyclerView★5332
  • 功能强大的Recyclerview
    vlayout★3453
  • 布局方案和布局间的组件复用
    android-advancedrecyclerview★3188
  • 提供高级特性的RecyclerView扩展
    epoxy★2771
  • Airbnb安卓视图架构
    XRecyclerView★2752
  • 下拉刷新和加载更多
    baseAdapter★2475
  • Android 万能的Adapter
    SuperRecyclerView★2431
  • 轻松制作可使用的RecyclerView
    RecyclerViewPager★2288
  • 基于RecyclerView的ViewPager替代品
    DiscreteScrollView★2216
  • 基于RecyclerView的滚动列表实现
    MultiType★1823
  • 快速清晰的开发复杂列表页面
    SwipeRecyclerView★1579
  • RecyclerView侧滑菜单
    FastAdapter★1517
  • 简化RecyclerView配置过程
    android-parallax-recyclerview★1429
  • Android 视差 RecycleView
    EasyRecyclerView★1382
  • 常用的RecyclerView的各种需求封装
    RecyclerViewCardGallery★1380
  • RecyclerView实现Card Gallery效果
    RecyclerViewUndoSwipe★1263
  • 本地ItemTouch助手
    excelPanel★1229
  • 仿Excel表格的RecyclerView
    LRecyclerView★1220
  • 多功能RecyclerView
    ShimmerRecyclerView★1077
  • 展现视图加载中的视图
    RecyclerViewHeader★1060
  • 为安卓RecyclerView创建header
    overscroll-decor★1048
  • Android的仿iOS滚动效果
    Renderers★1023
  • 创建适配器的Android库
    drag-select-recyclerview★957
  • 实现GooglePhoto样式多选择
    PullLoadMoreRecyclerView★903
  • 上拉刷新加载
    RecyclerViewFastScroller★873
  • 连接到RecyclerView实现快速滚动
    SimpleRecyclerView★845
  • 轻松创建列表的RecyclerView扩展
    IndexRecyclerView★824
  • 使用Recyclerview实现的联系人列表
    groupie★802
  • 显示并管理复杂的RecyclerView布局
    RecyclerViewEnhanced★760
  • 条目滑动点击安卓库
    StickyHeaders★741
  • 安卓RecyclerView的适配器和布局管理器
    WaveSideBar★726
  • 快速跳跃分组的侧边栏控件
    RecyclerView-FastScroll★706
  • 简单的FastScroller
    ExpandableRecyclerview★691
  • ExpandableRecycler适配器
    AndroidRecyclerViewDemo★613
  • 安卓RecyclerView 示例
    DragRecyclerView★562
  • 在RecyclerView中拖拽的简单实现
    RecyclerViewWithHeaderNewPractice★533
  • 结合HeaderView的RecyclerView新实现
    SectionedRecyclerView★530
  • 安卓RecyclerView 适配器
    FastScroll★525
  • 类似列表视图的FastScroller
    AnimRefreshRecyclerView★522
  • 下拉刷新和上拉加载更多的RecyclerView
    android-data-binding-recyclerview★478
  • 配有Android数据绑定的RecyclerView
    BGAAdapter-Android★437
  • 通用的Adapter和ViewHolder
    CircleRecyclerView★421
  • 一个循环RecyclerView
    FamiliarRecyclerView★354
  • RecyclerView类库
    MultiTypeView★306
  • 复杂界面分多个模块开发
    ClassifyView★284
  • 拖拽合并的RecyclerView
    SuspensionBar★249
  • Android轻松实现RecyclerView悬浮条
    RecyclerStickyHeaderView★241
  • RecyclerView的悬浮视图
    SwipeCardRecyclerView★234
  • 炫酷滑动卡片
    DragSelectRecyclerView★218
  • 简单的触摸监听类
    Smart-HeaderFooter-RecyclerView★198
  • 将Recyclerview添加HeaderView和FooterView
    AlphabetIndex-Fast-Scroll-RecyclerView★169
  • 强大的AlphabetIndex FastScroller
    RecyclerRefresh★158
  • 仿简书安卓端
    RecyclerTreeView★150
  • 安卓的TreeView实现
    PracticalRecyclerView★140
  • RecyclerView的一个封装
    ARecyclerView★105
  • 一个库搞定recyclerview
    SpringRecyclerView★88
  • 具有弹簧效果的RecyclerView
    InifiniteRecyclerView★61
  • 实现无尽加载列表
    StickyItemDecoration★58
  • RecyclerView粘性头部
    Sectioned-RecyclerView★55
  • 带header和item的RecyclerView的简单实现方式
    RecyclerAnimations★46
  • item滑动时的循环动画
    NoAdapter★45
  • 使用RecyclerView实现一个列表
    StickyRecyclerSettingView★45
  • 快速在Android上建立SettingActivity
    EasyHeaderFooterAdapter★32
  • 在RecyclerView中添加header或者footer
    RecyclerViewDivider★25
  • 为RecyclerView设置分频器
    SwipeCardsRecyclerView★20
  • 基于RecyclerView的Android组件
    GlideScrollRecyclerView★19
  • RecyclerView优先加载可见item
    RecyclerAdapter★14
  • 简化封装RecyclerView.Adapter
    Card
    folding-cell-android★2556
  • 安卓FoldingCell
    ViewPagerCards★2200
  • 视图页卡片
    RecyclerViewCardGallery★1380
  • RecyclerView实现Card Gallery效果
    Swipeable-Cards★1368
  • 提供类似Tinder卡片效果
    SwipeStack★1118
  • 安卓纸质视图栈
    SwipeCardView★999
  • 基于Diolor的Swipecards控件改进实现
    CardStackView★936
  • 以三种动画效果像卡片一样展示内容
    NineGridView★791
  • 展示图片的九宫格控件
    SlidingCard★618
  • 画廊效果的幻灯片卡片
    GiftCard★571
  • Android漂亮的礼物卡片
    AndroidSwipeableCardStack★545
  • 流畅的纸质卡片组件
    TinderStack★523
  • 一叠类似Tinder的卡片
    Android-InfiniteCards★466
  • 可自定义动效的卡片切换视图
    SwipeCardsView★361
  • Android高仿秒拍热榜的卡片滑动和左右飞出效果
    CardView★200
  • 类似小票效果的卡片列表
    CardSwipeLayout★172
  • RecyclerView卡片滑动布局
    StackCardsView★44
  • 堆叠滑动控件
    turncardlistview★30
  • 上下翻页的卡片列表
    SwipeCardsRecyclerView★20
  • 基于RecyclerView的Android组件
    Color
    InstagramLikeColorTransitionAndroid★352
  • 创建类似渐变颜色过渡的Instagram
    ColorPickerView★278
  • 从图片中获取颜色
    MaterialDesignColor★274
  • 谷歌官方MaterialDesign颜色代码
    colorpreference★204
  • 建立优秀的颜色选择器
    DrawableColorChange★81
  • drawable颜色修改工具
    MaterialDesignColors★54
  • 提供MD风格的Android库
    Drawable
    OneDrawable★202
  • 为View设置具有按下效果的背景
    SelectorDrawable★23
  • 为按钮设置selector
    Spinner
    nice-spinner★955
  • Android spinner的重新实现
    BetterSpinner★526
  • 好用的Spinner
    MemorySpinner★125
  • 可以记住历史选项的spinner
    布局
    flexbox-layout★7787
  • Android盒式布局功能库
    AndroidAutoLayout★4814
  • Android屏幕适配方案
    vlayout★3453
  • 布局方案和布局间的组件复用
    FlowLayout★2233
  • Android流式布局
    DiagonalLayout★1778
  • MD风格的新的样式和方法
    FanLayoutManager★1393
  • 扇形水平列表视图
    smooth-app-bar-layout★1389
  • 视图布局
    FlexLayout★1370
  • 强大的Android布局视图
    TextLayoutBuilder★1108
  • Facebook出品的在Android中轻松实现文字布局
    FlowLayoutManager★1018
  • 利用自定义LayoutManager 的一些实战实例
    ExpandableLayout★995
  • 带有各种动画的扩展布局
    FlowLayout★886
  • 让子视图自动浮动到下一行
    ArcLayout★835
  • 使用ArcLayout探索新的MD风格的样式和方法
    ExpandableLayout★783
  • 实现动画扩展和子视图折叠
    FlowTag★549
  • Android流式布局
    ExpandableLayout★411
  • 节省空间的可扩展布局
    ThreeDLayout★351
  • 让任何view拥有3D效果
    HiveLayoutManager★321
  • 蜂巢布局管理器
    ILayoutAnimationController★246
  • 一行代码搞定布局动画
    StickyNavLayout★235
  • 悬浮控件
    RippleLayout★203
  • 实现波纹效果的布局
    LiveLayout★184
  • 关于直播布局与礼物特效的Demo
    AssembleEssay★72
  • 自定义LayoutManager实现流动布局
    FlowLayoutDemo★19
  • 自定义View实现流式布局
    LikeELMLeftLoad★14
  • 仿饿了么左滑跳转
    模糊效果
    Android
    StackBlur★2721
  • 图片模糊效果
    Blurry★2534
  • Android简易模糊库
    500px-android-blur★1925
  • Android模糊视图
    blurkit-android★1913
  • 类似iOS上的实时模糊效果
    BlurView★1606
  • Android底层视图动态仿iOS模糊
    ImageBlurring★1079
  • 通过 Java 与 JNI 分别进行图片模糊
    RealtimeBlurView★914
  • 仿UIVisualEffectView实时模糊覆盖
    BlurredView★844
  • Android图片视图动态模糊
    BlurLockView★830
  • 毛玻璃效果的解锁界面
    Dali★771
  • Android图像模糊库
    RxBlur★515
  • 毛玻璃(高斯模糊)效果
    EtsyBlur★506
  • 在Etsy应用添加仿玻璃模糊效果
    GaussianBlur★289
  • 对图片应用高斯模糊
    CrazyShadow★215
  • 为 View 添加阴影效果
    TabBar
    SpaceTabLayout★933
  • RelativeLayout的自定义实现方式
    RecyclerTabLayout★859
  • 高效TabLayout库
    ZuiMeiTAG★232
  • 仿最美应用的底栏
    AlphaIndicatorView★201
  • 仿微信底部tab标签
    AppBar
    smooth-app-bar-layout★1389
  • 视图布局
    appbarlayout-spring-behavior★733
  • 实现滚动弹簧效果
    TestAppBar★271
  • AppBar动画效果
    simple-view-behavior★239
  • 简单视图行为
    选择器(Picker)
    Android-PickerView★3898
  • 精仿iOS的PickerView控件
    android-betterpickers★2461
  • 选择器DialogFragments库
    AndroidPicker★2021
  • 安卓选择器类库
    SublimePicker★1768
  • 提供选择器的自定义视图
    Android-FilePicker★1060
  • 灵活选择图片和视频的文件选择器
    TimePickerDialog★977
  • Android时间选择器
    CityPicker★880
  • 仿美团等选择城市列表demo
    BottomSheetPickers★824
  • ndroid的新的数据和时间选择器库
    PickView★791
  • 选择日期或者省份的辅助库
    MultiType-FilePicker★748
  • 轻量级Android文件选择库
    NumberPickerView★625
  • 灵活的安卓NumberPicker组件
    android-spinnerwheel★623
  • 安卓轮式旋转部件
    CharacterPickerView★610
  • 仿iOS的PickerView控件
    HorizontalPicker★285
  • 支持文本和图标的水平选择器
    SingleDateAndTimePicker★268
  • 在一个部件内选择一个数据和一个时间
    Two-Step-Picker-Dialog★231
  • 两步选择器对话框
    SimpleNumberPicker★154
  • 十进制和十六进制选择器视图
    LFilePicker★150
  • 轻量级的文件选择器
    AwesomeImagePicker★113
  • 使用精致的接口选择images和gifs
    PickTime★101
  • 日期选择控件
    PickImage★79
  • 带有Camera和Gallery选项的DialogFragment
    ClickNumberPicker★75
  • 从给定范围内使用点击按钮或者触摸选定一个值
    Android-PickerView-Library★72
  • 高仿 IOS PickerView 控件的库
    JDSelector★68
  • 仿京东的地址多级选择器
    NumberPicker★40
  • Android数字选择器视图
    CityPickerWebView★35
  • JS实现的省市县三级联动
    EasyPickerView★34
  • Android轻量级PickerView
    跑马灯
    MarqueeView★1568
  • 垂直翻页公告
    MarqueeViewDemo★896
  • 跑马灯View
    MarqueeLayoutLibrary★388
  • 支持四个方向循环滚动的自定义控件
    noticeview★256
  • 滚动播放的公告控件
    VerticalBannerView★194
  • 安卓自定义控件
    AdvancedTextSwitcher★193
  • 卡片上滚动显示最新评论
    VerticalMarqueeView★12
  • 新闻向上不断滚动跑马灯效果
    日历时间
    android-times-square★3710
  • 从日历视图选择一个单独日期
    material-calendarview★2770
  • MD风格的日历视图
    MaterialDateTimePicker★2407
  • MD风格日期时间选择器
    Android-Week-View★2301
  • 在Android应用中显示日历
    Caldroid★1263
  • 以月为单位的日历控件
    CountdownView★1257
  • 安卓倒计时控件
    TimePickerDialog★977
  • Android时间选择器
    AgendaCalendarView★929
  • 仿Outloo和Google日历
    CompactCalendarView★921
  • 简单的日历视图
    MaterialDateRangePicker★835
  • 日期选择控件库
    BottomSheetPickers★824
  • ndroid的新的数据和时间选择器库
    CalendarListView★726
  • 可互动的ListView+CalendarView
    WeekCalendar★555
  • 提供星期日历的库
    HorizontalCalendar★482
  • MD风格的水平日历视图
    CalendarExaple★445
  • 高仿钉钉和小米的日历控件
    android-calendar-view★322
  • 易扩展的andorid日历控件库
    Cadar★305
  • 可以显示事件的日历视图
    TimerView★299
  • 解耦良好的计时控件
    SingleDateAndTimePicker★268
  • 在一个部件内选择一个数据和一个时间
    CalendarView★195
  • 高度定制的日期选择器
    MiClockView★189
  • 高仿小米时钟
    MaterialCalendar★167
  • 一个MD风格的日历
    GregorianLunarCalendar★153
  • 农历+公历的日期选择模式
    GAHonorClock★110
  • 时钟动画
    CalendarView★98
  • 优雅且性能高效的日历控件
    Android-SwitchDateTimePicker★71
  • 日期时间选择器库
    week-month-Calendar★68
  • 周月切换的日历
    RetainedDateTimePickers★67
  • 在手机方向改变时保持日期时间选择器
    WeekViewSwipeable★59
  • 以周格式显示数据的Android视图
    DateRangePicker★48
  • 带数据选择器的Dialogo fragment
    TimelyView★42
  • 时间动画视图
    NubiaTimer★34
  • 高仿Nubia 定时器的自定义view
    主题样式
    MagicaSakura★1809
  • Android多主题库
    Android-skin-support★1525
  • 用心的Android 换肤框架
    Colorful★1479
  • 轻松改变app的配色方案
    Scoops★680
  • 动态改变应用主题
    ThemeDemo★384
  • 日夜间模式切换
    ThemeSkinning★248
  • Android 主题换肤的开源库
    Blackbulb★150
  • MD风格的夜间屏幕Android 应用
    AndroidSkinAnimator★143
  • 仿网易云音乐换肤框架
    ChangeMode★66
  • Android动态切换夜间模式的实现库
    QSkinLoader★33
  • QSkinLoader换肤框架
    ImageView
    RoundedImageView★3860
  • 支持圆角的快速ImageView。
    subsampling-scale-image-view★2845
  • 安卓自定义图片视图
    PanoramaImageView★1460
  • 可以随设备旋转自动滚动的imageView
    CustomShapeImageView★1395
  • 自定义使用SVG和填充图的ImageView
    FrescoImageViewer★1112
  • 简单的自定义全屏图片视图
    LargeImage★1018
  • Android加载大图
    Crescento★883
  • 图像视图和相关布局的下面添加曲线
    CircularImageView★875
  • 以简单的方法实现环形ImageView
    NineGridImageView★841
  • 仿微信朋友圈或微博的九宫格图片
    DragPhotoView★819
  • 高仿微信可拖拽返回PhotoView
    ShadowImageView★789
  • 更加细腻的阴影效果
    ImageTransition★552
  • Activity视图过渡
    android-combination-avatar★498
  • 模仿QQ讨论组组合头像
    CaptchaImageView★495
  • 生成验证码图片的自定义ImageView
    ScrollParallaxImageView★395
  • 滚动视差效果
    Frisson★308
  • 在图片上提供时髦的剪裁
    Diagonalify★282
  • 创建图像视图的对角线切割
    avatar-view★205
  • 带有用户名字的第一个字母的图片视图
    AnchorImageView★186
  • Android锚点定位ImageView
    CircleImageView★166
  • 环形ImageView
    SImageView★116
  • 设置一个网址即可显示图片的控件
    IdentityImageView★95
  • 带进度条的图片框架
    CoolImageView★51
  • 可以上下移动的imageView
    Blaze★40
  • 提供移动图像和缩放图像的视图
    LQRNineGridImageView★31
  • 仿微信群头像九宫格控件
    GridImageView★21
  • 根据图片数量自动适配加载
    RoundImageView★12
  • Android自定义圆角图片
    通知
    Alerter★2528
  • 克服Toast和Snackbar的限制
    NotifyUtil★920
  • 高仿淘宝微信等热门APP通知视图
    Pugnotification★683
  • 通过一行代码实现通知功能
    NotifyUtil★119
  • notification工具类
    Carousel-Notification★73
  • 轮播框通知
    NotificationUtil★37
  • 全新的Android通知栏
    聊天视图
    ChatKit★906
  • 简化UI开发
    ChatMessageView★552
  • 快速创建聊天信息视图
    ChatMessageView★249
  • Android聊天UI视图
    ChatDemo★109
  • 实现聊天界面
    Header
    StickyHeaderListView★1816
  • 基于实际需求做出的灵活可定制的UI功能
    ZoomHeader★1717
  • 模仿饿了么详情页的例子
    Android-ParallaxHeaderViewPager★1298
  • 带标题头的左右滑动
    StickyHeaders★741
  • 安卓RecyclerView的适配器和布局管理器
    RecyclerViewWithHeaderNewPractice★533
  • 结合HeaderView的RecyclerView新实现
    StickyNavLayout★235
  • 悬浮控件
    Smart-HeaderFooter-RecyclerView★198
  • 将Recyclerview添加HeaderView和FooterView
    引导图(Intro)
    AppIntro★6053
  • 制作一个很酷的app介绍页
    ShowcaseView★4660
  • 向用户突出app的特定部分
    WoWoViewPager★1881
  • 优化App介绍/引导页面
    material-intro-screen★1807
  • MD风格的介绍页面
    GuideView★1463
  • 创建遮罩式导航页
    Onboarding★1390
  • 以一种漂亮的方式向用户介绍应用
    paper-onboarding-android★1309
  • MD风格的onboarding
    MaterialIntroTutorial★753
  • MD风格介绍导航
    FancyShowCaseView★581
  • 易于使用的自定义显示案例视图
    ahoy-onboarding★505
  • 可自定义背景的引导页面
    HighLightGuideView★351
  • 用于 app 新功能高亮引导的库
    Material-ViewPagerIndicator★316
  • 超级简单的页面指示器
    Vertical-Intro★238
  • 在你的应用程序中整合material vertical
    UserGuideView★198
  • 用户指引view
    Material-Onboarding★172
  • 轻松实现引导图
    StepDialog★118
  • ofo应用首次注册时的步骤控件
    SlidingIntoView★61
  • 简单的滑动介绍视图
    图片
    Android-Universal-Image-Loader★15152
  • 异步图像加载程序
    glide★15006
  • 媒体管理和图片加载框架
    picasso★13268
  • 安卓图片缓存库
    fresco★12543
  • 在Android应用中显示图片
    PhotoView★9843
  • 简单可用的放大安卓ImageView实现
    CircleImageView★6779
  • 圆形介绍头像
    uCrop★4983
  • 极限且灵活的图像裁剪体验
    android-crop★3506
  • 简单的图片裁剪功能的Android库项目
    glide-transformations★3492
  • 图像转换类库
    TakePhoto★2596
  • Android设备上获取裁剪压缩图片
    MultiImageSelector★2263
  • 仿微信实现多图选择
    Android-Image-Cropper★2223
  • Android图片裁剪库
    Matisse★1850
  • Android本地图像选择器
    PhotoPicker★1787
  • 仿Wechat图片选择器
    KenBurnsView★1697
  • 身临其境的动画拖拽
    boxing★1668
  • 基于MVP模式的Android多媒体选择器
    scissors★1640
  • Android图片裁剪库
    BigImageViewer★1602
  • 支持平移和缩放的大图像缩放器
    AndroidPhotoFilters★1598
  • 快速强大灵活的图片处理器
    SimpleCropView★1591
  • Android图片裁剪库
    ImageViewZoom★1470
  • 支持超大图片流畅缩放
    ImagePicker★1433
  • Android仿微信UI自定义相册
    PictureSelector★1209
  • 多图选择上传
    PhotoView★1201
  • 图片浏览缩放控件
    BlurImageView★1059
  • 逐步加载图像
    cropiwa★1033
  • 实现图片剪裁的多配置部件
    TelegramGallery★998
  • 快速高效低耗相册选择器
    RxGalleryFinal★982
  • android图片/视频文件选择器
    android-square-progressbar★957
  • 围绕图片的进度条
    EasyImage★887
  • 从gallery,相机或者文件中获取图片
    Tiny★849
  • 图像压缩框架
    PinchImageView★842
  • 安卓图片手势控件
    AdvancedLuban★817
  • 方便简约的 Android 图片压缩工具库
    PhotoEditDemo★802
  • 图片处理sdk
    SimpleTagImageView★800
  • 安卓中带有标签的ImageView
    NineGridView★791
  • 展示图片的九宫格控件
    album★777
  • Android轻量级相册
    BGAPhotoPicker-Android★726
  • Android图片选择
    StyleImageView★717
  • 图片相关视图的风格添加及亮度对比度设置
    image-chooser-library★656
  • 以很少的代码捕获图片/视频
    ImagePicker★651
  • 图片选择控件
    ImageEditor-Android★646
  • 编辑图片
    Zoomy★634
  • 缩放Android库
    CropImageView★586
  • 支持不同类型裁剪的ImageView
    ImageGallery★549
  • 用于放置图像数组的gallery
    ImageSelector★500
  • Android图片选择器
    DragScaleCircleView★477
  • 能够拖拽和缩放及裁剪图片的环形窗口
    wqgallery★383
  • 微信样式相册选择器
    AvatarImageView★373
  • 电话本联系人头像
    RapidInterpolator★368
  • 动态调整interpolator的Java库
    Louvre★355
  • 自定义图片选择器
    MediaPickerInstagram★344
  • 仿Instagram的MediaPicker
    IPicker★300
  • Material Design 风格的图片选择器
    TransferImage★292
  • 仿qq 点击缩略图后预览高清图
    InstaCropper★291
  • 仿Instagram图片裁剪
    Android-BitherCompress★263
  • Android图片压缩目前最优解决方案
    RxPicker★261
  • 基于RxJava的Android图片选择器.
    FishBun★261
  • Android图片选择器
    PickPhotoSample★256
  • 帮助你选择图片的库
    XLowPoly★235
  • low poly图片的安卓实现
    AlbumSelector★222
  • 图片选择库
    imagepickerdemo★206
  • 图片选择器
    JigsawDemo★203
  • Android的拼图Demo
    HotImg★199
  • 图片不规则区域点击事件处理
    PullDownView★196
  • 下拉展示大图
    GalleryPick★181
  • Android 自定义相册
    collageview★177
  • 创建简单照片拼贴
    croperino★146
  • 简单的图像裁剪工具
    ImageCropper★143
  • 图片裁剪库
    FrescoImageView★140
  • Android平台的图像控件
    MutiPhotoChoser★139
  • 支持多选的图片选择器
    FrescoUtils★133
  • 图片处理
    android-image-picker★99
  • 选择图像的简单的库
    ImageLoaderUtil★89
  • ImageLoaderUtil实现的图集功能
    SnappyImageViewer★79
  • 安卓图片视图
    PicCrop★62
  • 对ucrop的封装工具类
    ImageZoom★50
  • 仿Instagram的视图缩放功能
    ImagePickerWithCrop★47
  • 指定选择图片的库
    Multimager★46
  • 多图片选择器和多图片捕获
    ImageFrame★41
  • 高效省内存的播放序列帧控件
    IKNinePhotoView★40
  • 开源的Android九宫格控件
    LQRImagePicker★37
  • 完全仿微信的图片选择
    ImageSelector★32
  • 支持多图选择和图片预览的图片选择器
    AlxPicassoProgress★25
  • 图片下载进度实时显示
    徽章(Badge)
    BGABadgeView-Android★1622
  • Android 徽章控件
    BadgeView★1239
  • 自由定制的BadgeView
    Android-ActionItemBadge★1079
  • 为ActionItem添加标识
    MaterialBadgeTextView★859
  • 展示新的信息标识和新的特色标识
    Badger★686
  • 添加徽章
    Badge★544
  • 一系列徽章图片
    BadgeView★457
  • 基于Android的BadeView
    badgebutton★333
  • 带有徽标(数字,小红点)的按钮
    NotificationBadge★81
  • 带有动画的通知标记
    BadgeRadioButton★25
  • 仿QQ底部Tab切换RadioButton
    SuperBadge★19
  • 消息红点计数解决方案
    RatingView
    MaterialRatingBar★755
  • 性能更好的MD风格的RatingBar
    SimpleRatingBar★607
  • 简单但功能强大的RatingBar
    SpiderWebScoreView★567
  • 蛛网评分控件
    SmileyRating★475
  • Android简单的评级栏
    SimpleRatingView★167
  • Android的评价切换
    AndroidCustomView★123
  • 简单的投票排名对比图
    rating-request★24
  • 简单的Android对话框
    滚动效果(Scroll)
    Android-ObservableScrollView★7427
  • 观察滚动事件和滚动视图的Android库
    AndroidScrollingImageView★1184
  • 安卓视差动画效果
    Scrollable★859
  • 封装实现滚动条的滚动逻辑
    material-scrolling★577
  • MD风格的滚动效果安卓库
    MaterialScrollBar★562
  • 为MD5.1之前的版本带来MD5.1的滚动条
    ScrollLayout★196
  • 场景抽屉拖拽效果
    HVScrollView★42
  • 配置水平和垂直滚动的HVScrollView
    时间轴
    Timeline-View★1115
  • 时间线视图库
    TimelineView★881
  • 在应用程序添加时间轴的安卓视图
    TimelineView★399
  • Android自定义时间线视图
    UnderLineLinearLayout★259
  • 一个简单的时间轴实现
    TimeLine★239
  • 安卓时间轴
    TreeView
    AndroidTreeView★1618
  • 安卓的目录视图
    RecyclerTreeView★150
  • 安卓的TreeView实现
    SearchView
    MaterialSearchView★2062
  • 以MD风格实现SearchView
    floatingsearchview★1949
  • 带有搜索建议的浮动搜索栏
    JJSearchViewAnim★1932
  • 炫酷的SearchView搜索动画库
    SearchView★1499
  • 类似Play Store的SearchView
    FloatingSearchView★1206
  • 浮动的搜索视图实现
    MaterialSearchBar★962
  • 安卓MD风格搜索栏
    Search-View-Layout★883
  • Lollipop+ Dialer和Google Maps的实现
    MaterialSearchView★720
  • 基于MD风格的Android搜索视图
    Material-SearchTransition★316
  • 展示如何过渡到搜索的示例项目
    QueryHighlighter★244
  • 在文本中突出搜索字词
    searchablespinner★87
  • 搜索器
    MsvSearch★87
  • Material Design风格搜索视图
    SearchDialog★73
  • 仿bilibili搜索框效果
    LSearchView★29
  • Android L设计搜索视图
    TagView
    ChipsLayoutManager★1607
  • 自定义RecyclerView布局管理器
    FlowLayout★886
  • 让子视图自动浮动到下一行
    SimpleTagImageView★800
  • 安卓中带有标签的ImageView
    AndroidTagView★766
  • Android TagView库
    materialChipView★664
  • MD风格的Chip视图
    AutoLabelUI★587
  • 将标签并排放置的Android库
    android-tagview★576
  • 云标签控件
    TriangleRectangleLabelView★441
  • 标签视图
    TagViewGroup★404
  • Android 仿小红书图片标签
    EasyTagDragView★211
  • 仿网易新闻app下拉标签选择菜单
    ChannelTagView★48
  • 一个频道管理view
    LaybelLayout★22
  • 标签布局
    FlowLayoutDemo★19
  • 自定义View实现流式布局
    TextView
    HTextView★3017
  • 支持自定义字体的TextView动画效果
    android-autofittextview★2678
  • 自动改变文字大小完美适应边界
    ticker★2405
  • 显示滚动文本
    ExpandableTextView★2190
  • 展开/折叠TextView
    TextJustify-Android★1458
  • 文本处理库
    RichText★1357
  • Android富文本解析器
    SlantedTextView★1215
  • 倾斜的TextView
    SuperTextView★1163
  • 功能强大的TextView
    Android-TextView-LinkBuilder★1130
  • 创建可点击的链接
    TextLayoutBuilder★1108
  • Facebook出品的在Android中轻松实现文字布局
    ReadMoreTextView★1035
  • 装饰文本的自定义TextView
    TokenAutoComplete★962
  • 安卓Gmail风格的MultiAutoCompleteTextView
    html-textview★845
  • 扩展的安卓TextView组件
    AutoLinkTextView★820
  • 自动检测并处理点击事件
    FadingTextView★810
  • 自动改变其内容的TextView
    Android-RobotoTextView★757
  • TextView及其直接间接子类的实现
    SuperTextView★731
  • 提高构建项目的效率
    AutoFitTextView★657
  • 自动适应字体和行计数的TextView
    BabushkaText★654
  • 通过Spannables设置文本样式
    FloatingText★621
  • 执行漂浮效果动画的控件
    TriangleLabelView★583
  • 显示三角视图
    android-justifiedtextview★569
  • 基于原生TextView实现合理的textview
    Trestle★540
  • 在TextView上桥接span
    android-chips★524
  • 基于Google的内部chip库的简易库
    ExpandableTextView★481
  • 展开折叠TextView
    Markdown★466
  • Android原生Markdown解析器
    html-builder★425
  • 为Android TextView建立有效的HTML
    SimpleText★417
  • 简化spannable字符串的创建
    dante★412
  • 文本解析器
    AvatarLabelView★411
  • 可配置的迷你版轻量级 Label 辅助类
    cornerlabelview★390
  • 视图角标
    text-decorator★364
  • 轻松装饰TextView
    NumberAnimTextView★356
  • 数字增加动画的 TextView
    UnderLineLinkTextView★327
  • 使关键词带有可点击的下划线TextView
    PinchZoomTextView★269
  • 用手势缩放字体大小
    XRichText★262
  • 显示Html富文本的TextView
    Better-Link-Movement-Method★224
  • 在TextView中处理RUL
    ColorTextView★211
  • 用颜色标记一些短语
    FlexibleRichTextView★191
  • 自行定义大部分标签
    GetWordTextView★165
  • 通过点击获得词语
    CharCountTextView★114
  • 仿Twitter剩余长度计数器
    TagEditText★112
  • 显示类似微博中的活动标签
    RandomTextView★110
  • 滚动显示TextView的数字
    RickText★82
  • 类似微博的编辑框
    nachos★53
  • 输入文本并创建MD风格的chip
    Zaman★53
  • 将timestamp转化为时间String
    SpanEZ★39
  • 从Spannable API完成提取
    TextViewDrawable★33
  • 仿大众点评的购买须知
    RichTextView★32
  • 富文本textview
    TextViewSpanLink★29
  • TextView上展示超链接
    SpanBuilder★18
  • TextView可以生成的span样式
    EditText
    MaterialEditText★4087
  • MD风格的EditText
    Android Form
    EditText★1224
  • 为edittext带来数据有效性工具
    MaterialTextField★997
  • 与众不同的漂亮的浮动可编辑文本框
    BufferTextInputLayout★785
  • 简单的TextImputLayout定制化服务
    BiuEditText★594
  • 一个有趣的EditText
    MentionEditText★344
  • 为提及的字符串添加一些有用的功能特色
    AndroidEdit★325
  • EditText的撤销和恢复撤销操作
    TyperEditText★306
  • 打字机效果
    AutoFillEmailEditText★244
  • 自动对EditText添加自定义email
    AnFQNumEditText★243
  • 自定义EditText实现右下角计数控件
    LineHeightEditText★134
  • 修复文本编辑行高和光标效果
    EditCard★76
  • 输入信用卡号码的自定义EditText
    PowerfulViewLibrary★73
  • 输入框功能
    EasyMoney-Widgets★30
  • 支持货币显示的部件
    RichEditText★21
  • 仿微博富文本编辑框
    Sliding
    AndroidSlidingUpPanel★6150
  • 通过向上拖动添加额外面板
    SlideUp-Android★1220
  • 对任何视图添加边侧效果
    DiscreteSlider★537
  • 让用户在指定的刻度线上选择一个值的滑块
    slideview★472
  • 简单独特的Android滑动按钮
    SlidingLayout★331
  • 安卓平台View控件
    SlidingBall★187
  • 仿QQ身边的人的效果
    表单
    android-saripaar★2233
  • 基于规则的AndroidUI输入验证库
    hover★1978
  • Android浮动菜单实现
    MaterialLogin★1485
  • MD风格的登录效果
    GridPasswordView★1237
  • Android密码视图
    MaterialChipsInput★1097
  • MD风格chip组件的实现
    AndroidKeyboardWatcher★759
  • Android可开闭输入键盘
    AwesomeValidation★736
  • 实现对Android的验证
    MaterialLogin★688
  • MD风格的登录注册视图
    passwordview★661
  • Android密码视图
    material-code-input★656
  • MD样式的编码输入
    PasswordLoadingView★532
  • 当完成密码时显示一个动画
    OnePageSigninSignup★424
  • 单页面实现注册登录
    SwipeCaptcha★386
  • Android 平台的滑动验证码
    data-binding-validator★214
  • 使验证字段变得简单而快速
    Ratifier★103
  • Android表单验证库
    ValidationUtilsLibrary★91
  • 实现表单验证
    分段控件
    android-segmented-control★1310
  • Android自定义视图
    SHSegmentControl★446
  • 一个简单的SegmentControl部件
    segmentedview★31
  • ios 风格的分段控件
    SegmentedControl★16
  • 分段选择控件

 从直观上,弹幕效果就是在一个ViewGroup上增加一些View,然后让这些View移动起来。所以,整体的实现思路大概是这样的:
1、定义一个RelativeLayout,在里面动态添加TextView。
2、这些TextView的字体大小、颜色、移动速度、初始位置都是随机的。
3、将TextView添加到RelativeLayout的右边缘,每隔一段时间添加一个。
4、对每个TextView做平移动画,使得TextView从右向左移动。
5、当TextView从左边移动出屏幕,将TextView从RelativeLayout中移除。
       有了思路下面就来看具体的代码。
      
首先定义BarrageItem,用来存储每一个弹幕项的相关信息,包括字体内容、字体大小颜色、移动速度、垂直方向的位置、字体占据的宽度等。
 

public class BarrageItem { 
  public TextView textView; 
  public int textColor; 
  public String text; 
  public int textSize; 
  public int moveSpeed;//移动速度 
  public int verticalPos;//垂直方向显示的位置 
  public int textMeasuredWidth;//字体显示占据的宽度 
} 

      
然后定义BarrageView,由于弹幕的字体颜色大小和移动速度都是随机的,需要定义最大最小值来限定它们的范围,然后通过产生随机数来设置它们在这个范围内的值。另外还需要定义弹幕的文本内容,这里是直接写死的一些固定值。
 
 

  private Context mContext; 
  private BarrageHandler mHandler = new BarrageHandler(); 
  private Random random = new Random(System.currentTimeMillis()); 
  private static final long BARRAGE_GAP_MIN_DURATION = 1000;//两个弹幕的最小间隔时间 
  private static final long BARRAGE_GAP_MAX_DURATION = 2000;//两个弹幕的最大间隔时间 
  private int maxSpeed = 10000;//速度,ms 
  private int minSpeed = 5000;//速度,ms 
  private int maxSize = 30;//文字大小,dp 
  private int minSize = 15;//文字大小,dp 

  private int totalHeight = 0; 
  private int lineHeight = 0;//每一行弹幕的高度 
  private int totalLine = 0;//弹幕的行数 
  private String[] itemText = {"是否需要帮忙", "what are you 弄啥来", "哈哈哈哈哈哈哈", "抢占沙发。。。。。。", "************", "是否需要帮忙","我不会轻易的狗带", "嘿嘿", "这是我见过的最长长长长长长长长长长长的评论"}; 
  private int textCount; 
//  private List<BarrageItem> itemList = new ArrayList<BarrageItem>(); 

  public BarrageView(Context context) { 
    this(context, null); 
  } 

  public BarrageView(Context context, AttributeSet attrs) { 
    this(context, attrs, 0); 
  } 

  public BarrageView(Context context, AttributeSet attrs, int defStyleAttr) { 
    super(context, attrs, defStyleAttr); 
    mContext = context; 
    init(); 
  } 

      
如果弹幕显示的垂直位置是随机的,就会出现垂直方向上弹幕重叠的情况,所以需要根据高度对垂直方向按照弹幕高度的最大值等分,然后让弹幕在这些指定的垂直位置随机分布。这个值在onWindowFocusChanged里计算,因为在这个方法中通过View的getMeasuredHeight()得到的高度不为空。
 

@Override 
public void onWindowFocusChanged(boolean hasWindowFocus) { 
  super.onWindowFocusChanged(hasWindowFocus); 
  totalHeight = getMeasuredHeight(); 
  lineHeight = getLineHeight(); 
  totalLine = totalHeight / lineHeight; 
} 
    通过Handler的sendEmptyMessageDelayed每隔随机的时间产生一个弹幕项。下面的代码设置弹幕项的属性。

class BarrageHandler extends Handler { 
  @Override 
  public void handleMessage(Message msg) { 
    super.handleMessage(msg); 
    generateItem(); 
    //每个弹幕产生的间隔时间随机 
    int duration = (int) ((BARRAGE_GAP_MAX_DURATION - BARRAGE_GAP_MIN_DURATION) * Math.random()); 
    this.sendEmptyMessageDelayed(0, duration); 
  } 
} 

private void generateItem() { 
  BarrageItem item = new BarrageItem(); 
  String tx = itemText[(int) (Math.random() * textCount)]; 
  int sz = (int) (minSize + (maxSize - minSize) * Math.random()); 
  item.textView = new TextView(mContext); 
  item.textView.setText(tx); 
  item.textView.setTextSize(sz); 
  item.textView.setTextColor(Color.rgb(random.nextInt(256), random.nextInt(256), random.nextInt(256))); 
  item.textMeasuredWidth = (int) getTextWidth(item, tx, sz); 
  item.moveSpeed = (int) (minSpeed + (maxSpeed - minSpeed) * Math.random()); 
  if (totalLine == 0) { 
    totalHeight = getMeasuredHeight(); 
    lineHeight = getLineHeight(); 
    totalLine = totalHeight / lineHeight; 
  } 
  item.verticalPos = random.nextInt(totalLine) * lineHeight; 
  showBarrageItem(item); 
} 

将每一个弹幕项添加到视图上,并给View添加一个TranslateAnimation动画,当动画结束时,将View从视图上移除。

 

private void showBarrageItem(final BarrageItem item) { 

    int leftMargin = this.getRight() - this.getLeft() - this.getPaddingLeft(); 

    LayoutParams params = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); 
    params.addRule(RelativeLayout.ALIGN_PARENT_TOP); 
    params.topMargin = item.verticalPos; 
    this.addView(item.textView, params); 
    Animation anim = generateTranslateAnim(item, leftMargin); 
    anim.setAnimationListener(new Animation.AnimationListener() { 
      @Override 
      public void onAnimationStart(Animation animation) { 

      } 

      @Override 
      public void onAnimationEnd(Animation animation) { 
        item.textView.clearAnimation(); 
        BarrageView.this.removeView(item.textView); 
      } 

      @Override 
      public void onAnimationRepeat(Animation animation) { 

      } 
    }); 
    item.textView.startAnimation(anim); 
  } 

  private TranslateAnimation generateTranslateAnim(BarrageItem item, int leftMargin) { 
    TranslateAnimation anim = new TranslateAnimation(leftMargin, -item.textMeasuredWidth, 0, 0); 
    anim.setDuration(item.moveSpeed); 
    anim.setInterpolator(new AccelerateDecelerateInterpolator()); 
    anim.setFillAfter(true); 
    return anim; 
  } 

这样就完成了弹幕的功能,实现原理并不复杂。可以根据具体的需求来增加更多的控制,如控制每一行弹幕不重复,控制弹幕移动的Interpolator产生不同的滑动效果等等。

您可能感兴趣的文章:

  • Android
    EasyBarrage实现轻量级弹幕效果
  • Android编程实现简易弹幕效果示例【附demo源码下载】
  • 很棒的Android弹幕效果实例
  • Android
    实现仿网络直播弹幕功能详解及实例
  • Android实现炫酷的网络直播弹幕功能
  • Android弹幕框架
    黑暗火焰使基本使用方法
  • Android仿斗鱼直播的弹幕效果
  • Android实现自定义的弹幕效果
  • Android自制精彩弹幕效果

Post Author: admin

发表评论

电子邮件地址不会被公开。 必填项已用*标注