带文本的球形动画,用于在 Android 应用程序中使用标签云 [新闻共和国]

2023-12-21

我想在我的 Android 应用程序中创建类似于 in app.

我尝试过创建一个sphere http://www.programering.com/a/MDM3cjNwATU.html到目前为止,但任何人都可以指导我如何继续在 android 中开发这样的动画。

我们是否必须仅使用 opengl 或者我们可以通过其他替代选项来实现它。

此外,当单击文本时,它会在不同的屏幕中打开相关新闻。

EDIT

我终于找到了一些解决方案,可以在下面找到package https://github.com/amrut8winjit/MyApplication/tree/master/app/src/main/java/com/winjit/myapp/tagcloud.

但是,动画不够流畅。

让我知道是否有人可以帮助我平滑动画?


你不需要OpenGL。您可以使用简单的视图和画布来做到这一点。我为你写了一些代码。您只需将其复制到您的项目中,添加到 xml 并运行:

import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.view.View;

public class TagCloudView extends View {
    String[] tags = new String[]{"Lemon","Orange","Strawberry","Plum","Pear","Pineapple","Blackberry","Watermelon"};
    Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG);
    private float scroll = 0;
    private float prevY;

    public TagCloudView(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    @Override
    public void draw(Canvas canvas) {
        super.draw(canvas);
        float r = getHeight() / 3;
        paint.setColor(Color.BLACK);
        paint.setTextAlign(Paint.Align.CENTER);
        for (int i = 0; i < tags.length; i++) {
            float t = i + scroll / getHeight();
            float y = (float) (r * Math.cos(Math.PI * 2 * t / tags.length));    // parametric circle equation
            float z = (float) (r * Math.sin(Math.PI * 2 * t / tags.length));
            paint.setTextSize((r + z) / r/2 * 40 + 20);     // magic values, change to something better
            paint.setAlpha((int) ((r + z) / r/2 * 127 + 128));
            canvas.drawText(tags[i], getWidth() / 2, getHeight() / 2 + y, paint);
        }
    }

    @Override
    public boolean onTouchEvent(MotionEvent event) {
        if (event.getAction() != MotionEvent.ACTION_DOWN)
            scroll -= event.getY() - prevY;     // only one plane
        prevY = event.getY();
        invalidate();
        return true;
    }
}

为了实现您所描述的结果,您必须使用 Scroller 添加平滑滚动,将圆方程更改为球体方程,调整参数并添加一些 getter/setter。使用参数方程,您还可以找到用户触摸的文本。这个视图看起来像这样:

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

带文本的球形动画,用于在 Android 应用程序中使用标签云 [新闻共和国] 的相关文章

随机推荐

  • Rails 3:如何在 application.rb 中声明 Rack 中间件

    很多例子 比如这两个 如何在 Rails3 中使用机架中间件 https stackoverflow com questions 4224900 how to use rack middleware with rails3 http asc
  • VueJS 将 HTML 打印到页面

    我有一个属性 其中包含 HTML 字符串作为其属性之一 当我尝试将其打印到模板中的页面时 它实际上打印了 HTML 因此文本包含 HTML 标签 并且它本身不会被浏览器解释为 HTML 我怎样才能解决这个问题 模板 div class de
  • 无法在 Android 8 中禁用通知振动

    我试着禁用振动显示通知时 Func public static Notification buildNotifForUploaderService Context ctx String title String message Notifi
  • Pandas 数据框按日期移动列

    我有一个按日期和 ID 索引的面板数据集 看起来像这样 df pd DataFrame Date 2005 12 31 2006 03 31 2006 09 30 2005 12 31 2006 03 31 2006 06 30 2006
  • 绕过错误并继续代码

    这是我之前遇到的一个简单问题 本质上 像这样的解决方案 https stackoverflow com questions 574730 python how to ignore an exception and proceed and t
  • 在 Android 上替换 ViewPager 中的当前 Fragment

    我有一个ViewPager我必须更换第一个Fragment如果某个动作发生 public static class PagerAdapter extends FragmentStatePagerAdapter private TempCha
  • 如何添加可拖动的“文本字段”以在颤振中的图像上添加文本?

    我正在 flutter 中创建一个 Meme 生成器应用程序 我只需要知道是否有一种方法 用户本身可以在图像上添加文本并将该文本拖动到图像区域中的任何位置 这样图片看起来很有趣 我尝试过拖动框小部件 但不知道如何将其用于文本字段 这样我也可
  • SQL 2008+ NOLOCK 与 READPAST 对于报告准确性的注意事项

    了解最终的决策是业务决策 在 SQL 2008 R2 中运行的 NOLOCK 和 READPAST 之间的准确性考虑因素是什么 在与业务领域讨论变更之前 我希望能有更好的理解 我继承了许多查询 用于创建管理报告的数据视图 WITH NOLO
  • iPhone:获取 Google 地图的选定缩放级别

    当用户使用以下任一方式时 我们需要获取 MKMapView 当前选择的缩放级别 使用 Mapkit 放大或缩小 Google 地图 我们尝试过的解决方案在模拟器上运行良好 但在真实环境中运行不佳 设备 具有 iOS 3 0 1 的 iPho
  • 将 NLTK Rake 应用于 Dataframe 中的每一行

    我想应用 Rake 函数 https pypi org project rake nltk https pypi org project rake nltk 到我的数据框中的每一行 我可以将该函数单独应用于特定行 但不能将其附加到数据帧 这
  • Solr 索引中缺少 Id 字段

    我刚刚发现我的 Solr 索引不包含 id场地 并且无法获取项目 id UniqueId 存在 但这并不是真正有用 public class MyClass IndexField BuiltinFields UniqueId public
  • 在二叉搜索树中查找最小和的算法改进

    我编写了以下函数来找出二叉搜索树中任何路径的最小总和 int minSumPath TreeNode root if root NULL return 0 int sum root gt value if root gt left NULL
  • 存储 API URL 并在 Angular 中使用的最佳方式是什么

    我想将所有 API URL 存储在一个位置 即在 JSON 文件中 我想在我的应用程序中使用该 JSON 文件 i 保存 JSON 文件的最佳位置是哪里 ii 如何使用 Type 脚本文件中的 URL 我会将基本网址存储在environme
  • Elasticsearch 重新索引现有类型映射中的项目

    我向类型映射添加了一个新属性 我需要重新索引该类型的所有现有项目才能使用新属性 我应该使用哪个 API 来执行此操作 如果您要添加索引中以前从未存在过的新字段 则无需重新索引 只需使用 PUT 映射 API 添加新字段http nocf w
  • 配置 ActiveStorage 以使用具有 IAM 角色的 S3

    我正在尝试配置 ActiveStorage 以使用 S3 存储桶作为存储后端 但我不想传递任何access key id secret access key region 相反 我想使用之前定义的 IAM 角色 提到了这样的配置here h
  • C++11 具有重要成员的匿名联合

    我正在更新我的一个结构 我想向其中添加一个 std string 成员 原始结构如下所示 struct Value uint64 t lastUpdated union uint64 t ui int64 t i float f bool
  • 在 Visual Studio 中逐步完成“托管到本机转换”?

    在试图回答的同时这个问题 https stackoverflow com questions 9378626我决定需要在调试器视图中手动单步执行编组过程 不幸的是 Visual Studio 似乎直接跳过了所有这些有趣的代码 这是 P In
  • 如果我想将 Play Framework 应用部署到多台服务器上,该怎么办?

    如果我想使用 Play Framework 2 x 将应用程序部署到多个服务器 我需要关心哪些事情 如果我使用 内置 会话 它是否可用于所有节点 因为它们存储在浏览器端 除了将变量存储在数据库中之外 如何在应用程序范围内共享变量 当将 Pl
  • 如何在for循环内进行同步延迟?

    我正在编写一个 NodeJS 脚本 它通过 GET 调用一堆 API 使用request来自 npm 并将响应保存在 JSON 文件中 我正在使用一个for循环遍历ID以传递给API 但是我在调 用突发之间设置延迟时遇到了麻烦 这样我就不会
  • 带文本的球形动画,用于在 Android 应用程序中使用标签云 [新闻共和国]

    我想在我的 Android 应用程序中创建类似于 in app 我尝试过创建一个sphere http www programering com a MDM3cjNwATU html到目前为止 但任何人都可以指导我如何继续在 android