热门标签 | HotTags
当前位置:  开发笔记 > Android > 正文

Android实现3D标签云简单效果

这篇文章主要为大家详细介绍了Android实现3D标签云简单效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文实例为大家分享了Android实现3D标签云效果展示的具体代码,供大家参考,具体内容如下

一、关于3D标签云

TagCloudView是一个完全基于Android ViewGroup编写的控件,支持将一组View展示为一个3D标签云,并支持全方向滚动。
GitHub中的链接地址

(一)效果

页面上标签的数据可以自己定义,数据页面可以滑动选择。

b1

(二)AndroidStudio中使用

1.在build.gradle中添加

compile ‘com.moxun:tagcloudlib:1.0.3'

2.在布局文件中引入

3.设置Adapter 继承TagsAdapter,实现以下方法

(1)public int getCount();

返回Tag数量

(2)public View getView(Context context, int position, ViewGroup parent);

返回每个Tag实例

(3)public Object getItem(int position);

返回Tag数据

(4)public int getPopularity(int position);

针对每个Tag返回一个值,但是什么作用

4.标签云对象的属性设置

二、简单的使用示例

(一)布局文件activity_main.xml设计

<&#63;xml version="1.0" encoding="utf-8"&#63;>


 

(二)设计标签云中的字体的布局

<&#63;xml version="1.0" encoding="utf-8"&#63;>


(三)设计字体的颜色选择器

(res文件夹下创建color文件夹,创建textcolor_tags.xml)

<&#63;xml version="1.0" encoding="utf-8"&#63;>



 
 

(四)创建适配器的类

package com.lwz.cloud;

import android.content.Context;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;

import com.moxun.tagcloudlib.view.TagsAdapter;

import java.util.List;


/**
 * 标签云页面数据的适配器
 */

public class CursorTagsAdapter extends TagsAdapter {


 private List mList;

 public CursorTagsAdapter( List list) {
  this.mList = list;
 }

 @Override
 public int getCount() {
  return mList.size();
 }

 @Override
 public View getView(Context context, int position, ViewGroup parent) {
  TextView tv = (TextView) View.inflate(context, R.layout.item_tag, null);
  tv.setText(getItem(position));
  return tv;
 }

 @Override
 public String getItem(int position) {
  return mList.get(position);
 }

 @Override
 public int getPopularity(int position) {
  return 1;
 }

 @Override
 public void onThemeColorChanged(View view, int themeColor) {

 }
}

(五)主方法调用类

package com.lwz.cloud;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Toast;

import com.moxun.tagcloudlib.view.TagCloudView;

import java.util.ArrayList;
import java.util.List;

/**
 * 标签云效果界面的设计
 */
public class MainActivity extends AppCompatActivity implements TagCloudView.OnTagClickListener {
 TagCloudView tcvTags;//标签云对象
 List list = new ArrayList<>();//标签云数据的集合
 List listClick = new ArrayList<>();//点击过的标签云的数据的集合

 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_main);
  //给集合添加数据
  for (int i = 0; i <20; i++) {
   list.add("这是标签" + i);
  }

  tcvTags = (TagCloudView) findViewById(R.id.tcv_tags);
  //设置标签云的点击事件
  tcvTags.setOnTagClickListener(this);
  //给标签云设置适配器
  CursorTagsAdapter adapter = new CursorTagsAdapter(list);
  tcvTags.setAdapter(adapter);
 }

 /**
  * 点击标签是回调的方法
  */
 @Override
 public void onItemClick(ViewGroup parent, View view, int position) {
  view.setSelected(!view.isSelected());//设置标签的选择状态
  if (view.isSelected()) {
   //加入集合
   listClick.add(list.get(position));
  } else {
   //移除集合
   listClick.remove(list.get(position));
  }
  Toast.makeText(this, "点击过的标签:" + listClick.toString(), Toast.LENGTH_SHORT).show();
 }
}

程序运行后的界面:

g1

点击几个标签后显示的界面:

g2

这就是标签云的简单示例。这个标签云默认情况下是会匀速滚动的。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


推荐阅读
  • Android LED 数字字体的应用与实现
    本文介绍了一种适用于 Android 应用的 LED 数字字体(digital font),并详细描述了其在 UI 设计中的应用场景及其实现方法。这种字体常用于视频、广告倒计时等场景,能够增强视觉效果。 ... [详细]
  • RecyclerView初步学习(一)
    RecyclerView初步学习(一)ReCyclerView提供了一种插件式的编程模式,除了提供ViewHolder缓存模式,还可以自定义动画,分割符,布局样式,相比于传统的ListVi ... [详细]
  • Android 九宫格布局详解及实现:人人网应用示例
    本文深入探讨了人人网Android应用中独特的九宫格布局设计,解析其背后的GridView实现原理,并提供详细的代码示例。这种布局方式不仅美观大方,而且在现代Android应用中较为少见,值得开发者借鉴。 ... [详细]
  • 优化ListView性能
    本文深入探讨了如何通过多种技术手段优化ListView的性能,包括视图复用、ViewHolder模式、分批加载数据、图片优化及内存管理等。这些方法能够显著提升应用的响应速度和用户体验。 ... [详细]
  • 本文详细介绍了Java编程语言中的核心概念和常见面试问题,包括集合类、数据结构、线程处理、Java虚拟机(JVM)、HTTP协议以及Git操作等方面的内容。通过深入分析每个主题,帮助读者更好地理解Java的关键特性和最佳实践。 ... [详细]
  • 解决微信电脑版无法刷朋友圈问题:使用安卓远程投屏方案
    在工作期间想要浏览微信和朋友圈却不太方便?虽然微信电脑版目前不支持直接刷朋友圈,但通过远程投屏技术,可以轻松实现在电脑上操作安卓设备的功能。 ... [详细]
  • 本文详细介绍了 Java 中 org.apache.xmlbeans.SchemaType 类的 getBaseEnumType() 方法,提供了多个代码示例,并解释了其在不同场景下的使用方法。 ... [详细]
  • 本文深入探讨了 com.example.android.sunshine.data.TestUtilities 中 validateThenCloseCursor() 方法的使用方法及其代码示例,旨在帮助开发者更好地理解和应用该方法。 ... [详细]
  • 从零开始构建完整手机站:Vue CLI 3 实战指南(第一部分)
    本系列教程将引导您使用 Vue CLI 3 构建一个功能齐全的移动应用。我们将深入探讨项目中涉及的每一个知识点,并确保这些内容与实际工作中的需求紧密结合。 ... [详细]
  • 本报告涵盖了个人博客账号和码云账号的注册过程,以及对网络工程专业学习的反思与展望。通过回顾初入大学时的专业选择,分析当前的专业知识和技能水平,并对未来的职业规划进行了详细讨论。 ... [详细]
  • 本文详细介绍了 com.facebook.drawee.view.SimpleDraweeView 中的 setScaleType 方法,提供了多个实际代码示例,并解释了其在不同场景下的应用。 ... [详细]
  • libsodium 1.0.15 发布:引入重大不兼容更新
    最新发布的 libsodium 1.0.15 版本带来了若干不兼容的变更,其中包括默认密码散列算法的更改和其他重要调整。 ... [详细]
  • 本文详细记录了在银河麒麟操作系统和龙芯架构上使用 Qt 5.15.2 进行项目打包时遇到的问题及解决方案,特别关注于 linuxdeployqt 工具的应用。 ... [详细]
  • VSCode与Gitee集成:项目提交的高效实践
    本文介绍如何利用VSCode内置的Git工具将项目提交到Gitee,简化Git命令的使用,提升代码管理效率。同时分享一些常见的踩坑经验和解决方案。 ... [详细]
  • 本文详细介绍了如何在ECharts中使用线性渐变色,通过echarts.graphic.LinearGradient方法实现。文章不仅提供了完整的代码示例,还解释了各个参数的具体含义及其应用场景。 ... [详细]
author-avatar
冷恋企鹅
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有