相关疑难解决方法(0)

Android如何在ImageView上应用蒙版?

所以我从这里尝试了代码:用掩码创建一个ImageView.我使用以下图像作为原始和掩码:

在此输入图像描述在此输入图像描述

但是,我得到的结果是这样的:

在此输入图像描述

请注意,窗口背景不是黑色,而是全息光(在星系连接上看起来像一个非常浅的灰色,而不是完全白色).第二个图像是在列表视图中选择项目时得到的结果.

相反,如果我使用相同的算法创建一个新的位图,然后将其传递给图像视图而不是覆盖onDraw(),它会正确绘制:

Canvas canvas = new Canvas();
Bitmap mainImage = //get original image
Bitmap maskImage = //get mask image
Bitmap result = Bitmap.createBitmap(mainImage.getWidth(), mainImage.getHeight(), Bitmap.Config.ARGB_8888);

canvas.setBitmap(result);
Paint paint = new Paint();
paint.setFilterBitmap(false);

canvas.drawBitmap(mainImage, 0, 0, paint);
paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.DST_IN));
canvas.drawBitmap(maskImage, 0, 0, paint);
paint.setXfermode(null);

imageView.setImageBitmap(result);
Run Code Online (Sandbox Code Playgroud)

我得到了预期的结果:

在此输入图像描述

请注意,正确应用了淡入淡出.选择时,这一点更为明显.

那么ImageView的onDraw方法是如何创建这个黑色背景而不是让窗口背景显示的呢?有趣的是,如果原始图像本身具有一定的透明度,则该透明度得到尊重,例如:

在此输入图像描述

我自己无法弄明白.我宁愿能够在onDraw上进行,而不是预先创建位图,因为它只适用于位图作为源和掩码.我希望能够使用其他可绘制的内容,如渐变和纯色,但在这些情况下,宽度和高度未设置.

android android-imageview

33
推荐指数
1
解决办法
4万
查看次数

使用PorterDuff模式擦除位图部件

我尝试使用Porter-Duff Xfermodes在我的Android应用程序中擦除部分位图.

我有一个绿色背景,由蓝色位图覆盖.当我触摸屏幕时,应该创建覆盖位图中的"洞",使绿色背景可见.而不是一个洞,我当前的代码产生一个黑点.

以下是我的代码.任何想法,我在这里做错了什么?

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
            WindowManager.LayoutParams.FLAG_FULLSCREEN);
    setContentView(new DrawView(this));
}

public class DrawView extends View implements OnTouchListener {

    private int x = 0;
    private int y = 0;

    Bitmap bitmap;
    Canvas bitmapCanvas;

    private final Paint paint = new Paint();
    private final Paint eraserPaint = new Paint();

    public DrawView(Context context) {
        super(context);
        setFocusable(true);
        setFocusableInTouchMode(true);

        this.setOnTouchListener(this);

        // Set background
        this.setBackgroundColor(Color.GREEN);

        // Set bitmap
        bitmap = Bitmap.createBitmap(320, 480, …
Run Code Online (Sandbox Code Playgroud)

android image-manipulation

14
推荐指数
2
解决办法
2万
查看次数

使用CSS剪切文本

我尝试为CSS中的按钮创建悬停效果.
它应该如何完成

基本上,文本应该被"剪掉"其父元素,使其透视到网站背景.
我会用渐变做条纹,但我的问题是为字体添加透明度.
我查看了背景剪辑,但这与我试图实现的相反,并且会使事情变得更复杂.有没有一种简单的方法来实现这种效果?我不介意使用JS,但如果可能的话没有jQuery.

html css styles button

5
推荐指数
1
解决办法
5870
查看次数