首页 文章 精选 留言 我的

精选列表

搜索[弹性95],共10000篇文章
优秀的个人博客,低调大师

《HelloGitHub》第 95 期

兴趣是最好的老师,HelloGitHub 让你对编程感兴趣! 简介 HelloGitHub 分享 GitHub 上有趣、入门级的开源项目。 https://github.com/521xueweihan/HelloGitHub 这里有实战项目、入门教程、黑科技、开源书籍、大厂开源项目等,涵盖多种编程语言 Python、Java、Go、C/C++、Swift...让你在短时间内感受到开源的魅力,对编程产生兴趣! 以下为本期内容|每个月 28 号更新 C 项目 1、audacity:一款免费、开源的音频编辑工具。该项目是最受欢迎的开源音频编辑软件之一,它拥有容易上手的界面,提供了音频的编辑和录制功能,支持多语言、录音、多音轨混音以及杂音消除等特性,适用于 Windows、macOS、GNU/Linux 操作系统。来自 @ziming012 的分享 2、VeraCrypt:一款开源的磁盘加密软件。该项目是基于知名、已停止维护的 TrueCrypt 开发,修复了已知的许多漏洞和安全问题。经过多年的迭代,VeraCrypt 的功能更加强大。它支持动态加密系统分区、硬件加速、隐藏加密容器、多重认证等功能,适用于 Windows、Linux 和 macOS 平台,提供了跨平台的硬盘加密开源解决方案。 C# 项目 3、Jackett:一个支持磁力资源聚合搜索的工具。该项目能够将多个私有和公共的 BT 站点转化为统一的 API,并提供了一个简易的 Web 页面,方便统一管理搜索结果和下载任务。 C++ 项目 4、endless-sky:一款 2D 太空交易和战斗游戏。这是一款免费、开源的太空探索类游戏。玩家将扮演一位小型宇宙飞船的舰长,在沙盒式的太空环境中展开探险。通过做任务、运送乘客或货物、护航、交易或掠夺敌方飞船,玩家可以赚取金钱,进而购买更强大的飞船并升级武器与引擎,探索更广阔的太空。游戏对硬件配置要求低,支持 Windows、Linux 和 macOS 平台。 5、Hyprland:一个灵活、强大的 Wayland 合成器。这是一个高度可定制的动态平铺 Wayland 合成器,用于 Linux 系统的自定义桌面环境。Wayland 是新一代的 Linux 桌面后端服务器协议。该项目提供了多应用程序窗口管理、自动调整、切换和切分窗口的功能。它还支持多显示器设置、自定义外观和丰富的插件扩展。 6、images:一个缓存和调整图像尺寸的服务。这个项目是用 C++ 编写的图像处理服务,使用了 Nginx、libvips 和 Cloudflare 等技术。它具备调整图像大小和加速访问的功能,支持多种图像格式,包括 JPEG、PNG、BMP、GIF、TIFF、WebP、PDF 和 SVG 等。来自 @孤胆枪手 的分享 <!-- 源图标地址:wsrv.nl/lichtenstein.jpg --> <img src="//wsrv.nl/?url=wsrv.nl/lichtenstein.jpg&w=300&h=300"> 7、Shell:一款强大的 Windows 上下文菜单管理工具。这项目是一个用于管理 Windows 文件资源管理器上下文菜单的程序。简单来说,就是扩展了 Windows 右键菜单的功能。该工具免费、开源、无广告、轻巧,支持所有文件系统对象,如文件、文件夹、桌面和任务栏。它提供了一系列提升效率的功能,包括拷贝文件地址、快速打开目录、终端打开、自定义外观以及复杂的嵌套菜单等。 CSS 项目 8、hyperui:免费的 Tailwind CSS 组件集合。该项目提供了一系列适用于网站、营销和电商等网站的免费 Tailwind CSS 组件。这些组件支持深色模式、移动端适配和 LTR,复制代码即可使用。 Go 项目 9、besticon:获取网站 favicon 图标的服务。该服务使用 Go 语言编写,用于获取目标网站 favicon.ico 地址。它特别适用于导航类网站,因为它可以很方便地从源站点上获取图标,即使在找不到图标的情况下,也会返回一个站点名称首字母的灰色图标。来自 @Liang 的分享 10、decimal:解决小数精度问题的 Go 库。该项目旨在解决浮点数类型在计算过程中,可能出现的精度丢失问题。它提供了一个名为 Decimal 的数据类型,支持常见的加法、减法、乘法和除法运算,保证结果不会丢失精度,同时还提供了四舍五入、取整和序列化等功能。 package main import ( "fmt" "github.com/shopspring/decimal" ) func main() { price, err := decimal.NewFromString("136.02") if err != nil { panic(err) } quantity := decimal.NewFromInt(3) fee, _ := decimal.NewFromString(".035") taxRate, _ := decimal.NewFromString(".08875") subtotal := price.Mul(quantity) preTax := subtotal.Mul(fee.Add(decimal.NewFromFloat(1))) total := preTax.Mul(taxRate.Add(decimal.NewFromFloat(1))) fmt.Println("Subtotal:", subtotal) // Subtotal: 408.06 fmt.Println("Pre-tax:", preTax) // Pre-tax: 422.3421 fmt.Println("Taxes:", total.Sub(preTax)) // Taxes: 37.482861375 fmt.Println("Total:", total) // Total: 459.824961375 fmt.Println("Tax rate:", total.Sub(preTax).Div(preTax)) // Tax rate: 0.08875 } 11、gocv:基于 OpenCV 的 Go 语言计算机视觉库。OpenCV 是一个开源、跨平台的计算机视觉库,多用于做图像处理、视频采集和分析。该项目是 OpenCV 的 Go 语言封装库,让开发者可以使用 Go 语言调用 OpenCV 库,具有支持多平台、OpenCV 4+ 和 GPU 硬件加速等特性。 package main import ( "gocv.io/x/gocv" ) func main() { // 打开摄像头 webcam, _ := gocv.OpenVideoCapture(0) // 新建 GUI 窗口 window := gocv.NewWindow("Hello") img := gocv.NewMat() // 显示视频 for { webcam.Read(&img) window.IMShow(img) window.WaitKey(1) } } 12、goreleaser:快速、优雅地发布 Go 应用。这是一个 Go 项目打包、签名和发布的工具,支持自动发布到 GitHub、GitLab 和 Gitea 平台、创建 Docker 镜像、Linux 软件包和 Homebrew 等功能,可在本地运行也支持 CI/CD 系统,但免费版不支持构建 macOS 和 Windows 安装包。 13、termdash:一个跨平台、可定制的终端仪表盘。该项目提供了丰富的终端小部件,如按钮、进度条、图表等,可用于创建各种交互式终端工具。它支持 UTF-8 编码、鼠标事件和自定义布局等功能,能够快速构建出拥有好看界面的终端应用。 Java 项目 14、winlator:在 Android 上运行 Windows 游戏的模拟器。这是一个 Android 应用,可以让你使用 Wine 和 Box86/Box64 来运行 Windows 应用和游戏,实现在手机上畅玩各种经典的 PC 游戏。 JavaScript 项目 15、excalidraw:手绘风格的白板 Web 应用。这是一款完全免费、开源的基于无限画布的白板 Web 应用,用户可以在上面创建手绘风格的作品。支持包括中文在内的多种语言,提供了自由绘制、多种工具、导出 PNG、实时协作、共享链接、自动保存等功能。 16、jsoneditor:在线的 JSON 编辑器。该项目是一个基于 Web 的 JSON 编辑器,可用于查看、编辑、格式化和验证 JSON。它支持树形编辑器、代码编辑器和纯文本等模式,不仅可以直接在线使用,还可作为组件集成到项目中。 17、reactjs-interview-questions:前端面试 React 高频问题和答案。该项目涵盖了一系列 React 相关的面试问题和答案,内容涉及基础知识、组件、状态管理、生命周期以及性能优化等方面。 18、super-productivity:一款先进的待办事项列表应用。超级生产力是一款用 TypeScript 开发的高级 TODO 应用,旨在帮助用户规划任务和管理待办事项,培养健康高效的习惯。它开源、免费、无需注册,支持与 Jira、GitHub、GitLab 等第三方平台集成,可即时收到任务变动的通知。除了可在线使用的 Web 网页版,还提供了 Windows、Linux、macOS、iOS 和 Android 客户端。 19、tsparticles:立刻给网站安排上动画背景的库。该项目可用于创建高度可定制的 JavaScript 粒子效果,比如雪花、彩带和烟花效果等。虽然它是一个独立库、不依赖其他库或框架,但项目内提供了 React、Vue、Angular、Svelte、jQuery 等框架的现成组件,以便于快速集成到项目中。 Kotlin 项目 20、MaterialFiles:一款开源的 Android 文件管理器。该项目是一个安卓文件管理器,采用 Kotlin 开发,并遵循 Material Design 设计规范。它轻量、简洁并且安全,支持 root 权限查看和管理文件、压缩/解压文件、远程查看服务器上的文件等功能,适用于 Android 5.0+ 系统。 Python 项目 21、cachetools:实用的 Python 缓存装饰器。这是一个 Python 的缓存库,它提供了多种缓存算法的数据类型和 Python 标准库的 @lru_cache 函数装饰器的变种,该库适用于避免重复计算、加速结果返回以及减少重复请求等场景。 from cachetools import cached, LRUCache, TTLCache # speed up calculating Fibonacci numbers with dynamic programming @cached(cache={}) def fib(n): return n if n < 2 else fib(n - 1) + fib(n - 2) # cache least recently used Python Enhancement Proposals @cached(cache=LRUCache(maxsize=32)) def get_pep(num): url = 'http://www.python.org/dev/peps/pep-%04d/' % num with urllib.request.urlopen(url) as s: return s.read() # cache weather data for no longer than ten minutes @cached(cache=TTLCache(maxsize=1024, ttl=600)) def get_weather(place): return owm.weather_at_place(place).get_weather() 22、Ciphey:自动解密/解码和破解各种加密算法的工具。使用该项目时,你只需输入加密的文本,无需提供具体的加密类型,它就可以在 3 秒或更短的时间内自动解密大多数的加密文本。这个项目支持 30 多种常见的加密方式,包括二进制、base64、哈希等。 23、music-tag-web:编辑歌曲文件元数据的 Web 应用。这款音乐标签编辑器提供了编辑歌曲标题、专辑、艺术家、歌词、封面等信息的功能。它支持多种音频格式,包括 FLAC、APE、WAV、AIFF、MP3 和 MP4 等。此外,它还提供了自动批量修改和整理音乐文件、歌词翻译、手机端访问等实用功能。来自 @xier 的分享 24、sqlite-web:基于 Web 的 SQLite 数据库管理工具。这是一个用 Flask 和 peewee 编写的 SQLite 数据库 Web 管理平台。它安装简单、启动也非常方便。该项目提供了一个简单易用的界面,以及实用的 SQLite 数据管理功能,包括创建/删除表、索引、数据导入/导出、排序、SQL 查询等功能。 25、toolong:好用的终端日志文件处理工具。这是一个用于查看、追踪、合并和搜索,日志/JSON 长文件的命令行工具。它提供了高亮显示和实时追踪日志的功能,支持快速打开 GB 级的文件,并能根据时间戳自动合并日志文件。 Ruby 项目 26、judge0:开源的在线代码执行系统。该项目是用 Ruby 开发的在线代码执行系统,它安装简单、功能强大,支持 60 多种编程语言,可以设置代码执行时间和内存限制,并提供详细的执行结果,包括编译错误、运行错误和输出结果等信息。可用于构建竞赛编程、在线代码编辑和面试等平台。 Rust 项目 27、czkawka:多功能文件清理工具。该项目是用 Rust 编写的,用于查找和清理重复文件、空文件夹以及相似图片等文件。它免费、开源且无广告,具有快速、跨平台和多语言等特点。使用这个工具,可以轻松地清理电脑上的无用文件,释放电脑的存储空间。 28、meilisearch:一款轻量级的 Rust 搜索引擎。该项目是采用 Rust 编写的轻量且快速的搜索引擎。它具有开箱即用、易于维护和搜索速度快等特点,提供了实时搜索、容错纠正、排序、同义词等功能,支持包括中文在内等的多种语言。 client = meilisearch.Client('http://localhost:7700', 'masterKey') client.index('movies').add_documents([ { 'id': 1, 'title': 'Carol' }, { 'id': 2, 'title': 'Wonder Woman' }, { 'id': 3, 'title': 'Life of Pi' }, { 'id': 4, 'title': 'Mad Max: Fury Road' }, { 'id': 5, 'title': 'Moana' }, { 'id': 6, 'title': 'Philadelphia'} ]) 29、MessAuto:Mac 上的自动提取短信和邮箱验证码工具。这款软件是采用 Rust 开发的,专为 macOS 平台设计的自动提取短信和邮箱验证码到剪贴板的工具。它具有免费、小巧、适用于任何应用的特点,其工作原理是监听邮件(Mail)和短信(iMessage)应用程序的消息,自动提取消息中的验证码,并将其存储到剪贴板中,运行后只有一个安静的任务栏托盘图标。 Swift 项目 30、Minesweeper-Desktop:macOS 桌面版扫雷游戏。该项目是一个用 Swift 开发的 macOS 扫雷游戏,它提供了原汁原味的扫雷体验,保留了经典的外观、自定义玩法和操控方式。来自 @孤胆枪手 的分享 31、Rectangle:macOS 上的窗口管理工具。该项目是 Swift 编写的窗口管理工具,基于 Spectacle 实现。它可通过键盘快捷键在 macOS 上快速移动窗口和调整窗口大小,适用于 macOS 10.15+、Intel 和 Apple 芯片。 其它 32、CorsixTH:主题医院游戏开源复刻版。该项目是采用 Lua 和 C++ 重新制作的经典模拟经营游戏《主题医院》,它在保留了原游戏经典玩法的基础上,增加了对现代操作系统(Windows、Linux 和 macOS)、中文语言以及高分辨率的支持。需要注意的是安装游戏后,无法立即运行,因为游戏的数据需要单独下载。 33、foc-wheel-legged-robot:一个新型结构的双轮腿机器人。该项目包含了制作这款机器人所需的全部资料,包括机械结构设计、电子硬件、算法仿真和源码等,制作的物料成本在 700 元左右。 34、h5player:网页播放器增强插件。这是一款浏览器插件,支持网页视频倍速/加速播放、截图、画中画、直播同步和下载等功能,适用于国外各大主流视频网站。 35、system-design-101:图文并茂的系统设计入门教程。该项目通过通俗易懂的文字和简洁明了的示意图,讲解系统设计的基础知识以及深层的工作原理的入门级教程。无论你是初学者还是准备面试的程序员,在这里都能有所收获。 36、wsl2-distro-manager:WSL 发行版图形管理工具。该项目是一个基于 Flutter 开发的 WSL 管理小工具,它提供了一个友好的图形化界面,让用户可以轻松配置、复制或转换 WSL 实例,免去了繁琐的命令操作。特别适合新手使用,不用再担心把 WSL 折腾坏了。来自 @mtig 的分享 开源书籍 37、Hypervisor-From-Scratch:《从零创建虚拟机管理程序》。该项目提供了一个从头开始构建虚拟机监控程序的教程,内容涵盖基本概念、硬件虚拟化的技术细节以及源码等方面。帮助开发者了解虚拟机的工作原理,并一步步构建自己的虚拟机监控程序。 机器学习 38、llm-viz:3D 可视化 GPT 大语言模型。该项目通过 3D 可视化的方式,演示了类似 GPT 的大语言模型的工作原理和推理过程。 39、nn-zero-to-hero:从零到神经网络高手。这是一门从基础开始的神经网络课程,包含视频、练习和配套源码,帮助初学者初逐步掌握神经网络的基本概念,并通过实例代码来加深理解。 40、pandas-ai:数据分析对话化的开源库。该项目将 AIGC 和数据分析相结合,让用户可以通过自然语言向自己的数据进行提问,并获得相应的回答。首先,需要将数据以 pandas 的方式进行导入,然后配置好 OpenAI TOKEN 就可以开始通过对话和绘制图表等方式与数据进行交互,而无需编写代码。 import pandas as pd from pandasai import SmartDataframe # Sample DataFrame df = pd.DataFrame({ "country": ["United States", "United Kingdom", "France", "Germany", "Italy", "Spain", "Canada", "Australia", "Japan", "China"], "gdp": [19294482071552, 2891615567872, 2411255037952, 3435817336832, 1745433788416, 1181205135360, 1607402389504, 1490967855104, 4380756541440, 14631844184064], "happiness_index": [6.94, 7.16, 6.66, 7.07, 6.38, 6.4, 7.23, 7.22, 5.87, 5.12] }) # Instantiate a LLM from pandasai.llm import OpenAI llm = OpenAI(api_token="YOUR_API_TOKEN") df = SmartDataframe(df, config={"llm": llm}) df.chat('Which are the 5 happiest countries?') 41、PhotoMaker:AI 生成各种风格人类照片的工具。该项目可以通过上传的人物照片,生成任意风格的人物图像,如写实、卡通、艺术等风格,可用于生成别具一格的头像。 最后 感谢参与分​享开源项目的小伙伴们,欢迎更多的开源爱好者来 HelloGitHub 自荐/推荐开源项目。如果你发现了 GitHub 上有趣的项目,就点击这里分享给大家伙吧! 本期有你感兴趣的开源项目吗?如果有的话就留言告诉我吧~如果还没看过瘾,可以点击阅读往期内容。 那么,下个月 28 号 不见不散,完结撒花🎉

优秀的个人博客,低调大师

Android中文API(95)——SimpleExpandableListAdapter

正文 一、结构 public abstract classSimpleExpandableListAdapter extendsBaseExpandableListAdapter java.lang.Object android.widget.BaseExpandableListAdapter android.widget.SimpleExpandableListAdapter 二、概述 一个使用Map存储组元素和子元素的静态数据,使用XML资源文件定义组元素和子元素View如何显示的简单适配器。你可以区分指定组元素返回的数据是List<Map>类型。在ArrayList中的每个实体对应ExpandalbeList中的一个组。实体中的Map列表包含了组下的每行数据。你也可以指定一个XML文件来定义用于在组元素的View的显示。此时Map中的键值将与指定的View(XML中定义的view id)对应起来。子元素的处理情况类似。注意当可折叠的深度若不只1层,返回的数据将被指定为List类型。首个List对应子元素中所代表的组,第二个List对应孙子元素在子元素组中的位置。Map亦将支持这样的特殊元素。(子元素嵌套组元素的情况) (译者注: ExpandableList 支持深度大于 1 的情况。在 andorid 自带的 ApiDomos 的例子中有这个的代码: App/View/ExpandableList3 )。 三、构造函数 publicSimpleExpandableListAdapter(Contextcontext,List<?extendsMap<String,?>> groupData, int groupLayout,String[]groupFrom, int[] groupTo,List<?extendsList<?extendsMap<String,?>>> childData, int childLayout,String[]childFrom, int[] childTo) 构造函数 参数 context 与SimpleExpandableListAdapter关联的ExpandableListView的上下文。 groupData一个Maps列表(List)。集合中的每个字典项与可折叠列表中的每个组元素一致。字典项提供了组元素包含的所有数据,并包含所有在"groupFrom"中指定的记录。 groupLayout 显示组元素的资源文件。该资源文件定义了如何显示组元素。该布局文件必须至少包括groupTo中所定义的View。(即groupTo中的View id数组必须都在该布局文件中找到) groupFrom一个键值列表。对应与组相关联的Map中的键值。 grouptTo组View应当显示groupFrom参数中的所有列数据。这些数据应当都用TextView来显示。列表中的前N个View从前N个groupFrom参数获得列元素的数据。 childData 一个Map列表的列表。外部列表中的每个实体对应一个组(按照组的位置编号)。在内部列表的每个实体对应某个组的子元素(按照子元素的位置编号)。该Map对应了子元素的数据。(按照childFrom数组中的值编号)。该Map包含了每个子元素的数据,并且应当包括所有在childFrom中指定的实体。 childLayout显示子元素的资源文件。该资源文件定义了如何显示子元素。布局文件至少应该包括所有在childTo中定义的View。(即childTo中的view id数组必须都在该布局文件中找到) childFrom 定义显示子元素的列名。该列名与childData中的子元素属性(字典键值)对应。 childTo子View应当显示childFrom参数中的所有列数据。这些数据应当都用TextView来显示。列表中的前N个View从前N个childFrom参数获得列元素的数据。 publicSimpleExpandableListAdapter(Contextcontext,List<?extendsMap<String,?>> groupData, int expandedGroupLayout, int collapsedGroupLayout,String[]groupFrom, int[] groupTo,List<?extendsList<?extendsMap<String,?>>> childData, int childLayout,String[]childFrom, int[] childTo) 构造函数。 参数 context 与SimpleExpandableListAdapter关联的ExpandableListView的上下文。 groupData一个Maps列表(List)。集合中的每个字典项与可折叠列表中的每个组元素一致。字典项提供了组元素包含的所有数据,并包含所有在"groupFrom"中指定的记录。 expandedGroupLayout定义组展开时的View的XML资源布局。该布局文件应当至少包括所有在groupTo中所定义的View。(即groupTo中的View id数组必须都在该布局文件中找到) collapasedGroupLayout定义组折叠时的View的XML资源布局。该布局文件应当至少包括所有在groupTo中所定义的View。(即groupTo中的View id数组必须都在该布局文件中找到) groupFrom一个键值列表。对应与组相关联的Map中的键值。 grouptTo组View应当显示groupFrom参数中的所有列数据。这些数据应当都用TextView来显示。列表中的前N个View从前N个groupFrom参数获得列元素的数据。 childData 一个Map列表的列表。外部列表中的每个实体对应一个组(按照组的位置编号)。在内部列表的每个实体对应某个组的子元素(按照子元素的位置编号)。该Map对应了子元素的数据。(按照childFrom数组中的值编号)。该Map包含了每个子元素的数据,并且应当包括所有在childFrom中指定的实体。 childLayout显示子元素的资源文件。该资源文件定义了如何显示子元素。布局文件至少应该包括所有在childTo中定义的View。(即childTo中的view id数组必须都在该布局文件中找到) childFrom 定义显示子元素的列名。该列名与childData中的子元素属性(字典键值)对应。 childTo子View应当显示childFrom参数中的所有列数据。这些数据应当都用TextView来显示。列表中的前N个View从前N个childFrom参数获得列元素的数据。 publicSimpleExpandableListAdapter(Contextcontext,List<?extendsMap<String,?>> groupData, int expandedGroupLayout, int collapsedGroupLayout,String[]groupFrom, int[] groupTo,List<?extendsList<?extendsMap<String,?>>> childData, int childLayout, int lastChildLayout,String[]childFrom, int[] childTo) 构造函数。 参数 context 与SimpleExpandableListAdapter关联的ExpandableListView的上下文。 groupData一个Maps列表(List)。集合中的每个字典项与可折叠列表中的每个组元素一致。字典项提供了组元素包含的所有数据,并包含所有在"groupFrom"中指定的记录。 expandedGroupLayout 定义组展开时的View的XML资源布局。该布局文件应当至少包括所有在groupTo中所定义的View。(即groupTo中的View id数组必须都在该布局文件中找到) collapasedGroupLayout 定义组折叠时的View的XML资源布局。该布局文件应当至少包括所有在groupTo中所定义的View。(即groupTo中的View id数组必须都在该布局文件中找到) groupFrom一个键值列表。对应与组相关联的Map中的键值。 grouptTo 组View应当显示groupFrom参数中的所有列数据。这些数据应当都用TextView来显示。列表中的前N个View从前N个groupFrom参数获得列元素的数据。 childData 一个Map列表的列表。外部列表中的每个实体对应一个组(按照组的位置编号)。在内部列表的每个实体对应某个组的子元素(按照子元素的位置编号)。该Map对应了子元素的数据。(按照childFrom数组中的值编号)。该Map包含了每个子元素的数据,并且应当包括所有在childFrom中指定的实体。 childLayout显示子元素的资源文件。该资源文件定义了如何显示子元素。布局文件至少应该包括所有在childTo中定义的View。(即childTo中的view id数组必须都在该布局文件中找到) lastChildLayout定义每组中最后一个子元素的View资源布局情况。该布局文件应当至少包括所有在childTo中所定义的View。(即childTo中的View id数组必须都在该布局文件中找到) childFrom 定义显示子元素的列名。该列名与childData中的子元素属性(字典键值)对应。 childTo子View应当显示childFrom参数中的所有列数据。这些数据应当都用TextView来显示。列表中的前N个View从前N个childFrom参数获得列元素的数据。 四、公共方法 publicObjectgetChild(int groupPosition, int childPosition) public longgetChildId(int groupPosition, int childPosition) (译者注:获取与在给定组给予孩子相关的数据。) publicViewgetChildView(int groupPosition, int childPosition, boolean isLastChild,ViewconvertView,ViewGroupparent) (译者注:获取子项) public intgetChildrenCount(int groupPosition) (译者注:返回在指定Group的Child数目。) publicObjectgetGroup(int groupPosition) public intgetGroupCount() (译者注:返回Group的总数目。) public longgetGroupId(int groupPosition) publicViewgetGroupView(int groupPosition, boolean isExpanded,ViewconvertView,ViewGroupparent) (译者注:获取父项) public booleanhasStableIds() public booleanisChildSelectable(int groupPosition, int childPosition) (译者注:是否让child获得焦点) publicViewnewChildView(boolean isLastChild,ViewGroupparent) 新建一个子元素View。 参数 isLastChild该child是否是组中的最后一个元素 parent 新的View的最终父亲。 返回 新的子元素View对象。 publicViewnewGroupView(boolean isExpanded,ViewGroupparent) 新建一个组元素View。 参数 isExpanded该组元素是否当前处于折叠状态 parent新View的最终父亲。 返回 新的组元素View对象。 五、补充 文章精选 ExpandableListActivity和SimpleExpandableListAdapter的使用方法 Expandable lists[blogspot] 示例代码: List < Map < String,String >> groupData = new ArrayList < Map < String,String >> (); List < List < Map < String,String >>> childData = new ArrayList < List < Map < String,String >>> (); for ( int i = 0 ;i < 20 ;i ++ ){ Map < String,String > curGroupMap = new HashMap < String,String > (); groupData.add(curGroupMap); curGroupMap.put(NAME, " Group " + i); curGroupMap.put(IS_EVEN,(i % 2 == 0 ) ? " Thisgroupiseven " : " Thisgroupisodd " ); List < Map < String,String >> children = new ArrayList < Map < String,String >> (); for ( int j = 0 ;j < 15 ;j ++ ){ Map < String,String > curChildMap = new HashMap < String,String > (); children.add(curChildMap); curChildMap.put(NAME, " Child " + j); curChildMap.put(IS_EVEN,(j % 2 == 0 ) ? " Thischildiseven " : " Thischildisodd " ); } childData.add(children); } // Setupouradapter mAdapter = new SimpleExpandableListAdapter( this , groupData, android.R.layout.simple_expandable_list_item_1, new String[]{NAME,IS_EVEN}, new int []{android.R.id.text1,android.R.id.text2}, childData, android.R.layout.simple_expandable_list_item_2, new String[]{NAME,IS_EVEN}, new int []{android.R.id.text1,android.R.id.text2} ); 本文转自over140 51CTO博客,原文链接:http://blog.51cto.com/over140/582403,如需转载请自行联系原作者

优秀的个人博客,低调大师

android95 缩放加载大图片

MainActivity: package com.itheima.loadimage; import android.os.Bundle; import android.app.Activity; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.BitmapFactory.Options; import android.graphics.Point; import android.view.Display; import android.view.Menu; import android.view.View; import android.widget.ImageView; public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } /*#加载大图片 * 计算机把图片所有像素信息全部解析出来,保存至内存,会内存溢出,因此要缩放。 * Android保存图片像素信息,是用ARGB保存 * 手机屏幕320*480,总像素:153600 * 图片宽高2400*3200,总像素7680000 图片的总像素大于屏幕的总像素,因此要对图片进行缩放,否则内存会溢出。 * 2400 / 320 = 7,宽缩放比例 * 3200 / 480 = 6,高的缩放比例 图片的宽和高的缩放比例要一样,选择大的作为缩放比例。*/ public void click(View v){ //解析图片时需要使用到的参数都封装在这个对象里了 Options opt = new Options(); //不返回图片不加载图片到内存只获取图片宽高,避免了内存溢出。 opt.inJustDecodeBounds = true; BitmapFactory.decodeFile("sdcard/dog.jpg", opt);//该方法返回null //拿到图片宽高 int imageWidth = opt.outWidth; int imageHeight = opt.outHeight; Display dp = getWindowManager().getDefaultDisplay(); //拿到屏幕宽高 int screenWidth = dp.getWidth(); int screenHeight = dp.getHeight(); //计算缩放比例 int scale = 1; int scaleWidth = imageWidth / screenWidth;//图片的宽除以屏幕的宽 int scaleHeight = imageHeight / screenHeight;//图片的高除以屏幕的高 if(scaleWidth >= scaleHeight && scaleWidth >= 1){ scale = scaleWidth;//缩放比例哪个大用哪个 } else if(scaleWidth < scaleHeight && scaleHeight >= 1){ scale = scaleHeight; } //设置缩放比例 opt.inSampleSize = scale; opt.inJustDecodeBounds = false;//设置false就会去加载图片到内存而不是仅仅加载图片的信息, Bitmap bm = BitmapFactory.decodeFile("sdcard/dog.jpg", opt);//bm就是缩放之后的图片 ImageView iv = (ImageView) findViewById(R.id.iv); iv.setImageBitmap(bm); } } #多媒体概念 * 文字、图片、音频、视频 #计算机图片大小的计算 > 图片大小 = 图片的总像素 * 每个像素占用的大小 * 单色图:每个像素表示一种颜色,则用1位就可以表示0-1,则每个像素占用1/8个字节,图片大小等于图片的像素数乘以每个像素的大小。 * 16色图:每个像素有16种颜色,则用4位0000-1111就可以表示了,即占用4位,一个字节有8位,则每个像素占用1/2个字节,图片大小等于图片的像素数乘以每个像素的大小。 * 256色图:每个像素有256种颜色,则用8位就可以表示了00000000-11111111,每个像素占用1个字节,图片大小等于图片的像素数乘以每个像素的大小。 * 24位图:每个像素占用24位则3个字节,图片大小等于图片的像素数乘以每个像素的大小。 本文转自农夫山泉别墅博客园博客,原文链接:http://www.cnblogs.com/yaowen/p/4963265.html,如需转载请自行联系原作者

优秀的个人博客,低调大师

养乐多公司确认 95 G 数据被泄露

一个自称为 DragonForce 的组织,将澳大利亚养乐多公司 (Yakult Australia)的 95.19 GB 数据进行了公开泄露。Yakult Australia方面也证实了此次网络攻击的真实性,并表示该公司的澳大利亚和新西兰 IT 系统均受到了影响。 “12 月 15 日上午,我们首次意识到发生了一起网络事件。我们还不能确认事件的严重程度。我们正在与网络安全专家合作,紧急调查这一事件。” 目前,该公司还无法确认事件究竟是如何发生的。"我们的调查正在进行中。一旦获得信息,我们将提供进一步的更新信息。" DragonForce 方称,所泄露的数据包含公司数据库、合同、护照等。科技网站BleepingComputer 对泄露的一小部分数据进行了分析,发现其中似乎包含一些商业文件、电子表格、澳大利亚养乐多公司的信贷申请、员工记录以及护照等身份证件的复印件。 DragonForce (又名 DragonLeaks)打出的口号是"companies that refused to cooperate"。这表明其首要目的是进行钱财勒索,如果勒索不成,就会公开泄露窃取的资产和数据。目前有关"DragonForce"的信息还不多,迄今为止,该组织已在其泄密网站上列出了 20 名受害者。

优秀的个人博客,低调大师

95期:Docker常见故障排查指南大全

本期头条 不能错过的干货分享:支付宝App架构、阿里自研云数据库OceanBase、阿里机器学习应用…蚂蚁金服&阿里云在线金融技术峰会将于8月30日-31日在线举办。8位蚂蚁金服和阿里云技术大V,全程在线,与你深度互动,为你答疑解惑,共同探讨。本次峰会技术议题首次公开,绝对干货!马上报名。 • 王宝强离婚成了谁的狂欢?通过阿里云·数加严肃解读数据背后的媒体传播路径 • 切换数据库引发的大战:阿里专家激辩PostgreSQL、MySQL到底哪个好? 技术干货 蚂蚁金服首席技术架构师:蚂蚁金服互联网IT运维体系实践 蚂蚁金服长期致力于技术运维体系建设,有效保障历年双11的平稳运行,在大促当天业务量年年翻倍的基础上,持续保持系统可靠安全、无资金差

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册