如何拖动旋转的 DragShadow?

2024-01-04

我用 ObjectAnimator 旋转了 TextView,如下所示:

ObjectAnimator rotate = ObjectAnimator.ofFloat(aRotatedTextView, "rotation", 0f, someAngle);

现在,我尝试在长按时拖放旋转的(!) TextView,如下所示:

public boolean onLongClick(View view) {
    ClipData data = ClipData.newPlainText("DragData", (String) view.getTag());
    DragShadowBuilder dragShadowBuilder = new View.DragShadowBuilder(view);
    mDragInProgress = view.startDrag(data, dragShadowBuilder, view, 0);
    view.setVisibility(View.INVISIBLE);
    return true;
}

所发生的情况是,创建的 DragShadow 没有旋转(角度==0)。我见过很多使用位图(但不是旋转)的示例,但我无法正常工作。 有没有办法创建旋转的 DragShadow?


需要同样的东西。像这样实现它(还包括缩放)

new OnTouchListener() {
    @Override
    public boolean onTouch(final View view, MotionEvent event) {

    switch (event.getAction()) {
        case MotionEvent.ACTION_DOWN:
    double rotationRad = Math.toRadians(view.getRotation());
    final int w = (int) (view.getWidth() * view.getScaleX());
    final int h = (int) (view.getHeight() * view.getScaleY());
    double s = Math.abs(Math.sin(rotationRad));
    double c = Math.abs(Math.cos(rotationRad));
    final int width = (int) (w * c + h * s);
    final int height = (int) (w * s + h * c);
    DragShadowBuilder shadowBuilder = new View.DragShadowBuilder(view) {
        @Override
        public void onDrawShadow(Canvas canvas) {
            canvas.scale(view.getScaleX(), view.getScaleY(), width / 2,
                    height / 2);
            canvas.rotate(view.getRotation(), width / 2, height / 2);
            canvas.translate((width - view.getWidth()) / 2,
                    (height - view.getHeight()) / 2);
            super.onDrawShadow(canvas);
        }

        @Override
        public void onProvideShadowMetrics(Point shadowSize,
                Point shadowTouchPoint) {
            shadowSize.set(width, height);
            shadowTouchPoint.set(shadowSize.x / 2, shadowSize.y / 2);
        }
    };

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

如何拖动旋转的 DragShadow? 的相关文章

  • 如何在屏幕截图后从 BroadcastReceiver 更新 UI

    主要问题 我需要在屏幕截图发生后更新用户界面 我尝试以编程方式在 MainActivity java 的 onResume 中创建 BroadcastReceiver 但由于某种原因它没有获取屏幕截图 因此 我尝试了清单中声明的 Broad
  • FCM 通知 onclick 未打开所需的活动

    我已经尝试了这里发布的几乎所有解决方案以及每个标志的组合 但它不起作用 以下是我遇到问题的用例 1 当我在申请时FCM通知打开我想要的活动 数据被传递到onNewIntent在主要活动中 当应用程序处于前台时它工作正常 2 当处于后台模式
  • 以编程方式切换片段

    我有一个带有两个片段的寻呼机 每个片段都有自己的 xml 我的问题是是否可以以编程方式从一个片段切换到另一个片段并触发任何侦听器 此致 我假设你的意思是浏览器 http developer android com reference and
  • android中如何释放内存避免内存泄漏

    While going through the android developer site i found this 它说为了避免内存泄漏 我们应该在 onStop 中释放资源 但如何做到这一点 基本上 任何被正确清空的对象都被视为已释放
  • setRotation(90) 以肖像模式拍照不适用于三星设备

    根据文档 设置旋转 90 http developer android com reference android hardware Camera Parameters html setRotation 28int 29应旋转捕获的 JPE
  • 如何使用意图将哈希图值发送到另一个活动

    如何发送HashMap从一个意图到第二个意图的价值 另外 如何检索HashMap第二个活动的价值 Java 的 HashMap 类扩展了Serializable接口 这使得可以轻松地将其添加到意图中 使用Intent putExtra St
  • sqlite android 中的波斯语/阿拉伯语搜索给出了错误的结果

    我的 sqlite 数据库有问题 它似乎不支持完整的波斯 阿拉伯字符 当我根据波斯字符搜索某些字段时 大多数时候 Sqlite 无法识别这些字符 我通过从 HTML 文件复制数据将数据插入数据库 所以当我输入字符串并搜索时 没有结果显示 但
  • 在使用单独方向布局旋转设备的同时继续播放 YouTube 播放器

    我正在尝试将包含 YouTube 播放器的视图添加到当我旋转设备时继续播放的活动 由于 UI 不仅仅包含视频 因此我使用YouTubePlayerFragment 当方向从纵向变为横向时 系统应使用不同的布局文件 此布局还包括 YouTub
  • 恢复 webview 滚动位置?

    我想要拯救国家 of my webView以其页面滚动位置当用户离开应用程序时并在用户再次打开应用程序时恢复它们 这样 用户可以继续阅读恢复的网页视图内容 向下滚动到恢复的位置 以下是我正在使用的方法 Override protected
  • 如何使用 Google Assistant 触发我的应用程序

    我正在尝试构建一个可以由谷歌助手触发的简单应用程序 就像用户说 嘿 Google 打开 TestApp 或 嘿 Google 从 TestApp 执行 xyz 一样 最好的方法是什么 对话流 说 好吧 Google 使用 您的应用程序 执行
  • Gradle 从服务器收到状态代码 403:禁止

    由于这个错误 我无法构建我的 android 项目 Gradle 无法获取https www jitpack io com github Raizlabs DBFlow dbflow 3 1 1 dbflow 3 1 1 pom https
  • Pre-Lollipop 设备上 ImageButton 的高度效果

    我正在尝试为 ImageButton 应用海拔效果 它在我运行 Android 5 0 的 Nexus 平板电脑上运行良好 但在 Lollipop 之前的设备上无法运行 尝试了 ViewCompat setElevation view va
  • EditText 的椭圆形

    EditText 的椭圆尺寸仅适用于 输入类型 无 可编辑 false 但这使我的 EditText 无法编辑 考虑到本地化 如何处理这个问题 预期行为 EditText 中的文本应以省略号显示 EditText 应该是可编辑的 尝试过这些
  • 如何调整图像大小而不模糊,或使用毕加索

    我需要帮助来改进我的代码 我在做什么 主活动中有一个按钮 单击时 用户选择图像 之后 图像通过意图传递到另一个活动 add image java 并显示在图像视图中 之后我将图像发送到服务器 我的问题 1 我想要将路径图像发送到第二个意图然
  • 从 Android 中的 ListView 中删除项目时遇到 IndexOutOfBoundException?

    我有一个simple list item multiple choicelistview 在我的布局中 我试图从中删除所有选定的项目 我知道如何删除它 但删除项目时遇到两个主要问题 我的程序不会删除超过 2 个项目 例如如果我选择了 4 个
  • 程序类型已存在:android.support.v4.app.BackStackRecord

    我升级了Android Studio 在最新版本中发现了很多问题 尽管存在很多类似的问题 但我检查了所有答案 但没有一个对我有用 这是我在编译代码时遇到的错误 已存在的程序类型 android support v4 app BackStac
  • 如何在声音输入时触发振动?

    我正在尝试创建一个 Android 应用程序 在其中过滤蜂鸣声的一个特定频率并使手机振动 我正在从移动设备的 MIC 获取输入并使用 MediaRecorder 类 通过使用该类 我可以录制 保存和播放输入 现在我需要我的手机在发出蜂鸣声
  • 检索 StatusbarNotification 详细信息(标题、通知文本)的可靠方法

    我想从中获取尽可能多的信息StatusBarNotification 尽可能的对象 目前 唯一可以访问的 可靠 信息是tickerText 财产 我使用以下代码来获取通知的标题和文本RemoteViews 但很多时候 标题和 或文本只是 n
  • Android:永久保存文件(即使在清除数据/卸载后)

    我想知道是否有一种方法可以永久存储少量数据 永久我的意思是即使用户清除应用程序数据 卸载应用程序 我也希望数据保留下来 我知道当用户清除应用程序数据 卸载应用程序时 共享首选项和数据库将被删除 我也知道我可以在 SD 卡上保存内容 但是如果
  • 构建 AOSP 5.1 时出现 API 更改错误

    目前正在尝试构建 android 5 1 0 r5 我已经检查了来源并且没有做任何修改 但是 编译时出现以下错误 Checking API checkpublicapi current out target common obj PACKA

随机推荐

  • 在矩阵中查找从左上角到右下角的路径时遇到问题吗?

    我有一个20x30充满随机数的矩阵 0 1 2 我需要找到一条仅由 1 组成的路径 从左上角开始到右下角结束 我需要帮助找到 1 的路径 另外 如何打印我所踏过的每个数字的坐标 我可以显示我所踏过的数字 但在显示其坐标时遇到问题 这是我当前
  • 使用 tostring 聚合字符串并在 r 中对它们进行计数

    应用 dplyr 代码后我得到了以下数据框 Final df lt df gt group by clientID month gt summarise test toString Sector gt as data frame 这给了我以
  • 编辑巨大的sql数据文件

    我有一个 23GB 的文件 我想编辑第 23 行 但服务器上只有 200 MB 可用 RAM 我不想完全打开该文件 因为我只剩下 20GB 可用磁盘空间 我怎样才能做到这一点 我尝试使用 head tail sed 但它似乎创建了一个临时文
  • 具有动态功能的即时应用程序始终显示带有 1 个选项的消歧对话框

    我正在尝试动态功能和即时应用程序 为了在各种功能之间导航 我使用深层链接 每次我导航到另一个 Activity 时 我都会看到消歧对话框 时间不到 1 秒 其中列出了 1 个应用程序 请注意 一次 和 始终 荷兰语 选项是如何变灰的 示例
  • 从 Node 到 Postgres DB 的查询不是 UTF8

    对于一个项目 我确实必须用 JS Node 编写一个服务器 该服务器从 Windows 计算机上的数据库 Postgres 返回元素 一切都 工作正常 连接正常并且返回元素 但是 我确实遇到了编码问题 我的元素是法语的 因此 服务器无法正确
  • 如何在 CasperJS 中禁用 css?

    我知道如何禁用图像和插件 但 CasperJS 中似乎没有禁用 css 的明显选项 有人知道这是如何运作的吗 假设您想禁止加载所有外部样式表 您可以通过中止加载 css 文件的请求来实现 这是通过将函数分配给options onResour
  • Bootstrap 4 导航链接悬停效果

    我试图仅针对导航栏中的 a 链接 而不是正斜杠 放置悬停效果 但我似乎无法只访问 a 链接 效果最终会沿着整个导航栏运行 这里似乎与 Bootstrap 4 有冲突 HTML
  • “区域”之间的 ASP.NET MVC `Html.ActionLink`

    我已向我的 MVC3 项目添加了一个新区域 并且我正在尝试从 Layout 页面链接到新区域 我添加了一个名为 Admin 的区域 其中有一个控制器 Meets 我使用 Visual Studio 设计器添加区域 以便它具有正确的区域注册类
  • 如何使用.Net Core编写Linux守护进程

    我可以编写一个长时间运行的 CLI 应用程序并运行它 但我假设它不会满足人们对符合标准的 Linux 守护进程的所有期望 响应 SIGTERM 由 System V init 进程启动 忽略终端 I O 信号 etc https www p
  • 如何在apollo链接中返回错误响应?

    我在模式拼接中使用阿波罗链接作为访问控制层 我不太确定如果用户没有访问特定操作的权限 如何使链接返回错误响应 我知道这样的包graphql shield and graphql middleware但我很好奇是否可以使用 apollo li
  • Git:如何在预提交挂钩中重新暂存暂存文件

    我正在写一个 git 预提交钩子 该脚本可以重新格式化一些代码 因此它可以修改暂存文件 如何重新暂存所有已暂存的文件 如果没有pre commit hook上下文 你可以获取暂存文件的列表 https stackoverflow com q
  • exit().remove() 在节点离开视图时不会删除它

    我正在使用 d3js 相对于当前时间从右向左移动圆点 我有几个问题 1 exit remove 不起作用 节点一旦离开视图就不会被删除 2 圆圈的过渡有点跳跃 var circles g selectAll path circles dat
  • python/django 中 setattr 和对象操作之间的区别

    我有以下模型 class Ticket models Model title models CharField merged to models ForeignKey self related name merger ticket null
  • 如何使用 Google Tink 创建对称加密密钥?

    我有一个密钥 例如 thisist0psecret 我想将其用作对称加密 解密密钥谷歌 Tink 库 https github com google tink 我很困惑我无法做到这一点简单的事情 我可以生成new keys 使用各种模板AE
  • 将静态 JSON 添加到 Android Studio 项目

    我想将静态 JSON 添加到 Android Studio 项目中 然后可以在整个项目中引用它 有谁知道这样做的最佳方法 更详细地说 我想做的是 1 从 Google Places API 中提取数据 2 查找与静态 JSON 对象中的地点
  • rsync git 大存储库

    我正在尝试将 git 存储库克隆到我的本地计算机上 但它说 malloc failed 因为存储库太大了 有谁知道我可以用来复制目录的确切 rsync 命令 或者我还能做些什么来克隆一个大存储库 我尝试了 rsync 但出现以下错误 Inv
  • Google 云构建不替换 firebase 令牌的环境变量

    我有一个云构建触发器 尝试将我的应用程序推送到 firebase 托管 为此 我有一个加密的 env enc 文件 其中包含部署所需的 firebase 令牌 在构建过程中 我解密了该文件并尝试部署 但遇到了未经授权的消息 我尝试在部署脚本
  • Composer 自动加载文件夹中的多个文件

    我在最新的项目中使用作曲家并像这样映射我的函数 require require dev autoload psr 4 files src function test function php 我想文件夹函数中会有很多文件 例如 real f
  • UNIX系统中如何连接两个文件的列

    我有2个文件 每个文件有一列多行 每个文件的行是相同的 如何将两个文件的列连接在一起 以便最终结果文件具有来自 file1 和 file2 的两列 例如 文件1是 1 2 3 文件2是 a b c 预期输出是 1 a 2 b 3 c 只需使
  • 如何拖动旋转的 DragShadow?

    我用 ObjectAnimator 旋转了 TextView 如下所示 ObjectAnimator rotate ObjectAnimator ofFloat aRotatedTextView rotation 0f someAngle