AndroidStudio-常见界面控件

news2024/12/27 12:12:03

一、Button

package com.example.review01

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.widget.Button
import android.widget.TextView

class Review01Activity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_review01)
        
        val button = findViewById<Button>(R.id.btn_01)
        button.setOnClickListener{
            button.text = "按钮被点击"
        }

    }
}

另一种实现方法:

package com.example.review01

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.view.View
import android.widget.Button
import android.widget.TextView

class Review01Activity : AppCompatActivity(), View.OnClickListener {
    lateinit var button: Button
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_review01)

        button = findViewById(R.id.btn_01)
        button.setOnClickListener(this)
    }

    override fun onClick(v: View?) {
        if(v != null){
            when (v.id) {
                R.id.btn_01 -> {
                    button.text = "按钮被点击"
                }
                else -> {
                }
            }
        }
    }
}

二、EditView

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout 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"
    tools:context=".Review03Activity">
    
    <EditText
        android:id="@+id/edit_name"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:hint="请输入账号"
        android:textSize="17sp"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        tools:ignore="MissingConstraints" />

    <EditText
        android:id="@+id/edit_password"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:hint="请输入密码"
        android:inputType="numberPassword"
        android:textSize="17sp"
        app:layout_constraintTop_toBottomOf="@+id/edit_name"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        tools:ignore="MissingConstraints" />

</androidx.constraintlayout.widget.ConstraintLayout>
package com.example.review01

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.widget.EditText

class Review03Activity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_review03)

        val edit_name = findViewById<EditText>(R.id.edit_name)
        edit_name.text
    }
}

三、ImageView

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout 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"
    tools:context=".Review04Activity">

    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:src="@drawable/sgqt01"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintEnd_toEndOf="parent"/>

</androidx.constraintlayout.widget.ConstraintLayout>

四、RadioButton

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout 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"
    tools:context=".Review05Activity">

    <RadioGroup
        android:id="@+id/rbtn_group"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        tools:ignore="MissingConstraints">
        <RadioButton
            android:id="@+id/rbtn_01"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="男"/>
        <RadioButton
            android:id="@+id/rbtn_02"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="女"/>

    </RadioGroup>


</androidx.constraintlayout.widget.ConstraintLayout>
package com.example.review01

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.widget.RadioButton

class Review05Activity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_review05)

        val rbtn_1 = findViewById<RadioButton>(R.id.rbtn_01)
        rbtn_1.setOnCheckedChangeListener { compoundButton,b ->
            println(compoundButton.id)
            println(R.id.rbtn_01)
            println(b)
        }
    }
}

五、CheckBox

<?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">

    <TextView
        android:id="@+id/tv_cb"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="请选择你的兴趣爱好"/>
    <CheckBox
        android:id="@+id/cb_01"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="舞蹈"/>
    <CheckBox
        android:id="@+id/cb_02"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="表演"/>
    <CheckBox
        android:id="@+id/cb_03"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="音乐"/>

</LinearLayout>
package com.example.review01

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.widget.CheckBox
import android.widget.TextView

class Review07Activity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_review07)

        val cb_1 = findViewById<CheckBox>(R.id.cb_01);
        val cb_2 = findViewById<CheckBox>(R.id.cb_02);
        val cb_3 = findViewById<CheckBox>(R.id.cb_03);
        val textView = findViewById<TextView>(R.id.tv_cb)

        cb_1.setOnCheckedChangeListener { compoundButton, b ->
            if (b) textView.text = "你选择了${compoundButton.text}"
        }
        cb_2.setOnCheckedChangeListener { compoundButton, b ->
            if (b) textView.text = "你选择了${compoundButton.text}"
        }
        cb_3.setOnCheckedChangeListener { compoundButton, b ->
            if (b) textView.text = "你选择了${compoundButton.text}"
        }
    }
}

六、Toast

安卓中的Toast是一种简单的用户界面提示工具,用于在屏幕上显示短暂的消息。它通常用于向用户显示一些短暂的信息,比如操作成功、警告或者错误提示。Toast消息会以浮动窗口的形式出现在屏幕上方或下方,持续一段时间后自动消失,不会打断用户的操作。Toast通常用于在应用程序中提供一种简单的反馈机制。

<?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">

    <TextView
        android:id="@+id/tv_cb"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="请选择你的兴趣爱好"/>
    <CheckBox
        android:id="@+id/cb_01"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="舞蹈"/>
    <CheckBox
        android:id="@+id/cb_02"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="表演"/>
    <CheckBox
        android:id="@+id/cb_03"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="音乐"/>

</LinearLayout>
package com.example.review01

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.widget.CheckBox
import android.widget.TextView
import android.widget.Toast

class Review08Activity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_review08)

        val cb_1 = findViewById<CheckBox>(R.id.cb_01)
        val cb_2 = findViewById<CheckBox>(R.id.cb_02)
        val cb_3 = findViewById<CheckBox>(R.id.cb_03)
        val textView = findViewById<TextView>(R.id.tv_cb)

        cb_1.setOnCheckedChangeListener { compoundButton, b ->
            if(b)
                Toast.makeText(this,compoundButton.text,Toast.LENGTH_SHORT).show()
        }
    }
}

七、AlertDialog

1.普通对话框

安卓中的AlertDialog是一个常用的对话框组件,用于在应用程序中浮动显示一些信息、进行简单的交互或者请求用户确认某些操作。它通常包含一个图标和标题、一个消息内容和一些按钮选项,比如确认、取消等。开发者可以使用AlertDialog来向用户展示信息,例如警告、错误提示或者确认对话框等。

package com.example.review01

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import androidx.activity.OnBackPressedCallback
import androidx.appcompat.app.AlertDialog

class Review09Activity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_review09)

        val backPressedDispatcher = this.onBackPressedDispatcher
        //创建一个onBackPressedCallback
        val callback = object :OnBackPressedCallback(true){
            override fun handleOnBackPressed() {
                //创建AlterDialog.Builder 实例
                runOnUiThread {
                    val builder = AlertDialog.Builder(this@Review09Activity)
                    //设置对话框标题和消息
                    builder.setTitle("普通对话框")
                        .setMessage("是否退出应用?")
                        .setPositiveButton("确定") { dialog, which ->
                            dialog.dismiss()
                            this@Review09Activity.finish()
                        }
                        .setNegativeButton("取消"){dialog,which ->
                            dialog.dismiss()
                        }
                    //创建并显示AlterDialog
                    val dialog = builder.create()
                    dialog.show()
                }
                }
        }
        //将OnBackPressedCallback添加到OnBackPressedDispatcher
        backPressedDispatcher.addCallback(callback)
    }
}

应该是显示这样一个对话框但是我的没有显示。。。

2.单选对话框

单选对话框提供单选项目,如下所示,点击单选框后修改字体大小

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".Review10Activity">

    <TextView
        android:id="@+id/tv_dialog"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Hello World"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        tools:ignore="MissingConstraints" />

    <Button
        android:id="@+id/btn_dialog"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="按钮"
        android:textSize="17sp"
        app:layout_constraintTop_toBottomOf="@+id/tv_dialog"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        tools:ignore="MissingConstraints" />

  </androidx.constraintlayout.widget.ConstraintLayout>
package com.example.review01

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.widget.Button
import android.widget.TextView
import androidx.appcompat.app.AlertDialog

class Review10Activity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_review10)

        val btn = findViewById<Button>(R.id.btn_dialog)
        val tv = findViewById<TextView>(R.id.tv_dialog)

        btn.setOnClickListener {
            val builder = AlertDialog.Builder(this)

            val items = arrayOf("小号","中号","大号")
            builder.setTitle("单选对话框")
                .setSingleChoiceItems(items,-1) { dialog,which ->
                    btn.textSize = (which + 1) * 15f
                    tv.textSize = (which + 1) * 15f
                    dialog.dismiss() //关闭对话框
                }
            val dialog = builder.create()
            dialog.show()
        }
    }
}

builder.setSingleChoiceItems 用于设置一个单选列表,用户可以从中选择一个项。第一个参数是列表项,第二个参数是默认选中的项(这里是 -1,表示没有默认选中任何项),第三个参数是选择项时的监听器。

在回调函数中,我们根据选中的项 which 设置按钮和文本视图的字体大小,计算公式是 (which + 1) * 15f。这样,选择第一个选项时字体大小是 15f,第二个是 30f,第三个是 45f

dialog.dismiss() 会关闭对话框。

3.复选对话框

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".Review10Activity">

    <TextView
        android:id="@+id/tv_dialog"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Hello World"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        tools:ignore="MissingConstraints" />

    <Button
        android:id="@+id/btn_dialog"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="按钮"
        android:textSize="17sp"
        app:layout_constraintTop_toBottomOf="@+id/tv_dialog"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        tools:ignore="MissingConstraints" />

</androidx.constraintlayout.widget.ConstraintLayout>
package com.example.review01

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.widget.Button
import android.widget.TextView
import androidx.appcompat.app.AlertDialog

class Review12Activity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_review12)
        val btn = findViewById<Button>(R.id.btn_dialog)
        val tv = findViewById<TextView>(R.id.tv_dialog)

        btn.setOnClickListener {
            val builder = AlertDialog.Builder(this)
            val items = arrayOf("阅读","唱歌","跳舞","戏曲")
            val checkedItems = booleanArrayOf(false,false,false,false)
            builder.setTitle("复选对话框").setMultiChoiceItems(items,checkedItems){ dialog,which,isChecked ->
                checkedItems[which] = isChecked
            }.setPositiveButton("确定") { dialog,which ->
                var hobby = "您的爱好是:"
                for (i in items.indices){
                    if (checkedItems[i]) {
                        hobby += items[i] + " "
                    }
                }
                tv.text = hobby
                dialog.dismiss()
            }
            val dialog = builder.create()
            dialog.show()
        }
    }
}

八、ListView

安卓中的ListView是一种常用的UI组件,用于在应用中展示可滚动的列表数据,允许用户通过滑动屏幕来查看列表中的项目,并且可以在列表中显示复杂的数据。ListView可以以垂直或水平方向滚动,并且可以自定义每个列表项的外观和行为。 通常,ListView与Adapter结合使用,Adapter负责将数据绑定到ListView上,以便正确显示列表项。 在较新的安卓开发中,RecyclerView通常被认为是更灵活和性能更好的选择,尤其是在处理大量数据或需要更复杂布局的情况下。

ListView必须通过适配器才能添加数据,适配器是ListView和数据之前的桥梁。这么做的目的是为了能够实现视图和数据的分离。有三种常用的Adapter:

1.BaseAdapter

一个抽象类,需要自定义一个子类来实现它,并实现一系列抽象方法来定义数据源和列表项的展示逻辑:

getCount(): 返回适配器中数据项的总数

getItem(int position): 返回指定位置的数据项

getItemId(int position): 返回指定位置的数据项的唯一标识符

getView(int position, View convertView, ViewGroup parent): 创建或获取指定位置的列表项视图。用于将数据绑定到视图上,并返回给列表进行显示。

2、3.SimpleAdapter和ArrayAdapter:

SimpleAdapter相对较为简单,适用于简单的列表数据展示,但对于复杂的列表项布局和交互较难满足。ArrayAdapter更灵活,可以直接将数组或List中的数据绑定到ListView,更方便地控制列表项的显示和交互。

SimpleAdapter适用于将不同类型的数据以键值对的形式展示在ListView中,例如将文本、图像等混合展示在列表项中。ArrayAdapter适用于将单一类型的数据集合(例如字符串、对象等)展示在ListView中。

以ArrayAdapter为例,展示如何通过其连接数据和ListView:                                                           1)确定要展示的数据,即stringList                                                                                               2)通过数据、adapter中每个项目的视图、上下文创建Adapter对象

注: ArrayAdapter默认使用的布局文件是系统提供的简单列表项布局 android.R.layout.simple_list_item_1,只包含一个 TextView 用于显示文本。如果需要展示复杂的效果,需要自行编写xml布局文件。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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"
    tools:context=".Review13Activity">

    <ListView
        android:id="@+id/lv"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:listSelector="#fefefe"
        android:scrollbars="none"/>

</LinearLayout>
package com.example.review01

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.widget.ArrayAdapter
import android.widget.ListView

class Review13Activity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_review13)

        val lv = findViewById<ListView>(R.id.lv)
        //创建一个字符串列表
        val stringList = listOf("蒋敦豪","鹭卓","李耕耘","李昊","赵一博","卓沅","赵小童","何浩楠","陈少熙","王一珩")
        //创建ArrayAdapter将字符串列表与ListView相连接
        val adapter = ArrayAdapter(this,android.R.layout.simple_list_item_1,stringList)
        lv.adapter = adapter
    }
}

九、RecyclerView

RecyclerView是安卓中用于展示大量数据的高性能列表控件,是ListView的升级版。相比于ListView,RecyclerView更加灵活、高效,提供了更多的定制和扩展功能。

灵活的布局管理器(LayoutManager):RecyclerView允许开发者使用不同的布局管理器来控制列表项的排列方式,例如垂直列表、水平列表、网格布局等,这使得RecyclerView适用于各种不同的布局需求。

ViewHolder模式:RecyclerView使用了ViewHolder模式来重用列表项视图,这样可以大大提高列表性能,避免频繁创建和销毁视图。

局部刷新:RecyclerView支持局部刷新,可以针对列表中的某一项或某几项进行刷新,而不需要刷新整个列表,提高了刷新效率。

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".Review14Activity">

    <androidx.recyclerview.widget.RecyclerView
        android:id="@+id/lv"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>

  </androidx.constraintlayout.widget.ConstraintLayout>
package com.example.review01

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.ImageView
import android.widget.TextView
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
import com.example.homework03.Item

data class Item(val text:String ,val imageResourse:Int)

class Review14Activity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_review14)

        val itemList = listOf(
            Item("蒋敦豪",R.drawable.jdh),
            Item("鹭卓",R.drawable.lz),
            Item("李耕耘",R.drawable.lgy),
            Item("李昊",R.drawable.lh),
            Item("赵一博",R.drawable.zyb),
            Item("卓沅",R.drawable.zy),
            Item("赵小童",R.drawable.zxt),
            Item("何浩楠",R.drawable.hhn),
            Item("陈少熙",R.drawable.csx),
            Item("王一珩",R.drawable.wyh)
        )
        val recyclerView: RecyclerView = findViewById(R.id.lv)
        val layoutManager = LinearLayoutManager(this)
        val adapter = MyAdapter(itemList)
        recyclerView.layoutManager = layoutManager
        recyclerView.adapter = adapter
    }

    class MyAdapter(private val items: List<Item>) : RecyclerView.Adapter<MyAdapter.ViewHolder>() {

        inner class ViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
            val textView: TextView = itemView.findViewById(com.example.homework03.R.id.test52_tv)
            val imageView: ImageView = itemView.findViewById(com.example.homework03.R.id.test52_iv)
        }

        override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
            // 使用新的布局文件 item_layout.xml
            val view = LayoutInflater.from(parent.context).inflate(com.example.homework03.R.layout.item_layout, parent, false)
            return ViewHolder(view)
        }

        override fun onBindViewHolder(holder: ViewHolder, position: Int) {
            val item = items[position]
            holder.textView.text = item.text
            holder.imageView.setImageResource(item.img)
        }

        override fun getItemCount(): Int {
            return items.size
        }
    }

}

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

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

相关文章

【SpringMVC】参数传递 重定向与转发 REST风格

文章目录 参数传递重定向与转发REST风格 参数传递 ModelAndView&#xff1a;包含视图信息和模型数据信息 public ModelAndView index1(){// 返回页面ModelAndView modelAndView new ModelAndView("视图名");// 或// ModelAndView modelAndView new ModelAndView(…

Vue网页屏保

Vue网页屏保 在vue项目中&#xff0c;如果项目长时间未操作需要弹出屏幕保护程序&#xff0c;以下为网页屏保效果&#xff0c;看板内容为连接的资源。 屏保组件 <template><div v-if"isActive" class"screensaver" click"disableScreens…

计算机网络复习5——运输层

运输层解决的是进程之间的逻辑通信问题 两个主机进行通信归根结底是两个主机中的应用程序互相通信&#xff0c;又称为“端到端的通信” 端口 运行在计算机中的进程是用进程标识符来标志的。但不同的操作系统标识进程的方法不统一&#xff0c;因特网重新以统一的方法对TCP/IP…

qtcanpool 知 10:包管理雏形

文章目录 前言痛点转机雏形实践后语 前言 曾听闻&#xff1a;C/Qt 没有包管理器&#xff0c;开发起来太不方便。这是一个有过 node.js 开发经验的人对 Qt 的吐槽。 确实&#xff0c;像 python、golang、node.js 这些编程语言都有包管理器&#xff0c;给用户带来了极佳的开发体…

ASP.NET Core 9.0 静态资产传递优化 (MapStaticAssets )

一、结论 &#x1f4a2;先看结论吧&#xff0c; MapStaticAssets 在大多数情况下可以替换 UseStaticFiles&#xff0c;它已针对为应用在生成和发布时了解的资产提供服务进行了优化。 如果应用服务来自其他位置&#xff08;如磁盘或嵌入资源&#xff09;的资产&#xff0c;则应…

LeetCode 力扣 热题 100道(十五)搜索插入位置(C++)

给定一个排序数组和一个目标值&#xff0c;在数组中找到目标值&#xff0c;并返回其索引。如果目标值不存在于数组中&#xff0c;返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 代码如下所示&#xff1a; class Solution { public:int searchIns…

WPF+LibVLC开发播放器-音量控制和倍速控制

界面 界面上增加音量的控件和倍速控制控件 音量控制 主要也是一个Slider进度条控件来实现音量调节 我们这里设置默认的最大值为100&#xff0c;默认Value值也为100&#xff0c;默认声音开到最大 这里目前完全由前端控制音量调节&#xff0c;可以直接使用ValueChanged事件实…

Vue3技术开发,使用纯CSS3动手制作一个3D环绕的相册展示效果,支持传入任意图片.3D轮播相册的组件

主要讲述封装一个3D轮播相册的组件&#xff0c;效果图如下&#xff0c;仅仅传入一个图片的数组即可&#xff0c;效果如下&#xff1a; 使用Vue3技术开发&#xff0c;支持传入任意张数的图片。 使用方法 <template><Swiper :list"list" /> </templat…

python怎么将字母大写

Python中有三种将字母转换为大写的方法&#xff1a;upper()、capitalize()、title()。 下面通过实例给大家介绍具体用法&#xff1a; str "www.php.com" print(str.upper()) # 把所有字符中的小写字母转换成大写字母 print(str.lower()) # 把所有字…

将vscode上的项目提交到github上

1.windows终端中 创建github仓库 创建完成 提交代码 git init git config --global user.email "fuyulai2024163.com" git config --global user.name "Fuyulai-Hub" git add . git commit -m "first commit" git remote add origin https://g…

【期末JavaEE项目】springboot+vue3完成中国铁路12306网站的业务实现【原创】

&#x1f939;‍♀️潜意识Java&#xff1a;个人主页 &#x1f399;告诉你&#xff1a;Java是世界上最美好的语言 &#x1f48e;比较擅长的领域&#xff1a;前端开发 是的&#xff0c;我需要您的&#xff1a; &#x1f9e1;点赞❤️关注&#x1f499;收藏&#x1f49b; 是…

浅谈CI持续集成

1.什么是持续集成 持续集成&#xff08;Continuous Integration&#xff09;&#xff08;CI&#xff09;是一种软件开发实践&#xff0c;团队成员频繁地将他们的工作成果集成到一起(通常每人每天至少提交一次&#xff0c;这样每天就会有多次集成)&#xff0c;并且在每次提交后…

电子商务人工智能指南 1/6 - 搜索、广告和发现

介绍 81% 的零售业高管表示&#xff0c; AI 至少在其组织中发挥了中等至完全的作用。然而&#xff0c;78% 的受访零售业高管表示&#xff0c;很难跟上不断发展的 AI 格局。 近年来&#xff0c;电子商务团队加快了适应新客户偏好和创造卓越数字购物体验的需求。采用 AI 不再是一…

【Git教程 之 版本控制】

Git教程 之 版本控制 Git教程 之 版本控制版本控制版本控制类型单用户版本控制系统&#xff08;VCS&#xff09;单用户版本控制系统&#xff08;VCS&#xff09;特点常见的单用户版本控制系统&#xff08;VCS&#xff09; 集中式版本控制系统&#xff08;CVCS&#xff09;集中式…

.NET Framework修复工具

某些精简Windows系统或者第三方下载的改版Windows系统在安装.NET Framework的时候会出现类似下面的错误信息: 可以使用微软官方出的.NET Framework修复工具解决, 下载地址: 【免费】.NETFramework修复工具资源-CSDN文库 下载后运行即可修复系统里的.NET Framework

计算机毕业设计Python轨道交通客流预测分析可视化 智慧交通 机器学习 深度学习 人工智能 爬虫 交通大数据

温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 作者简介&#xff1a;Java领…

从计算服务器角度看智算与算力

计算服务器于智算和算力领域的地位堪称中流砥柱。人工智能旨在赋予计算机人类智能的使命&#xff0c;对计算服务器提出了近乎苛刻的要求。 在智算层面&#xff0c;它是计算服务器通向高效能的核心动力。凭借 CPU 与 GPU、FPGA、ASIC 等构建的异构组合&#xff0c;计算服务器可…

Lighthouse(灯塔)—— Chrome 浏览器性能测试工具

1.认识 Lighthouse Lighthouse 是 Google 开发的一款开源性能测试工具&#xff0c;用于分析网页或 Web 应用的性能、可访问性、最佳实践、安全性以及 SEO 等关键指标。开发人员可以通过 Lighthouse 快速了解网页的性能瓶颈&#xff0c;并基于优化建议进行改进。 核心功能&…

Logistic Regression(逻辑回归)、Maximum Likelihood Estimatio(最大似然估计)

Logistic Regression&#xff08;逻辑回归&#xff09;、Maximum Likelihood Estimatio&#xff08;最大似然估计&#xff09; 逻辑回归&#xff08;Logistic Regression&#xff0c;LR&#xff09;逻辑回归的基本思想逻辑回归模型逻辑回归的目标最大似然估计优化方法 逻辑回归…

使用Hadoop MapReduce进行大规模数据爬取

Hadoop MapReduce概述 Hadoop MapReduce是一个编程模型&#xff0c;用于处理和生成大数据集。它由Map和Reduce两个主要阶段组成。Map阶段负责处理输入数据&#xff0c;并将结果输出为键值对&#xff1b;Reduce阶段则对Map阶段的输出进行汇总和合并&#xff0c;生成最终结果。 …