安卓开发Android studio学习笔记21:ViewPager两种方式实现引导页

news2024/11/29 0:51:45

实现引导页

  • 一、ViewPager实现引导页
    • 第一步:创建三个xml
      • 1.page1.xml
      • 2.page2.xml
      • 3.page3.xml
    • 第二步:创建适配器GuideAdapter
    • 第三步:创建引导页原点
      • 1.activity_guide.xml
      • 2.GuideActivity.java
  • 二、 ViewPager(2)实现引导页
    • 第一步:创建三个xml
      • 1.guid_1.xml
      • 2.guid_2.xml
      • 3.guid_3.xml
      • 4.btn_bg.xml
      • 5.guide_bg.xml
    • 第二步:创建适配器GuideAdapter
    • 第三步:创建圆点页 activity_onboarding.xml
    • 第四步:创建圆点页onboarding.Java

有疑问的可在评论区留言 或则加Q 2529165097

一、ViewPager实现引导页

第一步:创建三个xml

图片可以自己替换,因为我这里用的是本地的图片

1.page1.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    >

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:gravity="center|bottom"
        android:orientation="vertical">

        <ImageView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginBottom="20dp"
            android:layout_weight="20"
            android:background="@mipmap/page1" />

        <ImageView
            android:layout_width="100dp"
            android:layout_height="70dp"
            android:layout_marginBottom="20dp"
            android:layout_weight="1"
            android:background="@mipmap/logo" />

    </LinearLayout>
</LinearLayout>

在这里插入图片描述

2.page2.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    >

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:gravity="center|bottom"
        android:orientation="vertical">

        <ImageView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginBottom="20dp"
            android:layout_weight="20"
            android:background="@mipmap/page2" />

        <ImageView
            android:layout_width="100dp"
            android:layout_height="70dp"
            android:layout_marginBottom="20dp"
            android:layout_weight="1"
            android:background="@mipmap/logo" />

    </LinearLayout>
</LinearLayout>

3.page3.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    >

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@mipmap/page3"
        android:gravity="center|bottom"
        android:layout_weight="20"
        android:orientation="vertical">

        <Button
            android:id="@+id/btn_start"
            android:layout_width="130dp"
            android:layout_height="wrap_content"
            android:layout_marginBottom="50dp"
            android:background="@color/purple_200"
            android:text="开始使用"
            android:textColor="@color/black"
            android:textSize="20sp" />
    </LinearLayout>

    <ImageView
        android:layout_gravity="center"
        android:layout_marginTop="30dp"
        android:layout_width="100dp"
        android:layout_height="90dp"
        android:layout_marginBottom="17dp"
        android:layout_weight="1"
        android:background="@mipmap/logo" />
</LinearLayout>

在这里插入图片描述

第二步:创建适配器GuideAdapter

public class GuideAdapter extends PagerAdapter {
    private Context context;
    private List<View> views;

    public GuideAdapter(Context context, List<View> views) {
        this.context = context;
        this.views = views;
    }

    @Override
    public int getCount() {
        return views.size();
    }

    @Override
    public boolean isViewFromObject(@NonNull View view, @NonNull Object object) {
        return view==object;
    }

    @NonNull
    @Override
    public Object instantiateItem(@NonNull ViewGroup container, int position) {
        View item = views.get(position);
        container.addView(item);
        return item;
    }

    @Override
    public void destroyItem(@NonNull ViewGroup container, int position, @NonNull Object object) {
        ((ViewPager) container).removeView(views.get(position));
    }
}

第三步:创建引导页原点

1.activity_guide.xml

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    >

    <androidx.viewpager.widget.ViewPager
        android:id="@+id/pager"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        />

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_gravity="center"
        android:layout_marginBottom="100dp"
        android:orientation="horizontal"
        >
    <ImageView
        android:layout_gravity="bottom|center"
        android:id="@+id/point1"
        android:layout_width="10dp"
        android:layout_height="10dp"
        android:src="@drawable/shape_point_off"
        android:layout_marginLeft="160dp"
        />
    <ImageView
        android:layout_gravity="bottom|center"
        android:id="@+id/point2"
        android:layout_width="10dp"
        android:layout_height="10dp"
        android:src="@drawable/shape_point_off"
        android:layout_marginLeft="20dp"
        />
    <ImageView
        android:layout_gravity="bottom|center"
        android:id="@+id/point3"
        android:layout_width="10dp"
        android:layout_height="10dp"
        android:src="@drawable/shape_point_off"
        android:layout_marginLeft="20dp"
        />
    </LinearLayout>
</FrameLayout>

在这里插入图片描述

  • shape_point_off:
- <?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <solid android:color="#aaaaaa"/>
    <corners android:radius="10dp"/>
    <stroke android:width="0.5dp" android:color="#787878"/>
</shape>
  • shape_point_on
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <solid android:color="#aa00bb"/>
    <corners android:radius="10dp"/>
    <stroke android:width="0.5dp"
        android:color="#787878"/>
</shape>

2.GuideActivity.java

public class GuideActivity extends AppCompatActivity {
    private ViewPager pager;
    private List<View> views=new ArrayList<>();//引导页视图
    private View view1,view2,view3;
    private ImageView point1,point2,point3;
    private Button btnStart;
    private GuideAdapter adapter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_guide);

        initView();

        eventHandling();
    }
    private void eventHandling() {
        btnStart.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent intent=new Intent(GuideActivity.this, LoginActivity.class);
                startActivity(intent);
            }
        });

        pager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
            @Override
            public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
            }

            @Override
            public void onPageSelected(int position) {
                switch (position){
                    case 0:
                        point1.setImageResource(R.drawable.shape_point_on);
                        point2.setImageResource(R.drawable.shape_point_off);
                        point3.setImageResource(R.drawable.shape_point_off);
                        break;
                    case 1:
                        point1.setImageResource(R.drawable.shape_point_off);
                        point2.setImageResource(R.drawable.shape_point_on);
                        point3.setImageResource(R.drawable.shape_point_off);
                        break;
                    case 2:
                        point1.setImageResource(R.drawable.shape_point_off);
                        point2.setImageResource(R.drawable.shape_point_off);
                        point3.setImageResource(R.drawable.shape_point_on);
                        break;
                }
            }

            @Override
            public void onPageScrollStateChanged(int state) {
            }
        });

    }

    private void initView() {
        point1 = findViewById(R.id.point1);
        point2 = findViewById(R.id.point2);
        point3 = findViewById(R.id.point3);
        pager = findViewById(R.id.pager);

        //获取引导页视图
        view1 = LayoutInflater.from(this).inflate(R.layout.page1,null);
        view2 = LayoutInflater.from(this).inflate(R.layout.page2,null);
        view3 = LayoutInflater.from(this).inflate(R.layout.page3,null);

        btnStart = view3.findViewById(R.id.btn_start);

        //添加到引导视图
        views.add(view1);
        views.add(view2);
        views.add(view3);

        adapter = new GuideAdapter(this,views);//传入列表

        pager.setAdapter(adapter);
        point1.setImageResource(R.drawable.shape_point_on);

    }
}

在这里插入图片描述

二、 ViewPager(2)实现引导页

第一步:创建三个xml

1.guid_1.xml

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:background="@mipmap/guid3"
    tools:context=".guid.OnboardingActivity">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="400dp"
        android:layout_gravity="bottom"
        android:background="@drawable/guid_bg"
        android:orientation="vertical"
        >
        <ImageView
            android:id="@+id/imageView"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="20dp"
            android:src="@mipmap/logo"/>

        <TextView
            android:id="@+id/textView"
            android:gravity="center"
            android:textSize="24dp"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:textColor="@color/black"
            android:layout_marginTop="20dp"
            android:text="Welcome to Keep-Fit"/>

        <TextView
            android:id="@+id/textView2"
            android:gravity="center_horizontal"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_margin="20dp"
            android:text="keep-fit has workouts on demand that you can find based on how much you have"
            />
    </LinearLayout>
    <Button
        android:id="@+id/btn_jump"
        android:layout_gravity="bottom|center_horizontal"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="@drawable/btn_bg"
        android:textColor="@color/white"
        android:text="Start Training"
        android:layout_marginBottom="20dp"
        android:visibility="invisible"
        android:padding="10dp"
        />
        </FrameLayout>

在这里插入图片描述

2.guid_2.xml

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:background="@mipmap/guid2"
    tools:context=".guid.OnboardingActivity">

   <LinearLayout
       android:layout_width="match_parent"
       android:layout_height="400dp"
       android:layout_gravity="bottom"
       android:background="@drawable/guid_bg"
       android:orientation="vertical">

       <ImageView
           android:layout_marginTop="20dp"
           android:id="@+id/imageView"
           android:layout_width="match_parent"
           android:layout_height="wrap_content"
           android:src="@mipmap/logo"
           />
       <TextView
           android:id="@+id/textView"
           android:layout_width="match_parent"
           android:layout_height="wrap_content"
           android:text="Workout CateGories"
           android:gravity="center"
           android:textSize="24sp"
           android:layout_marginTop="20dp"
           android:textColor="@color/black"
           />
       <TextView
           android:id="@+id/textView2"
           android:layout_width="match_parent"
           android:layout_height="wrap_content"
           android:layout_margin="20dp"
           android:gravity="center_horizontal"
           android:text="workout categories will help you gain strength,get in better shape and embrace"
            />
   </LinearLayout>
    <Button
        android:id="@+id/btn_jump"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="bottom|center_horizontal"
        android:background="@drawable/btn_bg"
        android:layout_marginBottom="20dp"
        android:textColor="@color/white"
        android:text="Start Training"
        android:visibility="invisible"
        android:padding="10dp"
        />
</FrameLayout>

3.guid_3.xml

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:background="@mipmap/guid1"
    >
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="400dp"
        android:layout_gravity="bottom"
        android:background="@drawable/guid_bg"
        android:orientation="vertical">

        <ImageView
            android:id="@+id/imageView"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:src="@mipmap/logo"
            android:layout_marginTop="20dp"/>

        <TextView
            android:id="@+id/textView"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="Custom Workouts"
            android:textSize="24sp"
            android:textColor="@color/black"
            android:gravity="center"
            />
        <TextView
            android:id="@+id/textView2"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:gravity="center_horizontal"
            android:layout_margin="20dp"
            android:text="keep-fit has workouts on demand that you can find based on how much have"
            />
    </LinearLayout>
    <Button
        android:id="@+id/btn_jump"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="bottom|center_horizontal"
        android:layout_marginBottom="20dp"
        android:textColor="@color/white"
        android:background="@drawable/btn_bg"
        android:padding="10dp"
        android:visibility="invisible"
        android:text="Strat Traiining"
        android:textAllCaps="false"/>
</FrameLayout>

在这里插入图片描述

4.btn_bg.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <corners android:radius="20dp"/>
    <solid android:color="#2196F3"/>
    <stroke android:color="#F4EEEE" android:width="1dp"/>
</shape>

5.guide_bg.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<corners android:topLeftRadius="50dp" android:topRightRadius="50dp"/>
    <solid android:color="#aaaaaa"/>
</shape>

第二步:创建适配器GuideAdapter

public class GuidePageAdapter extends PagerAdapter {
    private  List<View> viewList;

    public GuidePageAdapter(List<View> viewList) {
        this.viewList = viewList;
    }

    @Override
    public int getCount() {
        return viewList.size();
    }

    @Override
    public boolean isViewFromObject(@NonNull View view, @NonNull Object object) {
        return view==object;
    }

    @NonNull
    @Override
    public Object instantiateItem(@NonNull ViewGroup container, int position) {
        container.addView(viewList.get(position));
        return viewList.get(position);
    }

    @Override
    public void destroyItem(@NonNull ViewGroup container, int position, @NonNull Object object) {
        container.removeView(viewList.get(position));
    }
}

第三步:创建圆点页 activity_onboarding.xml

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".guid.OnboardingActivity">

    <androidx.viewpager.widget.ViewPager
        android:id="@+id/vg_pages"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
       />
    <RadioGroup
        android:id="@+id/vg_tags"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="bottom|center_horizontal"
        android:orientation="horizontal"
        android:layout_marginBottom="100dp"
        >
    <RadioButton
        android:id="@+id/radioButton"
        android:layout_width="20dp"
        android:layout_height="20dp"
        android:layout_marginRight="10dp"
        android:background="@drawable/rg_tags_selector"
        android:button="@null"/>

        <RadioButton
            android:id="@+id/radioButton1"
            android:layout_width="20dp"
            android:layout_height="20dp"
            android:layout_marginRight="10dp"
            android:background="@drawable/rg_tags_selector"
            android:button="@null"/>
        <RadioButton
            android:id="@+id/radioButton2"
            android:layout_width="20dp"
            android:layout_height="20dp"
            android:layout_marginRight="10dp"
            android:background="@drawable/rg_tags_selector"
            android:button="@null"/>
    </RadioGroup>
</FrameLayout>

在这里插入图片描述

  • rg_tags_selector
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_checked="true" android:drawable="@drawable/select_bg"/>
    <item android:drawable="@drawable/normal_bg"/>
</selector>
  • normal_bg
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="oval"
    >
    <solid android:color="#DDDDDD"/>
</shape>

第四步:创建圆点页onboarding.Java

public class OnboardingActivity extends AppCompatActivity {
    private List<View> viewList = new ArrayList<>();
    private ViewPager viewPager;
    RadioGroup vg_tags;
    GuidePageAdapter adapter;


    @SuppressLint("MissingInflatedId")
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_onboarding);

        viewPager = findViewById(R.id.vg_pages);
        vg_tags = findViewById(R.id.vg_tags);
        View view = View.inflate(this,R.layout.guid_1,null);
        viewList.add(view);
        view = View.inflate(this,R.layout.guid_2,null);
        viewList.add(view);
        view =View.inflate(this,R.layout.guid_3,null);

        Button btn_jump = view.findViewById(R.id.btn_jump);//得到第三页的视图id
        btn_jump.setVisibility(View.VISIBLE);//在第三页显示按钮
        btn_jump.setOnClickListener(new View.OnClickListener() {//设置按钮的监听事件
            @Override
            //设置引导页只打开一次
            public void onClick(View view) {
               SharedPreferences sharedPreferences = getSharedPreferences("t",MODE_PRIVATE);
               SharedPreferences.Editor editor = sharedPreferences.edit();
               editor.putBoolean("f",false);
               editor.apply();
               Intent intent = new Intent(OnboardingActivity.this,SignInActivity.class);
               startActivity(intent);
            }
        });
        viewList.add(view);
        adapter = new GuidePageAdapter(viewList);
        viewPager.setAdapter(adapter);

        //默认进去为选中状态
        RadioButton radioButton = (RadioButton) vg_tags.getChildAt(0);
        radioButton.setChecked(true);


        viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
            @Override
            public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

            }

            @Override
            public void onPageSelected(int position) {
                RadioButton radioButton= (RadioButton) vg_tags.getChildAt(position);
                radioButton.setChecked(true);
            }

            @Override
            public void onPageScrollStateChanged(int state) {

            }
        });
    }
}

在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/85326.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

[附源码]Node.js计算机毕业设计电影售票管理系统Express

项目运行 环境配置&#xff1a; Node.js最新版 Vscode Mysql5.7 HBuilderXNavicat11Vue。 项目技术&#xff1a; Express框架 Node.js Vue 等等组成&#xff0c;B/S模式 Vscode管理前后端分离等等。 环境需要 1.运行环境&#xff1a;最好是Nodejs最新版&#xff0c;我…

Docker中的bridge模式,可以这么设置

最近有几个已经就业的小伙伴&#xff0c;过来问千锋健哥关于Docker网络配置的问题&#xff0c;他们在实际开发中还是有些疑问。关于Docker网络这一块的内容确实很多&#xff0c;为了让大家搞清楚这个问题&#xff0c;健哥准备搞几篇系列文章&#xff0c;来为各位小伙伴解惑。这…

小游戏开发者流量变现指南

2018年微信在其6.6.1版本中宣布支持小游戏&#xff0c;之后的几年&#xff0c;但凡能掀起各大社交平台上病毒式传播的&#xff0c;几乎都是小游戏。 小游戏玩法简单&#xff0c;传播机制简单&#xff0c;套路简单&#xff0c;连赚钱的本质也简单。就拿近期火爆的《羊了个羊》小…

程序员也可以很浪漫,精选10个圣诞节特效及源码

最近离圣诞节不远了、整理了一些关于圣诞相关的前端特效网页设计和小游戏的代码送大家、直接上效果吧。 代码过长的 可预览获取 圣诞节快乐 - 文字渐入动画 <body><svg viewport"0 0 300 300"><text class"Merry" x"150" y&qu…

货淋室及货通道维护要点有哪些

货淋室及货淋通道维护要点&#xff0c;货淋室是货物进入洁净室所必需的通道&#xff0c;它可以减少货物进出洁净室所带来的污染问题。 货淋室及货淋通道维护要点&#xff1a; 1、定期使用仪器测定设备的各项技术指标&#xff0c;如不符合技术参数要求应及时予以处理。 2、根…

高低jdk版本中jndi注入(下)

目录 0x01 绕过高版本JDK&#xff08;8u191&#xff09;限制 如下两种绕过方式&#xff1a; 0x02 利用本地恶意Class作为Reference Factory 2.1 攻击利用 1. 服务端 2. 服务端 2.2 几种变体的表达式 调试分析 小结 0x03 利用LDAP返回序列化数据&#xff0c;触发本地Gadg…

nacos--基础--5.1--集成--SpringCloud--配置管理、服务发现、服务注册

nacos–基础–5.1–集成–SpringCloud–配置管理、服务发现、服务注册 代码位置 https://gitee.com/DanShenGuiZu/learnDemo/tree/master/nacos-learn/nacos-spring-cloud1、介绍 主要面向 Spring 的使用者通过2个实例&#xff0c;来介绍nacos和Spring的集成 配置管理服务注册…

运行时发现文件路径输出404

运行时发现文件路径输出404 tomcat不能显示中文原因主要是编码的问题&#xff0c; 因为Tomcat5的http Connector所用的URI解码默认用的是 ISO-8859-1&#xff0c; 而一般浏览器默认用的发送编码为UTF-8&#xff0c;这样问题就出现了&#xff0c; 初步的解决方法如下&#xff1a…

Mentor-dft 学习笔记 day40-Basic Test Data Formats for Patterns

Reduce Serial Loading Simulation Time with Sampling 使用write_patterns命令时&#xff0c;可以使用-sample开关保存完整pattern集的样本。这将减少pattern文件中的pattern数量&#xff0c;从而减少模拟时间。此外&#xff0c;-Sample开关允许您控制样本中包含的每种类型的p…

回归预测 | MATLAB实现WOA-BiLSTM鲸鱼算法优化双向长短期记忆神经网络多输入单输出航空寿命数据回归预测

✅作者简介&#xff1a;热爱科研的Matlab仿真开发者&#xff0c;修心和技术同步精进&#xff0c;matlab项目合作可私信。 &#x1f34e;个人主页&#xff1a;Matlab科研工作室 &#x1f34a;个人信条&#xff1a;格物致知。 更多Matlab仿真内容点击&#x1f447; 智能优化算法 …

ADI Blackfin DSP处理器-BF533的开发详解48:图像处理专题-Rotation (图像旋转处理)(含源码)

硬件准备 ADSP-EDU-BF533&#xff1a;BF533开发板 AD-HP530ICE&#xff1a;ADI DSP仿真器 软件准备 Visual DSP软件 硬件链接 功能介绍 代码实现了图像旋转处理&#xff0c;代码运行时&#xff0c;会通过文件系统打开工程文件根目下" …/ImageView"路径中的 tes…

【OpenCV-Python】教程:5-1 背景减法

OpenCV Python 背景减法 【目标】 读视频与显示视频创建背景模型与更新背景模型 【概述】 背景相减&#xff08;BS&#xff09;是一种常用且广泛使用的技术&#xff0c;用于通过使用静态相机来生成前景掩模&#xff08;即&#xff0c;包含属于场景中运动对象的像素的二值图…

UEFI固件使用OpenSSL暴露了软件材料清单(SBOM)

Binarly REsearch团队近日深入研究了最近的OpenSSL安全更新给UEFI固件供应链生态系统带来怎样的影响以及OpenSSL版本在固件环境中是如何广泛使用的。研究结果不容乐观。 科技行业正在积极讨论使用“软件材料清单”&#xff08;SBOM&#xff09;来化解供应链安全风险。为了确保…

前端面试常考 | js闭包

文章目录一. 闭包1. 介绍闭包2. 闭包的作用3. 闭包与变量二. 闭包引起的内存泄漏1. 闭包是如何引起内存泄漏的2. 如何解决闭包引起的内存泄漏三. 最后一. 闭包 1. 介绍闭包 有不少开发人员总是搞不清楚匿名函数与闭包两个概念&#xff0c;因此经常混用。同时闭包也是我们前端…

我见过最好的天线基础知识

天线作为无线电的发射和接收设备是影响信号强度和质量的重要设备,其在移动通信领域的重要性非常关键。通过对天线选型,天 线安装,天线调整从而保障基站覆盖区域的信号强度与质量。对其的 掌握程度是网规与网优工程师的技能基本要求之一。下文重点说明天线要掌握哪些方面及其原理…

版本控制 | 如何将 UnrealGameSync 与 Perforce Helix Core 结合使用

为了帮助虚幻引擎4和虚幻引擎5的开发&#xff0c;Epic公司开发了UnrealGameSync&#xff0c;使其与版本控制工具Perforce Helix Core交互。虽然UnrealGameSync除了P4V (Helix Core客户端)之外还有许多功能&#xff0c;但主要用途是分发内部引擎和项目构建&#xff0c;它极大地简…

springboot+vue

一、案例结构 用springboot做后端接口&#xff0c;采用restful风格。用vue-cli来创建前端项目&#xff0c;通过axios进行前后端交互。来实现用户的增删改查操作。二、效果图 点击修改&#xff1a; 点击添加&#xff1a; 三、服务器端 控制层代码&#xff1a; package com.ex…

【Tryhackme】dogcat(LFI+文件解析漏洞,Docker逃逸)

免责声明 本文渗透的主机经过合法授权。本文使用的工具和方法仅限学习交流使用&#xff0c;请不要将文中使用的工具和渗透思路用于任何非法用途&#xff0c;对此产生的一切后果&#xff0c;本人不承担任何责任&#xff0c;也不对造成的任何误用或损害负责。 服务发现 ┌──(r…

CentOS7.4安装教程

CentOS7.4安装教程&#xff1a; centos系统自行网上查找链接下载&#xff0c;我使用的是最小安装版本&#xff0c;搞服务器用 1、进入操作系统&#xff0c;选择第一项进行安装&#xff1a; 2、耐心等待&#xff0c;直到弹出这个界面&#xff1a; 3、下拉选择中文&#xf…

磷脂-荧光素标记DSPE-FITC磷脂改性荧光素

磷脂-荧光素标记DSPE-FITC磷脂改性荧光素 中文名称&#xff1a;荧光素标记二硬脂酰磷脂酰乙醇胺 中文别称&#xff1a;磷脂-荧光素标记&#xff1b;二硬脂酰磷脂酰乙醇胺改性荧光素 英文名称&#xff1a;18:0 PE Fluorescein 英文别称&#xff1a;DSPE-FITC 外观&#xff1a…