Tag: 合成

在Java中设置BufferedImage alpha掩码

我有两个从pngs加载的BufferedImages。 第一个包含一个图像,第二个是图像的alpha蒙版。 我想通过应用alpha蒙版来创建两者的组合图像。 我的google-fu失败了 我知道如何加载/保存图像,我只需要从两个BufferedImage到一个具有正确Alpha通道的BufferedImage的位置。

Kotlin Android扩展视图背后的编辑魔法是什么?

将kotlinx.android.synthetic.main.<layout-name>.view.*格式的输入添加到Kotlin源代码时,它会改变Android Studio编辑器的行为。 具体来说,它现在认为任何类型的属性View有一个属性对应的布局文件中的每个视图分配一个ID。 我假设我正在做一个不是 Activity或Fragment 。 例如,假设我在源文件中声明了一个ViewHolder ,并向其中添加了一个名为x的View属性。 进一步说,我有一个名为item_test的布局,其中有三个视图声明已经分配了id, a , b和c 。 当我添加一个布局名称 item_test上面的表单的综合导入突然x有三个新的属性, a , b和c 。 或者,更正确地说,编辑器使得它看起来好像x具有这些属性。 经过一番研究,我得出以下结论: 盲目地添加布局视图ID作为属性。 任何由这样一个综合导入暗示的视图id被添加到View类型的任何属性(或View的子类)中。 这包括由类继承的这种类型的属性。 由于属性是盲目添加的,因此开发者有义务确保在合成属性被访问之前分配对应于合成导入的运行时视图,否则将引发异常。 如果在一个文件中指定了两个或多个这样的导入,那么他们的view ID的联合会被盲目地添加到View类型的所有类属性中。 允许多次导入的目的是解释一个布局文件包含另一个布局文件的情况。 这些结论是正确的吗? 围绕这个特性的实现还有其他有趣的细节吗? 我正在使用kotlin-gradle-plugin的版本1.1.2-5。

Kotlin中@JvmSynthetic的用途是什么?

我遇到了@JvmSynthetic -stdlib中的@JvmSynthetic注解,我想知道它是什么,但不幸的是,它是无证的。 据我所知,将其应用到程序元素将添加synthetic修饰符到相应的字节码元素。 因此,元素在Java中变得不可见: class MyClass { @JvmSynthetic fun f() { } } Java代码中的某处: MyClass c = new MyClass(); cf() // Error: cannot resolve method f() 但是在Kotlin代码中仍然可以看到相同的元素: val c = MyClass() cf() // OK 隐藏来自非Kotlin资源的声明是否有效使用@JvmSynthetic ? 这是预期的用途吗? 什么是其他适当的用例? 由于@JvmSynthetic隐藏了Java的函数,所以它们不能在Java中被覆盖(当涉及到一个abstract成员时,这些调用将导致AbstractMethodError )。 鉴于此,我可以使用@JvmSynthetic来禁止在Java源代码中覆盖Kotlin类的成员吗?