【最讨厌那些不开源的】小米的米UI的BOTTOMVIEW源码完美反编译

本文介绍了如何使用和自定义Android第三方UI控件库BottomView,该控件类似小米米UI的底部弹出视图,支持自定义布局、动画、外围背景透明度等功能。通过设置不同Theme和动画,可以实现不同的视觉效果,并提供了源码解析。
摘要由CSDN通过智能技术生成

其实原理就是WindowManager Dialog 和Animation的组合


这里分享一个Android的非常经典实用而且简单方便的第三方UI控件库:BottomView(小米的米UI也用到了这个)

实现功能:

可以在底部弹出的View里自定义布局;

可以自定义是否可以触摸外部消失;

可以自定义事件;

可以自定义外围背景是否透明;

可以自定义动画;

如果需要的话,可以强制为顶部View显示



用法:

1、下载BottomView.jar库文件,放到Android项目工程里的libs里

2、设置BottomView的Theme:

这2个Theme复制粘贴到你的项目的res/values/styles.xml里即可



  1. <!--半透明背景Theme-->
  2.    <style name="BottomViewTheme_Defalut">
  3.         <item name="android:windowFrame">@null</item>
  4.         <item name="android:windowContentOverlay">@null</item>
  5.         <item name="android:windowIsFloating">true</item>
    </
  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
在 Android 应用程序中,可以使用 `FrameLayout` 或 `RelativeLayout` 等布局容器来实现底部视图的显示和隐藏,可以根据选中商品的情况动态设置底部视图的可见性,并使用动画效果使其弹起显示。 下面是一个示例代码: ``` // 获取底部视图 View bottomView = findViewById(R.id.bottom_view); // 根据选中商品的情况设置底部视图的可见性,并使用动画效果使其弹起显示 if (hasSelectedGoods) { // 底部视图可见时,使用动画效果弹起显示 if (bottomView.getVisibility() != View.VISIBLE) { bottomView.setVisibility(View.VISIBLE); ObjectAnimator.ofFloat(bottomView, "translationY", bottomView.getHeight(), 0) .setDuration(300) .start(); } } else { // 底部视图不可见时,直接设置为不可见 bottomView.setVisibility(View.GONE); } ``` 在上面的代码中,`hasSelectedGoods` 表示是否选中了商品,如果选中了商品,则将底部视图的可见性设置为 `View.VISIBLE`,并使用属性动画将其从底部弹起显示;否则将其设置为 `View.GONE`。 需要注意的是,在布局文件中,底部视图需要设置为 `android:layout_gravity="bottom"`,以确保它在底部显示,例如: ``` <FrameLayout ...> <!-- 主内容视图 --> <View ... android:layout_above="@id/bottom_view" /> <!-- 底部视图 --> <View android:id="@+id/bottom_view" ... android:layout_gravity="bottom" android:visibility="gone" /> </FrameLayout> ``` 在上面的布局文件中,`bottom_view` 是底部视图的 ID,它被设置为 `android:visibility="gone"`,表示默认情况下不可见。主内容视图通过设置 `android:layout_above="@id/bottom_view"` 来避免与底部视图重叠。 当需要显示底部视图时,可以调用 `setVisibility(View.VISIBLE)` 来将其设置为可见状态,并使用属性动画将其从底部弹起显示;当需要隐藏底部视图时,可以调用 `setVisibility(View.GONE)` 来将其设置为不可见状态。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值