短视频软件开发,动态计算在指定位置添加view,实现引导页效果
短视频软件开发,动态计算在指定位置添加view,实现引导页效果实现的相关代码
方式一:Popupwindow
1 | private void showGuideWindowPop() {<br> if (mGuideWindow == null ) {<br> mGuideView = (RelativeLayout) LayoutInflater.from( this )<br> .inflate(R.layout.layout_wallet_guide, null );<br> mGuideWindow = new PopupWindow(mGuideView, ViewGroup.LayoutParams.MATCH_PARENT,<br> ViewGroup.LayoutParams.MATCH_PARENT);<br> int [] location = new int [ 2 ];<br> sideBarView.promotions.getLocationOnScreen(location); //获取在整个屏幕内的绝对坐标<br> View view =<br> (View) LayoutInflater.from(this).inflate(R.layout.layout_wallet_guide_view, null);<br> int w = View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED);<br> int h = View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED);<br> view.measure(w, h);<br> int height = view.getMeasuredHeight();<br> RelativeLayout.LayoutParams params =<br> new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT,<br> RelativeLayout.LayoutParams.WRAP_CONTENT);<br> params.setMargins(MARGIN_LEFT, location[1] - height, MARGIN_RIGHT, 0);<br> mGuideView.addView(view, params);<br> // 设置点击窗口外边窗口消失<br> mGuideWindow.setOutsideTouchable(true);<br> mGuideWindow.setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));<br> mGuideWindow.setFocusable(true);<br> mGuideWindow.setClippingEnabled(false);<br> mGuideWindow.showAtLocation(mGuideView, Gravity.CENTER, 0, 0);<br> }<br> Preferences.saveBoolean(Preferences.SHOW_DRAWER_GUIDE, true);<br> mGuideView.setOnClickListener(new View.OnClickListener() {<br> @Override<br> public void onClick(View v) {<br> if (mGuideWindow != null && mGuideWindow.isShowing()) {<br> mGuideWindow.dismiss();<br> }<br> }<br> });<br>} |
方式二:ViewStub
1 | <ViewStub<br> android:id= "@+id/id_guide_vs" <br> android:inflatedId= "@+id/inflatedStart" <br> android:layout_width= "match_parent" <br> android:layout_height= "match_parent" <br> android:layout= "@layout/layout_wallet_guide" <br> /><br> <br>mViewStub = (ViewStub) findViewById(R.id.id_guide_vs);<br> <br> private void showGuide(){<br> RelativeLayout rl = (RelativeLayout) mViewStub.inflate();<br> int [] location = new int [ 2 ];<br> sideBarView.promotions.getLocationOnScreen(location); //获取在整个屏幕内的绝对坐标<br> View view =<br> (View) LayoutInflater.from(this).inflate(R.layout.layout_wallet_guide_view, null);<br> int w = View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED);<br> int h = View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED);<br> view.measure(w, h);<br> int height = view.getMeasuredHeight();<br> RelativeLayout.LayoutParams params =<br> new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT,<br> RelativeLayout.LayoutParams.WRAP_CONTENT);<br> params.setMargins(MARGIN_LEFT, location[1] - height, MARGIN_RIGHT, 0);<br> rl.addView(view, params);<br> Preferences.saveBoolean(Preferences.SHOW_DRAWER_GUIDE, true);<br> rl.setOnClickListener(new View.OnClickListener() {<br> @Override<br> public void onClick(View v) {<br> mViewStub.setVisibility(View.GONE);<br> }<br> });<br> } |
以上就是短视频软件开发,动态计算在指定位置添加view,实现引导页效果实现的相关代码, 更多内容欢迎关注之后的文章
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现