直播源码网站,点击分类调起菜单栏并弹出
直播源码网站,点击分类调起菜单栏并弹出实现的相关代码
首先,声明一个类继承自PopupWindow (这里你也可以在使用的activity/Fragment中使用new PopupWindow方式来实现)
1 | <br> public class DevicePopWindow extends PopupWindow {<br> public DevicePopWindow(){<br> super(ViewGroup.LayoutParams.WRAP_CONTENT,ViewGroup.LayoutParams.WRAP_CONTENT);<br> //这里要注意设置setOutsideTouchable之前要设置 setBackgroundDrawable()<br> //否则点击外部无法关闭pop<br> setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));<br> setOutsideTouchable(true);<br> //获取焦点设置为true 这样再次点击菜单时 就隐藏菜单<br> setFocusable(true);<br> View inflate = LayoutInflater.from(BaseApplication.getAppContext()).inflate(R.layout.pop_window_device, null);<br> setContentView(inflate);<br> //设置窗口进入和退出的动画<br> setAnimationStyle(R.style.pop_add);<br> }<br>}<br>R.layout.pop_window_device.xml<br><?xml version="1.0" encoding="utf-8"?><br><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"<br> android:orientation="vertical"<br> android:layout_width="match_parent"<br> android:layout_height="match_parent"<br> ><br> <LinearLayout<br> android:padding="10dp"<br> android:layout_width="wrap_content"<br> android:layout_height="wrap_content"<br> android:layout_marginEnd="8dp"<br> android:background="@drawable/shape_device_pop"<br> android:orientation="vertical"<br> android:paddingBottom="20dp"<br> android:paddingEnd="16dp"<br> android:paddingStart="26dp"<br> android:paddingTop="20dp"><br> <TextView<br> android:id="@+id/tv_1"<br> android:layout_width="wrap_content"<br> android:layout_height="wrap_content"<br> android:padding="10dp"<br> android:text="发起群聊"<br> android:textColor="@color/colorBlack"<br> android:textSize="16sp"/><br> <TextView<br> android:id="@+id/tv_2"<br> android:layout_width="wrap_content"<br> android:layout_height="wrap_content"<br> android:padding="10dp"<br> android:text="添加朋友"<br> android:textColor="@color/colorBlack"<br> android:textSize="16sp"/><br> <TextView<br> android:id="@+id/tv_3"<br> android:layout_width="wrap_content"<br> android:layout_height="wrap_content"<br> android:padding="10dp"<br> android:text="扫一扫"<br> android:textColor="@color/colorBlack"<br> android:textSize="16sp"/><br> <TextView<br> android:id="@+id/tv_4"<br> android:layout_width="wrap_content"<br> android:layout_height="wrap_content"<br> android:padding="10dp"<br> android:text="收付款"<br> android:textColor="@color/colorBlack"<br> android:textSize="16sp"/><br> <TextView<br> android:id="@+id/tv_5"<br> android:layout_width="wrap_content"<br> android:layout_height="wrap_content"<br> android:padding="10dp"<br> android:text="帮助与反馈"<br> android:textColor="@color/colorBlack"<br> android:textSize="16sp"/><br> </LinearLayout><br></LinearLayout> |
R.style.pop_add 样式
1 | <br> <style name= "pop_add" parent= "android:Animation" ><br> <item name= "android:windowEnterAnimation" >@anim/pop_add_show</item><br> <item name= "android:windowExitAnimation" >@anim/pop_add_hide</item><br></style><br>@anim/pop_add_show.xml pop弹出动画<br><?xml version= "1.0" encoding= "utf-8" ?><br><set xmlns:android= "http://schemas.android.com/apk/res/android" ><br> <alpha<br> android:duration= "300" <br> android:fromAlpha= "0.0" <br> android:toAlpha= "1.0" /><br> <scale<br> android:duration= "300" <br> android:fromXScale= "0" <br> android:fromYScale= "0" <br> android:interpolator= "@android:anim/decelerate_interpolator" <br> android:pivotX= "85%" <br> android:pivotY= "0%" <br> android:toXScale= "1.0" <br> android:toYScale= "1.0" /><br></set><br>@anim/pop_add_hide.xml pop隐藏动画<br><?xml version= "1.0" encoding= "utf-8" ?><br><set xmlns:android= "http://schemas.android.com/apk/res/android" ><br><alpha<br> android:duration= "300" <br> android:fromAlpha= "1.0" <br> android:toAlpha= "0.0" /><br><scale<br> android:duration= "300" <br> android:fromXScale= "1.0" <br> android:fromYScale= "1.0" <br> android:interpolator= "@android:anim/accelerate_interpolator" <br> android:pivotX= "85%" <br> android:pivotY= "0%" <br> android:toXScale= "0" <br> android:toYScale= "0" /><br></set> |
在我们的页面中进行使用
1 | <br> class DeviceFragment : Fragment() {<br> lateinit var devicePopWindow: DevicePopWindow<br> lateinit var rootView: View<br> lateinit var successView:View<br> <br> override fun onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState): View {<br> rootView = inflater.inflate(R.layout.base_device_fragment_layout,container,false)<br> initView(inflater)<br> initListener()<br> return rootView<br> }<br> fun initView(inflate: View) {<br> devicePopWindow = DevicePopWindow()<br> }<br> <br> fun initListener() {<br> rootView.findViewById<ImageView>(R.id.device_head_add).setOnClickListener {<br> //设置pop显示位置<br> devicePopWindow.showAsDropDown(it,-150,10)<br> backgroundAlpha(0.8f)<br> }<br> //pop消失的监听<br> devicePopWindow.setOnDismissListener {<br> backgroundAlpha(1.0f)<br> }<br> }<br> /**<br> * 此方法用于改变背景的透明度,从而达到“变暗”的效果<br> */<br> private fun backgroundAlpha(bgAlpha: Float) {<br> val lp: WindowManager.LayoutParams = activity!!.window.attributes<br> // 0.0-1.0<br> lp.alpha = bgAlpha<br> activity!!.window.attributes = lp<br> // everything behind this window will be dimmed.<br> // 此方法用来设置浮动层,防止部分手机变暗无效<br> activity!!.window.addFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND)<br> }<br>} |
以上就是直播源码网站,点击分类调起菜单栏并弹出实现的相关代码, 更多内容欢迎关注之后的文章
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现