在拖动发生时更改 android 中的dragshadow

2023-12-10

面临让dragshaddow(由创建的拖动阴影生成器)在拖动时对某些东西做出反应。

有人知道应该如何做吗?


这是我的自定义拖动阴影生成器的完整代码(自定义拖动阴影的要点).

然而,正如其他人所说,不可能使用 API-11 中引入的本机功能来修改拖动阴影。

package com.marcingil.dragshadow;

import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Point;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
import android.view.View;

public class ImageDragShadowBuilder extends View.DragShadowBuilder {
    private Drawable shadow;

    private ImageDragShadowBuilder() {
        super();
    }

    public static View.DragShadowBuilder fromResource(Context context, int drawableId) {
        ImageDragShadowBuilder builder = new ImageDragShadowBuilder();

        builder.shadow = context.getResources().getDrawable(drawableId);
        if (builder.shadow == null) {
            throw new NullPointerException("Drawable from id is null");
        }

        builder.shadow.setBounds(0, 0, builder.shadow.getMinimumWidth(), builder.shadow.getMinimumHeight());

        return builder;
    }

    public static View.DragShadowBuilder fromBitmap(Context context, Bitmap bmp) {
        if (bmp == null) {
            throw new IllegalArgumentException("Bitmap cannot be null");
        }

        ImageDragShadowBuilder builder = new ImageDragShadowBuilder();

        builder.shadow = new BitmapDrawable(context.getResources(), bmp);
        builder.shadow.setBounds(0, 0, builder.shadow.getMinimumWidth(), builder.shadow.getMinimumHeight());

        return builder;
    }

    @Override
    public void onDrawShadow(Canvas canvas) {
        shadow.draw(canvas);
    }

    @Override
    public void onProvideShadowMetrics(Point shadowSize, Point shadowTouchPoint) {
        shadowSize.x = shadow.getMinimumWidth();
        shadowSize.y = shadow.getMinimumHeight();

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

在拖动发生时更改 android 中的dragshadow 的相关文章

随机推荐

  • 使用原型继承重写方法

    我正在使用这个克隆方法进行原型继承专业 JavaScript 设计模式这基本上是相同的Crockford 的 object 函数 唯一的区别是 Crockford 添加了调用括号 但由于 F 为空 我不确定这是否重要 我认为这不是问题 cl
  • Delphi TBitmap - 为什么 Pixels 和 ScanLine 不同?

    在使用 32 位 TBitmap 时 我从 Canvas Pixels 切换到 ScanLine 然后我将值设置为红色 却发现它显示为蓝色 知道为什么吗 这是代码摘录 procedure TForm1 FormPaint Sender TO
  • 在 Android KitKat 上隐藏导航栏后显示导航栏

    在我的应用程序中 我想让用户隐藏或显示导航栏 后退 主页 菜单 系统栏 电池 wifi 通知 应始终隐藏 我用以下代码隐藏系统栏 getWindow setFlags WindowManager LayoutParams FLAG FULL
  • JQuery3.0 抛出错误设置只有 getter firefox 的属性

    我动态创建了 SVG 圆圈 并使用 JQuery 将其小圆圈动画化为大圆圈 动画在其他 JQuery 版本中工作正常并抛出异常 设置一个只有 getter 的属性 仅适用于 JQuery 3 0 版本 我在网上搜了一下 这是由于属性没有se
  • htaccess - 在一台共享服务器上托管多个域,

    我有一个 site1 com 作为我的主站点 我在根目录 site1 和 site2 中创建了两个文件夹 我使用 Htaccess 将 site1 com 的流量重定向到文件夹 site1 Site2 也可以使用目录 site2 作为 si
  • 如何在 ios 中打开日历 .ics 文件?

    我正在尝试在我的应用程序中下载并打开 ics 文件 我发现了一些问题 这是我正在使用的一些代码 NSString path NSBundle mainBundle pathForResource http www nmsd wednet e
  • VSCode 终端 + Git Bash 对于任何命令都“找不到命令”

    我的settings json非常简单 它用sh exe 来自git 替换cmd exe terminal integrated shell windows C Program Files x86 Git bin sh exe 打开外壳后
  • 如何对 firebase 中的多个值求和

    我也是 Android 编程新手firebase 首先看图片 详情图片 在那里我想得到所有 成本 部分的总计 总和 我已经创建了这样的参考 DatabaseReference databaseBazars firebaseDatabase
  • -Dcucumber.options 在 mvn 测试中被忽略

    我正在使用 mvn test 来运行黄瓜测试 但是当我尝试在命令行上传递选项时 Dcucumber options 选项将被忽略 并使用运行程序类中 CucumberOptions 中指定的选项 例如 如果我只是尝试显示黄瓜帮助 它会忽略它
  • 是否可以使用 Tkinter 创建适用于 Android 或 iOS 的应用程序? [关闭]

    Closed 这个问题需要多问focused 目前不接受答案 我正在尝试创建一个应用程序 tkinter 确实很有帮助 只是想确认 Tkinter 是否会成功引导我找到适用于 IOS 或 Android 的应用程序 不幸的是 Tkinter
  • 使用 jquery.validate.js 插件进行条件表单验证

    谁能告诉我如何编写一条规则来验证用户是否没有选择 填充单选按钮选项或 可选 文本字段 如果没有复选框选项 该规则应该只给出一条消息 myradiogroup被选择并且文本字段 email2是空的 我的表单代码
  • 无法在 C# 中解析 Oracle 时间戳

    我有 Oracle 的时间戳 string timestamp 23 JUN 14 09 39 04 000000000 AM 我无法将其解析为系统日期时间对象 我用了 CultureInfo provider CultureInfo In
  • 尝试在一个头文件中使用另一个头文件中的类

    我有一个weightedDirectedGraph类和一个vertex类在他们自己的头文件中 weightedDirectedGraph h 就是这个 ifndef GRAPH define GRAPH include
  • JavaFX:显示简单消息的最佳方式是什么?

    在我的应用程序中 我需要显示警告 信息消息 但我不知道一种简单的方法来做到这一点 因为 JavaFX 上没有 JOptionPane 或类似的组件 有一个 Popup 类 但是您必须设置许多参数才能为简单的消息获得合适的布局 位置 背景颜色
  • iOS:以编程方式在 UITextView 中上下左右移动光标

    我使用以下代码将光标位置移动到距离开头 5 个字符UITextField txtView selectedRange NSMakeRange 5 0 现在 如果我的光标位于任意位置 如下图所示 如何上下左右移动光标 向左和向右应该或多或少容
  • Azure 数据工厂 CI npm 验证步骤突然崩溃

    我们一直在使用 Azure 数据工厂的 新 CI CD 设置 如文档页面所述 https learn microsoft com en us azure data factory continuous integration deliver
  • 如何使用 iOS 5.1 打开首选项/设置?

    看起来 iOS 5 1 已经破坏了用于将用户导航到首选项的标准 URL 编码 例如 UIApplication sharedApplication openURL NSURL URLWithString prefs root TWITTER
  • 特定时间段内的平均值

    我在 python 中有一个来自 h5 文件的相当大的表 表的开头看起来有点像这样 table WIND REL DIRECTION deg WIND SPEED kts 735381 370833 0 0 000000 735381 37
  • 将数据传递给Python中的另一个类

    我正在使用 Twisted 并有几个回调 它们都是不同类型的 因此它们不共享工厂 我正在尝试将数据从一个回调对象获取到另一个回调对象 class CallbackA object def transmit self data self se
  • 在拖动发生时更改 android 中的dragshadow

    面临让dragshaddow 由创建的拖动阴影生成器 在拖动时对某些东西做出反应 有人知道应该如何做吗 这是我的自定义拖动阴影生成器的完整代码 自定义拖动阴影的要点 然而 正如其他人所说 不可能使用 API 11 中引入的本机功能来修改拖动