Android开发之UI控件

news2024/9/22 11:29:18

TextView

实现阴影效果的textview

  • android:shadowColor="#ffff0000" 设置阴影颜色为红色
  • android:shadowRadius="3" 设置阴影的模糊程度为3
  • android:shadowDx="10" 设置阴影在水平方向的偏移
  • android:shadowDy="10" 设置阴影在竖直方向的偏移
    效果
    实现跑马灯效果的textview
  • android:singleLine="true" 内容单行显示
  • android:ellipsize="marquee" 在文本过长而无法完全显示时,让文本滚动显示
  • android:marqueeRepeatLimit="marquee_forever"设置文本的重复次数
  • android:focusable="true"设置TextView是否可以接收焦点
  • android:focusableInTouchMode="true"设置TextView在触摸模式下是否可以接收焦点
  • android:clickable="true"设置TextView是否可以被点击(设置后点击文本开始滚动,如果想要实现进入应用自动滚动可以继承textview重写isFocused方法,并把控件部分更改为自定义控件,如com.example.myapplication.myTextView)

ProgressBar

  • style="?android:attr/progressBarStyleHorizontal" 水平进度条
  • android:max="100" 进度条最大值
  • android:indeterminate="true" 如果设置为true,则进度条不精确显示进度
  • android:progress进度条已完成进度值
    效果
    activity中设置点击一次进度值+10
  fun loadOnclick(view: View) {
        var progress = loadprogressBar.progress
        progress+=10
        loadprogressBar.progress = progress
    }

Notification对话框

  • setContentTitle("软件通知")主题
  • setContentText("notification练习")内容
  • setSmallIcon(R.drawable. ) 小图标
  • setLargeIcon(BitmapFactory.decodeResource(resources, R.drawable. ))大图标
  • setColor(Color.parseColor(“#ff0000”))小图标颜色
  • setContentIntent(pendingIntent)点击通知跳转的页面
  • setAutoCancel(true)点击通知后是否自动清除
    代码:
override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
  //获取NotificationManager对象(通知管理类)
        manager = getSystemService(NOTIFICATION_SERVICE) as NotificationManager


        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
            //创建NotificationChannel
            var channel = NotificationChannel(
                "MainActivity", "测试",
                //通知重要程度设置
                NotificationManager.IMPORTANCE_HIGH//开启通知,会弹出,发出提示音,状态栏中显示
            )

            manager.createNotificationChannel(channel)
        }

        var intent = Intent(this, MainActivity2::class.java)
        //将Intent转换成pendingIntent
        var pendingIntent = PendingIntent.getActivity(this, 0, intent, PendingIntent.FLAG_MUTABLE)

        //Notification对象,设置通知内容和格式
        //channelid渠道id
        notification = NotificationCompat.Builder(this, "MainActivity")
            .setContentTitle("软件通知")//主题
            .setContentText("notification练习")//内容
            .setSmallIcon(R.drawable.baseline_campaign_24) //小图标
            .setLargeIcon(BitmapFactory.decodeResource(resources, R.drawable.img))//大图标
            .setColor(Color.parseColor("#ff0000"))//小图标颜色
            .setContentIntent(pendingIntent)//点击通知跳转的页面
            .setAutoCancel(true)//点击通知后是否自动清除
            .build()
    }


 fun sendOnClick(view: View) {
        //发出通知
        manager.notify(1, notification)
    }

    fun cacelOnClick(view: View) {
        //取消通知
        manager.cancel(1)
    }

Toolbar

  • android:layout_width="match_parent"toolbar的宽度
  • android:layout_height="?attr/actionBarSize"toolbar的高度
  • android:background="#0000ff"toolbar的背景颜色设置
  • app:navigationIcon="@drawable/baseline_arrow_back_24"toolbar的图标
  • app:title="标题"toolbar的主标题
  • app:titleTextColor="#ff0000"toolbar的主标题颜色
  • app:titleMarginStart="40dp"toolbar的主标题距离左边的边距
  • app:subtitle="子标题"toolbar的子标题
  • app:subtitleTextColor="#00ff00"toolbar的子标题颜色
  • app:logo="@drawable/img"toolbar的logo
    效果
    Toolbar点击事件
    toolbar = findViewById(R.id.toolbar)
        toolbar.setNavigationOnClickListener(View.OnClickListener {
            Toast.makeText(this, "toolbar被点击了", Toast.LENGTH_SHORT).show()
        })

AlertDialog

  • var builder = AlertDialog.Builder(this)构建对话框参数
  • builder.setIcon(R.drawable.img)添加图标
  • builder.setTitle("对话框")添加对话框标题
  • builder.setMessage("今天过的开心吗")添加对话框消息内容
  • builder.setView(R.layout.dialog)添加对话框自定义布局
  • 设置确定按钮,我修改成我需要的了
builder.setPositiveButton("是的",DialogInterface.OnClickListener { dialogInterface, i ->
                Toast.makeText(this, "是的", Toast.LENGTH_SHORT).show()
            })
  • 设置取消按钮,我修改成我需要的了
builder.setNegativeButton("不是",DialogInterface.OnClickListener { dialogInterface, i ->
                Toast.makeText(this, "不是", Toast.LENGTH_SHORT).show()
            })
  • 设置中间按钮,我修改成我需要的了
builder.setNeutralButton("不好也不坏",DialogInterface.OnClickListener { dialogInterface, i ->
                Toast.makeText(this, "不好也不坏", Toast.LENGTH_SHORT).show()
            })
  • builder.create()创建对话框
  • builder.show()显示对话框

效果

PopupWindow

创建一个PopupWindow对象。
popupView是这个弹出窗口的内容视图。
ViewGroup.LayoutParams.WRAP_CONTENT表示弹出窗口的宽度和高度都是根据其内容自动调整的。
true表示当点击弹出窗口以外的空白区域时,弹出窗口会被关闭

var popupWindow = PopupWindow(
            popupView,
            ViewGroup.LayoutParams.WRAP_CONTENT,
            ViewGroup.LayoutParams.WRAP_CONTENT,
            true//点空白处退出弹窗
        )
  • setContentView(View contentView)设置popupwindow显示的view
  • popupWindow.showAsDropDown(view)相对某个控件的位置(正左下方)无偏移
  • showAsDropDown(View anchor, int xoff, int yoff)相对某个控件的位置,有偏移
  • popupWindow.setBackgroundDrawable(getDrawable(R.drawable.img))设置背景
  • setFocusable(boolean focusable)设置是否获取焦点(点空白处退出弹窗)
  • popupWindow.dismiss()关闭弹窗
  • setAnimationStyle(int animationStyle)设置加载动画
  • setTouchable(boolean touchable)设置弹窗内部触摸使能(处理触摸事件)
  • setOutsideTouchable(boolean touchable)设置弹窗外部触摸使能(处理触摸事件)
    全部代码
 fun popupOnClick(view: View) {
        var popupView = layoutInflater.inflate(R.layout.popupview, null)
        var btn1 =popupView.findViewById<Button>(R.id.button)
        var btn2 =popupView.findViewById<Button>(R.id.button2)
        var popupWindow = PopupWindow(
            popupView,
            ViewGroup.LayoutParams.WRAP_CONTENT,
            ViewGroup.LayoutParams.WRAP_CONTENT,
            true//点空白处退出弹窗
        )

        popupWindow.setBackgroundDrawable(getDrawable(R.drawable.img))

        popupWindow.showAsDropDown(view)//显示在按钮下方

		//弹窗中按钮点击事件
        btn1.setOnClickListener(View.OnClickListener {
            Toast.makeText(this, "点击了是的按钮", Toast.LENGTH_SHORT).show()
        })

        btn2.setOnClickListener(View.OnClickListener {
            Toast.makeText(this, "点击了不是按钮", Toast.LENGTH_SHORT).show()
            popupWindow.dismiss()//关闭弹窗
        })
    }

效果

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

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

相关文章

iOS17使用safari调试wkwebview

isInspectable配置 之前开发wkwebview的页面的时候一直使用safari调试&#xff0c;毕竟jssdk交互还是要用这个比较方便&#xff0c;虽说用一个脚本插件没问题。不过还是不太方便。 但是这个功能突然到了iOS17之后发现不能用了&#xff0c;还以为又是苹果搞得bug&#xff0c;每…

Unity 状态模式(实例详解)

文章目录 简介示例1&#xff1a;基础角色状态切换示例2&#xff1a;添加更多角色状态示例3&#xff1a;战斗状态示例4&#xff1a;动画同步状态示例5&#xff1a;状态机管理器示例6&#xff1a;状态间转换的条件触发示例7&#xff1a;多态行为与上下文类 简介 Unity 中的状态模…

一个产品是怎么诞生的

一个产品的诞生&#xff0c;首先从假设需求开始&#xff0c;或者从玩耍的创客开始。 假设需求往往风险很大&#xff0c;你如果没有结合实际的生活经验或者是玩耍经验&#xff0c;凭空在脑子里想到一个东西&#xff0c;要把它创造出来&#xff0c;这样的东西极有可能会遭遇商业上…

ASP.NET Core 使用 SignalR 的简单示例

写在前面 ASP.NET SignalR 是一个开源代码库&#xff0c;简化了Web实时通讯方案&#xff0c;可以实时地通过服务端将信息同步推送到各个客户端&#xff0c;可应用于 需要从服务器进行高频更新的应用&#xff1a;包括游戏、社交网络、投票、拍卖、地图和GPS应用&#xff1b; 仪…

Servlet过滤器个监听器

过滤器和监听器 过滤器 什么是过滤器 当浏览器向服务器发送请求的时候&#xff0c;过滤器可以将请求拦截下来&#xff0c;完成一些特殊的功能&#xff0c;比如&#xff1a;编码设置、权限校验、日志记录等。 过滤器执行流程 Filter实例 package com.by.servlet;import jav…

2024年航海制造工程与海洋工程国际会议(ICNMEME2024)

一、【会议简介】 2024年航海制造工程与海洋工程国际会议(ICNMEME2024)旨在将研究人员、工程师、科学家和行业专业人士聚集在一个开放论坛上&#xff0c;展示他们在导航制造工程与海洋工程领域的激励研究和知识转移理念。然而&#xff0c;我们也认识到&#xff0c;工程师的未来…

【操作系统·考研】虚拟内存管理

1.概述 传统存储管理方式具有两个特征 一次性&#xff1a;作业必须一次性全部装入内存后&#xff0c;才能开始运行。驻留性&#xff1a;作业被装入内存后&#xff0c;就一直驻留在内存中&#xff0c;在其运行期间作业的任何部分都无法被换出。 显然&#xff0c;这两个特性非…

【深度学习】数据归一化/标准化 Normalization/Standardization

目录 一、实际问题 二、归一化 Normalization 三、归一化的类型 1. Min-max normalization (Rescaling) 2. Mean normalization 3.Z-score normalization (Standardization) 4.非线性归一化 4-1 对数归一化 4-2 反正切函数归一化 4-3 小数定标标准化&#xff08;Demi…

山海鲸智慧教育方案:教育数据的未来

作为山海鲸可视化软件的开发者&#xff0c;我们深知数据可视化在教育领域的重要价值。山海鲸智慧教育解决方案正是在这样的背景下应运而生&#xff0c;致力于为教育行业提供高效、直观的数据可视化解决方案。 随着教育信息化的深入推进&#xff0c;教育数据呈爆炸式增长。如何…

嵌入式学习 Day14

一. 三个函数 1.strncpy char *strncpy(char *dest, const char *src, size_t n) // 比正常拷贝多了一个n { n < strlen(src) // 只拷贝前n个字符&#xff0c;最终dest中不会有\0 n strlen(src) // 正常拷贝 n > strlen(src) …

【Golang】ModbusRTU协议CRC16校验算法

CRC校验码是通过在数据后面附加一个短的校验序列来生成的&#xff0c;用于检测数据在传输过程中是否发生错误。CRC16是一种特定的CRC校验算法&#xff0c;它生成一个16位的校验码。 下面是使用Go语言实现CRC16校验算法的代码&#xff1a; package main import ("encoding…

【01】Linux 基本操作指令

带⭐的为重要指令 &#x1f308; 01、ls 展示当前目录下所有文件&#x1f308; 02、pwd 显示用户当前所在路径&#x1f308; 03、cd 进入指定目录&#x1f308; 04、touch 新建文件&#x1f308; 05、tree 以树形结构展示所有文件⭐ 06、mkdir 新建目录⭐ 07、rmdir 删除目录⭐…

某赛通电子文档安全管理系统 PolicyAjax SQL注入漏洞复现

0x01 产品简介 某赛通电子文档安全管理系统(简称:CDG)是一款电子文档安全加密软件,该系统利用驱动层透明加密技术,通过对电子文档的加密保护,防止内部员工泄密和外部人员非法窃取企业核心重要数据资产,对电子文档进行全生命周期防护,系统具有透明加密、主动加密、智能…

Linux--redhat9创建软件仓库

1.插入光盘&#xff0c;挂载镜像 模拟插入光盘: 点击:虚拟机-可移动设备-CD/DVD 设备状态全选&#xff0c;使用ISO影响文件选择当前版本镜像&#xff0c;点击确认。 2.输入: df -h 可以显示&#xff0c;默认/dev/sr0文件为光盘文件&#xff0c;挂载点为/run/media/root/镜像…

【操作系统·考研】文件系统基础

1.概述 文件(File)是以硬盘为载体的存储在计算机上的信息集合&#xff0c;文件可以是文本文档、图片、程序等&#xff0c;基本访问单元可以是字节或记录&#xff0c;可以长期储存在硬盘中&#xff0c;并允许可控制的进程间共享访问&#xff0c;还可以被组成成更复杂的结构。 在…

关于 IntelliJ IDEA 中 Schedule for Addition 的问题

IntelliJ IDEA是一款强大的Java集成开发环境&#xff0c;由JetBrAIns公司开发。它以其智能代码编辑、代码分析工具、自动代码补全、强大的调试功能和内建的版本控制等特性而闻名。此外&#xff0c;它还支持Kotlin、Groovy、Scala和Android开发等多种语言和框架。 IntelliJ IDE…

【XR806开发板试用】在 xr806 上用 ncnn 跑神经网络 mnist

在 xr806 上用 ncnn 跑神经网络 mnist 0x0 介绍 xr806 和 ncnn https://xr806.docs.aw-ol.com/ XR806是全志科技旗下子公司广州芯之联研发设计的一款支持WiFi和BLE的高集成度无线MCU芯片&#xff0c;支持鸿蒙L0系统 https://github.com/Tencent/ncnn ncnn是腾讯开源的高性…

纯静态微信小程序水果商城

首页代码 <view class"container"><!-- 轮播图 --><view class"swiper-container"><swiper class"screen-swiper" indicator-dots"true" circular"true" autoplay"true" interval"300…

【开源】基于JAVA+Vue+SpringBoot的数据可视化的智慧河南大屏

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块三、系统展示四、核心代码4.1 数据模块 A4.2 数据模块 B4.3 数据模块 C4.4 数据模块 D4.5 数据模块 E 五、免责说明 一、摘要 1.1 项目介绍 基于JAVAVueSpringBootMySQL的数据可视化的智慧河南大屏&#xff0c;包含了GDP、…

Unity:构建游戏和交互应用的强大引擎

Unity&#xff1a;构建游戏和交互应用的强大引擎 在游戏开发和交互应用领域&#xff0c;Unity 已经成为最受欢迎和广泛使用的开发引擎之一。无论是独立开发者、游戏工作室还是企业开发团队&#xff0c;Unity 都提供了强大的工具和功能&#xff0c;帮助开发者构建出令人惊叹的视…