当前位置: 首页 > article >正文

AnyChart 的tagCloud组件

组件渲染失败错误protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_mistake_analysis); MistakeDao mistakeDao new MistakeDao(MistakeAnalysisActivity.this); ListString subjectErrorlist mistakeDao.getSubjectErrorCount(); Log.d(lxf,subjectErrorlist.toString()); anyChartView findViewById(R.id.anycart); tagCloud AnyChart.tagCloud(); // 绑定到 Spinner Spinner subjectspinnerfindViewById(R.id.subjectSpinner); String[] grades new String[] {语文,数学,英语}; ArrayAdapterString adapter new ArrayAdapter(this, android.R.layout.simple_spinner_item, grades); adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); subjectspinner.setAdapter(adapter); subjectspinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { Override public void onItemSelected(AdapterView? parent, View view, int position, long id) { String selectedSubject parent.getItemAtPosition(position).toString(); Log.d(lxf,spinnersubjectselectedSubject); //初始化标签云 setupAnyChart(selectedSubject,mistakeDao); } Override public void onNothingSelected(AdapterView? parent) {} }); //初始化练习结果recyview rvRecord findViewById(R.id.practicerecyview); PracticeDao dao new PracticeDao(this); ListPracticeRecord list dao.queryAll(); rvRecord.setLayoutManager(new LinearLayoutManager(this)); rvRecord.setAdapter(new PracticeRecordAdapter(this,list)); } private void setupAnyChart(String subject, MistakeDao mistakeDao) { // 清空旧图表 anyChartView.clear(); tagCloud.title(错题知识点分布); LoginManager loginManager LoginManager.getInstance(this); int userId loginManager.getUserId(); // 获取每个知识点对应的错题数量 ListKnowledgeCount tags mistakeDao.getKnowledgePointsWithCount(userId, subject); if (tags.isEmpty()) { tags.add(new KnowledgeCount(暂无数据, 1)); } // 找到最小和最大数量用于字体和颜色映射 int minWeight Integer.MAX_VALUE; int maxWeight Integer.MIN_VALUE; for (KnowledgeCount item : tags) { int count item.getCount(); if (count minWeight) minWeight count; if (count maxWeight) maxWeight count; } if (minWeight maxWeight) { minWeight 1; maxWeight minWeight 10; } ListDataEntry data new ArrayList(); for (KnowledgeCount item : tags) { int weight item.getCount(); // 用实际数量控制字体大小 String tag item.getKnowledgePoint(); // 知识点名称 // 颜色渐变红色系深浅 int red 255; int green 100 (int)((255 - 100) * (maxWeight - weight) / (float)(maxWeight - minWeight)); int blue 100 (int)((255 - 100) * (maxWeight - weight) / (float)(maxWeight - minWeight)); String color String.format(#%02X%02X%02X, red, green, blue); ValueDataEntry entry new ValueDataEntry(tag, weight); entry.setValue(color, color); data.add(entry); } tagCloud.angles(new Integer[]{0}); // 水平显示 tagCloud.textSpacing(5); tagCloud.animation(true); // 平滑动画 tagCloud.data(data); anyChartView.setChart(tagCloud); }问题1anyChartView.clear();TagCloud 的配置刚初始化就被打断了问题2tagCloud AnyChart.tagCloud(); tagCloud.title(错题知识点分布); tagCloud.angles(new Integer[]{0}); tagCloud.textSpacing(5); tagCloud.animation(true); anyChartView.setChart(tagCloud);每次更新spinner都要更新渲染配置由于渲染是data没准备好导致渲染失败修正后Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_mistake_analysis); MistakeDao mistakeDao new MistakeDao(MistakeAnalysisActivity.this); ListString subjectErrorlist mistakeDao.getSubjectErrorCount(); // 初始化 AnyChartView 和 TagCloud只创建一次 anyChartView findViewById(R.id.anycart); tagCloud AnyChart.tagCloud(); tagCloud.title(错题知识点分布); tagCloud.angles(new Integer[]{0}); tagCloud.textSpacing(5); tagCloud.animation(true); anyChartView.setChart(tagCloud); // 绑定到 Spinner Spinner subjectspinnerfindViewById(R.id.subjectSpinner); String[] grades new String[] {语文,数学,英语}; ArrayAdapterString adapter new ArrayAdapter(this, android.R.layout.simple_spinner_item, grades); adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); subjectspinner.setAdapter(adapter); subjectspinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { Override public void onItemSelected(AdapterView? parent, View view, int position, long id) { String selectedSubject parent.getItemAtPosition(position).toString(); Log.d(lxf,spinnersubjectselectedSubject); setupAnyChart(selectedSubject,mistakeDao); } Override public void onNothingSelected(AdapterView? parent) {} }); } // TagCloud 刷新方法只更新数据不创建新实例 private void setupAnyChart(String subject, MistakeDao mistakeDao) { LoginManager loginManager LoginManager.getInstance(this); int userId loginManager.getUserId(); ListKnowledgeCount tags mistakeDao.getKnowledgePointsWithCount(userId, subject); if (tags.isEmpty()) { tags.add(new KnowledgeCount(暂无数据, 1)); } // 找到最小和最大数量用于字体和颜色映射 int minWeight Integer.MAX_VALUE; int maxWeight Integer.MIN_VALUE; for (KnowledgeCount item : tags) { int count item.getCount(); if (count minWeight) minWeight count; if (count maxWeight) maxWeight count; } if (minWeight maxWeight) { minWeight 1; maxWeight minWeight 10; } ListDataEntry data new ArrayList(); for (KnowledgeCount item : tags) { int weight item.getCount(); String tag item.getKnowledgePoint(); // 红色渐变 int red 255; int green 100 (int) ((255 - 100) * (maxWeight - weight) / (float) (maxWeight - minWeight)); int blue 100 (int) ((255 - 100) * (maxWeight - weight) / (float) (maxWeight - minWeight)); String color String.format(#%02X%02X%02X, red, green, blue); ValueDataEntry entry new ValueDataEntry(tag, weight); entry.setValue(color, color); data.add(entry); } tagCloud.data(data); }

相关文章:

AnyChart 的tagCloud组件

组件渲染失败错误protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_mistake_analysis);MistakeDao mistakeDao new MistakeDao(MistakeAnalysisActivity.this);List<String> subjectErrorlist…...

SillyTavern技术架构解析:构建高性能LLM前端与角色系统的实战指南

SillyTavern技术架构解析&#xff1a;构建高性能LLM前端与角色系统的实战指南 【免费下载链接】SillyTavern LLM Frontend for Power Users. 项目地址: https://gitcode.com/GitHub_Trending/si/SillyTavern SillyTavern作为面向高级用户的LLM前端工具&#xff0c;通过模…...

【四足机器人运动学实战】三维腿部建模:从几何视图到完整解算

1. 三维腿部建模的核心思路 第一次接触四足机器人腿部建模时&#xff0c;我被三维空间中的复杂几何关系绕得头晕。直到发现多视图分解法这个神器&#xff0c;才真正理解如何将三维问题降维打击。想象你正在玩积木&#xff1a;从正面看只能确定高度和宽度&#xff0c;从侧面看才…...

Qwen3-ForcedAligner-0.6B字幕生成:快速上手,本地一键生成视频字幕

Qwen3-ForcedAligner-0.6B字幕生成&#xff1a;快速上手&#xff0c;本地一键生成视频字幕 做视频最头疼的是什么&#xff1f;对我来说&#xff0c;肯定是加字幕。以前要么一个字一个字敲&#xff0c;要么用在线工具&#xff0c;但隐私问题总让人不放心。最近发现一个好东西—…...

【AI自动化实战】Docker + n8n + MCP 三剑合璧:构建私有化AI智能体工具箱

1. 为什么需要私有化AI智能体工具箱&#xff1f; 最近两年AI技术爆发式发展&#xff0c;但很多企业面临一个尴尬局面&#xff1a;既想享受AI自动化带来的效率提升&#xff0c;又担心数据隐私和安全问题。我在为某金融客户部署自动化系统时就遇到过这种情况——他们连SaaS版的Ch…...

Jimeng AI Studio开源大模型部署:支持国产昇腾/寒武纪平台的适配可能性分析

Jimeng AI Studio开源大模型部署&#xff1a;支持国产昇腾/寒武纪平台的适配可能性分析 1. 引言&#xff1a;当开源AI创作工具遇上国产算力 最近&#xff0c;一个名为Jimeng AI Studio的开源项目在开发者社区里引起了不小的讨论。它基于Z-Image-Turbo底座&#xff0c;主打极速…...

如何用 Dask 替代 Pandas 实现高效 Excel 数据处理

本文详解如何将原有 pandas excel 处理流程迁移到 dask&#xff0c;重点解决大文件并行读取、惰性计算与内存优化问题&#xff0c;并提供可直接运行的改写示例及关键注意事项。 本文详解如何将原有 pandas excel 处理流程迁移到 dask&#xff0c;重点解决大文件并行读取、…...

解放华硕笔记本性能:GHelper轻量级控制工具完全指南

解放华硕笔记本性能&#xff1a;GHelper轻量级控制工具完全指南 【免费下载链接】g-helper Lightweight, open-source control tool for ASUS laptops and ROG Ally. Manage performance modes, fans, GPU, battery, and RGB lighting across Zephyrus, Flow, TUF, Strix, Scar…...

云原生实践总结

云原生实践数字化转型的核心引擎 在数字化转型浪潮中&#xff0c;云原生技术凭借其敏捷性、弹性和可扩展性&#xff0c;成为企业构建现代化应用的核心选择。云原生不仅是一种技术架构&#xff0c;更是一种方法论&#xff0c;涵盖容器化、微服务、DevOps、服务网格等关键技术。…...

mysql如何通过预编译语句优化性能_使用Prepared Statements减少解析

预编译语句能减少SQL解析开销&#xff0c;因其将SQL结构固定并缓存执行计划&#xff0c;后续仅替换参数、跳过词法语法分析等步骤&#xff1b;适用于同一模板调用≥3次且参数稳定场景。为什么预编译语句能减少 SQL 解析开销MySQL 每次执行普通 INSERT、SELECT 时&#xff0c;都…...

重组兔单抗能否突破IgG2 Fc功能优化的瓶颈?

一、为什么选择IgG2亚型作为重组兔单抗的Fc骨架&#xff1f;免疫球蛋白G&#xff08;IgG&#xff09;是治疗性抗体研发与基础免疫检测中最常见的抗体亚型。在IgG的四个亚类中&#xff0c;IgG2因其独特的二硫键排列模式及较弱的Fcγ受体结合能力&#xff0c;长期被视为"惰性…...

ViGEmBus虚拟手柄驱动技术深度解析:Windows内核级游戏控制器模拟架构揭秘

ViGEmBus虚拟手柄驱动技术深度解析&#xff1a;Windows内核级游戏控制器模拟架构揭秘 【免费下载链接】ViGEmBus Windows kernel-mode driver emulating well-known USB game controllers. 项目地址: https://gitcode.com/gh_mirrors/vi/ViGEmBus ViGEmBus作为Windows内…...

突发心梗后,这五个动作能救命!

39 岁的张先生&#xff0c;深夜突发剧烈胸痛&#xff0c;以为只是 “累着了、忍忍就好”&#xff0c;硬扛了整整 1 小时才拨打 120。送到医院时&#xff0c;他的心脏血管已完全堵塞&#xff0c;大面积心肌坏死&#xff0c;虽经抢救捡回一命&#xff0c;却留下了不可逆的心功能损…...

3分钟掌握Krita智能选区插件:AI图像分割让抠图变得如此简单

3分钟掌握Krita智能选区插件&#xff1a;AI图像分割让抠图变得如此简单 【免费下载链接】krita-vision-tools Krita plugin which adds selection tools to mask objects with a single click, or by drawing a bounding box. 项目地址: https://gitcode.com/gh_mirrors/kr/k…...

别再死记硬背了!用一张Excel表搞懂ISO 26262的ASIL等级怎么算(附模板下载)

用Excel动态计算ASIL等级&#xff1a;汽车功能安全的实战指南 刚接触ISO 26262的工程师常被ASIL等级的计算逻辑困扰——三个维度的评分标准、复杂的组合规则、抽象的安全概念。与其死记硬背表格&#xff0c;不如动手制作一个动态计算工具&#xff0c;在填写S/E/C参数时实时观察…...

C++面向对象编程核心概念全解析

好的&#xff0c;这是一个关于C面向对象编程核心概念的综合问题。我将分步解释继承、多态、类型转换以及函数重载、隐藏、覆盖的实现&#xff0c;并提供相关代码示例。1. 继承 (Inheritance)继承允许一个类&#xff08;派生类&#xff09;继承另一个类&#xff08;基类&#xf…...

小红书数据采集终极指南:Python xhs库如何5分钟破解复杂签名机制

小红书数据采集终极指南&#xff1a;Python xhs库如何5分钟破解复杂签名机制 【免费下载链接】xhs 基于小红书 Web 端进行的请求封装。https://reajason.github.io/xhs/ 项目地址: https://gitcode.com/gh_mirrors/xh/xhs 在小红书数据采集领域&#xff0c;开发者常常面…...

避障黑科技盘点:ToF传感器 vs 超声波 vs 激光雷达,你的无人机该选哪种?

无人机避障技术终极对决&#xff1a;ToF、超声波与激光雷达实战测评 当你在狭窄的巷道上空飞行&#xff0c;或是穿越茂密的树林时&#xff0c;无人机的避障能力直接决定了它能否安全返航。市面上主流的三种避障技术——ToF传感器、超声波和激光雷达&#xff0c;各有千秋却又让普…...

python ursina

## 关于Python Ursina&#xff0c;一个资深开发者的观察笔记 最近在技术社区里看到不少人在讨论Ursina这个库&#xff0c;作为一个在Python领域摸爬滚打了十多年的老程序员&#xff0c;觉得有必要聊聊这个东西。它不是那种每天都会用到的工具&#xff0c;但在特定场景下确实很有…...

【AI写代码】怎么用AI写代码

1、思路 先找到后端应该的脚本&#xff0c;让AI给编写对应的接口规范手册2、拖动接口规范手册&#xff0c;让AI给编写对应的接口测试用例 根据XXX接口规范手册&#xff0c;编写pytest框架的自动化测试用例...

抖音无水印视频批量下载:3分钟快速上手完整指南

抖音无水印视频批量下载&#xff1a;3分钟快速上手完整指南 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallback support. 抖…...

Joy-Con Toolkit终极指南:3步彻底修复你的Switch手柄漂移问题

Joy-Con Toolkit终极指南&#xff1a;3步彻底修复你的Switch手柄漂移问题 【免费下载链接】jc_toolkit Joy-Con Toolkit 项目地址: https://gitcode.com/gh_mirrors/jc/jc_toolkit Joy-Con Toolkit是一款功能强大的开源工具&#xff0c;专门用于修复和优化任天堂Switch …...

Prompt Engineering(提示词工程) vs. Agent Skills(智能体技能):从“口头吩咐”到“标准化操作手册”的进化

理解Prompt和Skill的关系&#xff0c;是决定你使用AI效率高低的分水岭。它们不是替代关系&#xff0c;而是协同进化的两个阶段。 为了让你一目了然&#xff0c;我们先通过一张核心对比表&#xff0c;把握全貌&#xff1a; 维度Prompt&#xff08;提示词工程&#xff09;Skill…...

3个步骤掌握AMD Ryzen系统调试:SMUDebugTool完整入门指南

3个步骤掌握AMD Ryzen系统调试&#xff1a;SMUDebugTool完整入门指南 【免费下载链接】SMUDebugTool A dedicated tool to help write/read various parameters of Ryzen-based systems, such as manual overclock, SMU, PCI, CPUID, MSR and Power Table. 项目地址: https:/…...

蓝桥杯C组真题避坑指南:如何高效解决数字诗意与封闭图形个数问题

蓝桥杯C组真题避坑指南&#xff1a;数字诗意与封闭图形问题的实战解析 参加蓝桥杯竞赛的C/C选手们&#xff0c;面对数字诗意和封闭图形个数这类真题时&#xff0c;往往会在算法选择和代码实现上遇到各种"坑"。本文将从实际解题经验出发&#xff0c;剖析这两类问题的…...

谷歌推广和seo收录是一回事吗?真实数据告诉你答案

每天全球发生超过85亿次搜索。用户在搜索框敲下回车键&#xff0c;屏幕在0.3秒内刷新。屏幕最上方四个带有“赞助商”字样的链接展现出来。手指点击其中一个链接&#xff0c;广告主绑定的双币信用卡里立刻扣除2.5美元。视线向下移动&#xff0c;屏幕中段排列着10条蓝色的文字链…...

终极视频PPT提取教程:3分钟将视频幻灯片转为PDF文档

终极视频PPT提取教程&#xff1a;3分钟将视频幻灯片转为PDF文档 【免费下载链接】extract-video-ppt extract the ppt in the video 项目地址: https://gitcode.com/gh_mirrors/ex/extract-video-ppt 想要快速从在线课程、会议录像或教学视频中提取PPT幻灯片内容吗&…...

徒步登山者带什么耳机?十款性价比运动耳机分享,精准不踩坑

经常去登山的人都懂&#xff0c;户外登山没个耳机真的太煎熬了&#xff0c;不管是爬坡时给自己打气&#xff0c;还是下山时缓解无聊&#xff0c;耳机都是刚需。但我挑登山用的耳机&#xff0c;踩的坑能装一背包&#xff0c;今天就实打实跟大家唠唠&#xff0c;避免你们走我的老…...

pyspark 新接口 DataSource V2 写法 写入paimon为例

5种写入动作spark新接口 DataSource V2:介绍: df.writeTo(...) 返回的是 DataFrameWriterV2&#xff0c;是 Spark 3.x 引入的 DataSource V2 写接口&#xff0c;与旧的 df.write (DataFrameWriter V1) 是两套完全不同的 API案例:df.writeTo("paimon.bi_dwd.tb1") \.u…...

国家电网投标人的福音:一个专治ECP压缩包痛点的轻量工具

你是不是也受够了&#xff1f; 每天蹲守国家电网ECP平台&#xff0c;点开标包看到的却是层层嵌套的压缩包——.zip 里套 .zip&#xff0c;.zip里混着 .doc 和 .docx和.xlsx .xls。想判断一个项目能不能投&#xff0c;光下载解压就要花一小时。更头疼的是&#xff0c;市面上 乙方…...