短视频软件开发,动态计算在指定位置添加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,实现引导页效果实现的相关代码, 更多内容欢迎关注之后的文章

 

posted @   云豹科技-苏凌霄  阅读(90)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示