ListView、RecycleView、动画、单位、ViewPager

news2024/10/6 5:57:06

ListView列表

老版本

public View oldGetView(int position, View convertView, ViewGroup parent) {

        //返回每一个item
        //拿到布局
        if (convertView==null)
        convertView = LayoutInflater.from(context).inflate(R.layout.my_list_view, parent, false);
        //find会耗时需要优化
        TextView textView = convertView.findViewById(R.id.tv);

        textView.setText(data.get(position).getName());
        Log.e("gh", "getView: "+position);
        return convertView;
    }
//次方法为为每行添加值
在老版本方法中,findbyId每次都会带来能耗
100个item则会创建100次find

新版本(性能优化)

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    ViewHolder viewHolder;
    if (convertView==null){
        viewHolder=new ViewHolder();
        convertView = LayoutInflater.from(context).inflate(R.layout.my_list_view, parent, false);
        viewHolder.textView=convertView.findViewById(R.id.tv);
        convertView.setTag(viewHolder);
    }else {
        viewHolder=(ViewHolder) convertView.getTag();
    }
    viewHolder.textView.setText(data.get(position).getName());
    Log.e("gh", "getView: "+position);
    return convertView;
}
private final class ViewHolder{
        TextView textView;
    }
}
//这里只用了一次findbyid
实际上getTag的源码意义就是存储数据集一次存

RecyclerView

1导包

//    添加recyclerview依赖
    implementation 'androidx.recyclerview:recyclerview:1.3.2'

相较与LIstView recycler必须使用holder 并且在布局上没有默认,需要加上布局更加灵活

动画 

帧动画

这还不行需要启动和停止

private boolean flag=true;//动画启动和停止
    @SuppressLint("MissingInflatedId")
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        EdgeToEdge.enable(this);
        setContentView(R.layout.activity_main);

        RelativeLayout relativeLayout = findViewById(R.id.rl);
        AnimationDrawable anim = (AnimationDrawable) relativeLayout.getBackground();
获取动画
        relativeLayout.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (flag){
                    //点击启动
                    anim.start();
                    flag=false;
                }else{
                    //点击关闭
                    anim.stop();
                    flag=true;
                }
            }
        });
    }

补间动画

属性动画 

单位和尺寸

用dp sp

ViewPager

 

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

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

相关文章

YOLOv8核心原理深度解析

YOLOv8源码地址: https://github.com/ultralytics/ultralytics 一、简介: 根据官方描述,Yolov8是一个SOTA模型,它建立在Yolo系列历史版本的基础上,并引入了新的功能和改进点,以进一步提升性能和灵活性,使其成为实现目标检测、图像分割、姿态估计等任务的最佳选择。其具体…

Rancher-Longhorn-新增磁盘以及卷创建原理和卷副本调度规则

一、添加磁盘-官网指引 重点在于: 1、比如你新增了一块盘,你需要做一下事情: 1、执行 lsblk 能找到你的盘。 2、然后执行 fdisk /dev/sdxx 分区你的盘。 3、然后对于分区部署文件系统, mkfs.xfs 4、然后执行 mount /dev/sdxxx 你…

项目管理中常用的三个工具:甘特图、看板、燃尽图

在日常项目管理的实践中,为了更有效地追踪项目进度、优化资源配置和提高团队协作效率,管理者常常会借助一些工具来辅助工作。这些工具的本质在于将抽象复杂的项目管理任务具象化、简单化,以更直观、方便的方式呈现出来。 以下介绍项目管理中…

Git--基础学习--面向企业--持续更新

一、基础学习 1.1基本命令 //查询基础信息 git config --global --list //选取合适位置创建 mkdir 文件名 //创建文件夹 //全局配置 git config --global user.email "****e***i" git config --global user.name "*** K****"//--------------------进入…

Linux系统编程---线程同步

一、同步概念 同步即协同步调,按预定的先后次序运行。 协同步调,对公共区域数据【按序】访问,防止数据混乱,产生与时间有关的错误。 数据混乱的原因: 资源共享(独享资源则不会)调度随机(意味着数据访问会出现竞争)线…

新建云仓库

1.GitHub新建云仓库: LICENSE:开源许可证;README.md:仓库说明文件;开源项目;cocoaPodsName.podspec: CocoaPods项目的属性描述文件。 2.Coding新建云仓库: 备注: Coding新建项目:

自动化机器学习流水线:基于Spring Boot与AI机器学习技术的融合探索

🧑 作者简介:阿里巴巴嵌入式技术专家,深耕嵌入式人工智能领域,具备多年的嵌入式硬件产品研发管理经验。 📒 博客介绍:分享嵌入式开发领域的相关知识、经验、思考和感悟,欢迎关注。提供嵌入式方向…

训练营第三十五天动态规划(基础题part1)

训练营第三十五天动态规划(part1) 需要用到之前的数据 确定dp数组(dp table)以及下标的含义确定递推公式dp数组如何初始化确定遍历顺序举例推导dp数组 509. 斐波那契数 力扣题目链接 题目 斐波那契数 (通常用 F(n…

动态规划——斐波那契数列模型:面试题08.01.三步问题

文章目录 题目描述算法原理1.状态表示2.状态转移方程3.初始化4.填表顺序5.返回值 代码实现CJava 题目描述 题目链接:面试题08.01.三步问题 如果n是0走法可能是1也可能是0,所以本题范围并不需要考虑直接从1开始即可 因为以3为结尾有直接从0到3的方式&a…

深度学习500问——Chapter08:目标检测(4)

文章目录 8.3 One Stage 目标检测算法 8.3.1 SSD 8.3.2 DSSD 8.3.3 YOLOv1 8.3 One Stage 目标检测算法 我们将对单次目标检测器(包括SSD系列和YOLO系列等算法)进行综述。我们将分析FPN以理解多尺度特征图如何提高准确率,特别是小目标的检测…

无人机+集群组网:机载自组网电台技术详解

无人机与集群组网的结合为现代通信带来了独特的优势。在集群组网中,每个节点(例如无人机)都兼具路由器和主机的功能,它们不仅可以运行各种面向用户的应用程序,还可以执行路由协议,根据路由策略和路由表完成…

C#基础之结构体

结构体 文章目录 1、概念2、基本语法3、示例4、结构体的使用5、访问修饰符6、结构体的构造函数思考1 描述矩形信息思考2 职业名字释放了技能思考3 小怪兽思考4 多个小怪兽思考5 奥特曼打小怪兽 1、概念 结构体是一种一定义变量类型 它是数据和函数的集合,可以在结…

谁是存储器市场下一个“宠儿”?

AI浪潮对存储器提出了更高要求,高容量、高性能存储产品重要性正不断凸显,存储产业技术与产能之争也因此愈演愈烈:NAND Flash领域,闪存堆叠层数持续提升;DRAM领域HBM持续扩产,技术不断迭代,同时3…

模仿学习IQ-Learn:Inverse soft-Q Learning for Imitation

论文地址:IQ-Learn: Inverse soft-Q Learning for Imitation 项目地址:IQ-Learn: Inverse soft-Q Learning for Imitation 一、相关概念: 强化学习(RL):目标是学习一个最大化指定奖励函数的策略。 模仿…

java-Spring-(MyBatis框架-xml管理)

目录 前置条件 xml与注解比较 1.1 xml定义 1.2 和SQL注解比较 建包准备 插入数据 ​编辑 更新数据 删除数据 查询数据 查看单字段查询 🏷💣前置条件 创建一个spring boot 初始化的项目 🏷💣xml与注解比较 1.1 xml定义 …

WebGL开发框架比较

WebGL开发框架提供了一套丰富的工具和API,使得在Web浏览器中创建和操作3D图形变得更加容易。以下是一些流行的WebGL开发框架及其各自的优缺点。北京木奇移动技术有限公司,专业的软件外包开发公司,欢迎交流合作。 1.Three.js 优点&#xff1a…

iText生成PDF文件

导语: 本文基于 iText7 :7.1.16 生成。 官方文档链接:iText 从版本入口可进入到下面页面 一、引言 常见生成PDF文件的有两种方法,一是先生成 word文档,然后将word转换成PDF文件;另一种则是直接生成PDF文件…

javaEE--多线程学习-进程调度

进程调度不明白?看这一篇文章就够了,逻辑衔接严密,文末附有关键面试题,一个海后的小故事让你瞬间明白这里面的弯弯绕绕! 目录 1.什么是进程? 2.进程控制块(PCB) 2.1 一个PCB就是一…

多数据源注解使用

<dependency><groupId>com.baomidou</groupId><artifactId>dynamic-datasource-spring-boot-starter</artifactId><version>3.5.0</version> </dependency> 1.使用mybatis-plus 如何配置多数据源&#xff0c;application-loc…

《QT实用小工具·三十五》基于PathView,Qt/QML做的一个可以无限滚动的日历控件

1、概述 源码放在文章末尾 改项目实现了基于PathView&#xff0c;Qt/QML做的一个可以无限滚动的日历控件&#xff0c;下面是demo演示&#xff1a; 项目部分代码如下所示&#xff1a; import QtQuick 2.7 import QtQuick.Controls 1.4 import QtQuick.Controls.Styles 1.4Bu…