- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用定义为 9-patch 的 mask 来遮盖 FrameLayout。然而,尽管它在 5.0+ 的旧版本(例如 4.4.4)上运行良好,但补丁会留下不透明的黑色背景。除了在渲染到屏幕或恢复到软件层之前绘制到屏幕外位图之外,是否可以采取任何措施来避免这种情况?
public class MaskedLayout extends FrameLayout {
private final static PorterDuffXfermode DST_IN = new PorterDuffXfermode(PorterDuff.Mode.DST_IN);
private final Paint mPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
private NinePatchDrawable mMask;
private boolean mShowTail = true;
private boolean mReverseLayout;
public ChatBubbleLayout(Context context) {
this(context, null);
}
public ChatBubbleLayout(Context context, AttributeSet attrs) {
this(context, attrs, 0);
}
public ChatBubbleLayout(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
setWillNotDraw(false);
setLayerType(LAYER_TYPE_HARDWARE, mPaint);
mMask = createMask(R.drawable.mask);
}
private NinePatchDrawable createMask(@DrawableRes int res) {
final Bitmap maskBitmap = BitmapFactory.decodeResource(getResources(), res);
final NinePatch patch = new NinePatch(maskBitmap, maskBitmap.getNinePatchChunk(), "Mask");
return new NinePatchDrawable(getResources(), patch);
}
@Override
protected void onSizeChanged(int w, int h, int oldw, int oldh) {
super.onSizeChanged(w, h, oldw, oldh);
if (w != oldw || h != oldh) {
mMask.setBounds(0, 0, w, h);
}
}
@Override
protected void dispatchDraw(Canvas canvas) {
super.dispatchDraw(canvas);
mMask.getPaint().setXfermode(DST_IN);
mMask.draw(canvas);
}
}
最佳答案
试试这个:
public class MaskedLayout extends FrameLayout {
private NinePatchDrawable mMask;
public MaskedLayout(Context context) {
this(context, null);
}
public MaskedLayout(Context context, AttributeSet attrs) {
this(context, attrs, 0);
}
public MaskedLayout(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
mMask = (NinePatchDrawable) getResources().getDrawable(R.drawable.mask);
mMask.getPaint().setXfermode(new PorterDuffXfermode(PorterDuff.Mode.DST_IN));
}
@Override
protected void onSizeChanged(int w, int h, int oldw, int oldh) {
super.onSizeChanged(w, h, oldw, oldh);
mMask.setBounds(0, 0, w, h);
}
@Override
protected void dispatchDraw(Canvas canvas) {
canvas.saveLayer(null, null, Canvas.ALL_SAVE_FLAG);
super.dispatchDraw(canvas);
mMask.draw(canvas);
canvas.restore();
}
}
关于android - PorterDuff 掩蔽留下不透明的黑色背景,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37624857/
我正在尝试弄清楚如何屏蔽相对路径上的路径。这是我为 CSS 文件实现的自定义缩小器脚本,需要绝对相对路径。 假设我在 CSS 文件中有以下内容 url('../images/file.jpg') 这个
我正在尝试在我的 WordPress 图片/帖子中创建以下内容。 我也需要它具有响应能力,所以我使用了 Bootstrap 3 和背景图片。 帖子的代码片段: Titl
在考虑如何优化方面,我仍然是一个成熟的人。我有这部分代码,它接受已找到的峰的列表,并找到这些峰,+/- 某个值,位于多维数组中的位置。然后它将 +1 添加到它们的 zeros 数组的索引中。代码运行良
我正在使用 DirectX 9 开发游戏。这是我正在尝试做的事情: 渲染场景后,我想在它上面渲染一些 Sprite :整个场景上的黑色覆盖物和一些 Sprite ,它们是显示覆盖物应该有孔的蒙版。到目
有一个丰富的 UI 应用程序,我想在其中显示像这样复杂形状的图像 现在我想要的是根据蒙版图像裁剪我的图像,实际上 图像是动态的,可以从相机或图库(正方形或矩形形状)导入,我希望该图像适合在我上面的布局
我试图在谷歌地图应用程序上应用聚光灯效果。具体来说,我画了一个跟随鼠标的圆圈,并将其设置为 map 上的 mask 。问题是只显示了圆圈内的 map 区域,我知道它应该是面具的样子,但是有没有办法让圆
我正在使用 OpenGL/GLSL 实现一个绘图应用程序。有一个功能,用户可以使用带有图案图像的画笔绘制“蒙版”,同时背景会根据画笔的位置而变化。看看视频就明白了:video 我使用 CALayer
我正在尝试使用 HTML 和 CSS 创建一个“眨眼”动画。 我想要的是,当眼睛眨眼时,眼球不显示。 从代码中可以看出,眼睛由 4 个元素组成。 Div“眼睛”是眼睛所在的容器。 划分“eye1”和“
我正在尝试渲染 3 种纹理,-背景- 黑/白前景 mask -前景 我用过这个OpenGL - mask with multiple textures因为它准确地描述了我的问题。但我无法让它工作。我只
我正在尝试使用具有不同时间长度的序列在 Keras 中拟合 RNN。我的数据位于格式为 (sample, time, feature) = (20631, max_time, 24) 的 Numpy
所以,我想屏蔽 SparseTensor 的整行。使用 tf.boolean_mask 很容易做到这一点,但没有与 SparseTensor 等效的方法。目前,我可以只遍历 SparseTensor.
我正在尝试快速屏蔽图像。这是我的代码: (通常,originalImg 是从 UIImagePickerController 加载的图像,然后由 UIGraphicsGetImageFromCurre
我正在尝试使用 System.Drawing.Graphics 使用源 Bitmap 和 alpha 掩码 Bitmap 绘制图像目的。目前我循环 X 和 Y 并使用 GetPixel 和 SetPi
我是一名优秀的程序员,十分优秀!