在Android中的FrameLayout/Layout上放置阴影模糊效果

在Android中的FrameLayout/Layout上放置阴影模糊效果,android,android-canvas,android-view,android-paint,android-blur-effect,Android,Android Canvas,Android View,Android Paint,Android Blur Effect,我正在尝试在矩形布局视图上使用颜色制作阴影模糊效果。我尝试过使用这个代码,但是没有用 int glowRadius = 14; int glowColor = Color.parseColor("#acc5fe"); Paint paint = new Paint(); paint.setColor(glowColor); paint.setMaskFilter(new BlurMaskFilter(glowRadius, BlurMaskFilte

我正在尝试在矩形布局视图上使用颜色制作阴影模糊效果。我尝试过使用这个代码,但是没有用

    int glowRadius = 14;

    int glowColor = Color.parseColor("#acc5fe");

    Paint paint = new Paint();
    paint.setColor(glowColor);

    paint.setMaskFilter(new BlurMaskFilter(glowRadius, BlurMaskFilter.Blur.OUTER));
    RectF rectF = new RectF(mRootView.getHeight(), mRootView.getWidth(),
            mRootView.getHeight(), mRootView.getWidth());
    Canvas canvas = new Canvas();
    canvas.drawRect(rectF, paint);
    mRootView.draw(canvas);
但它似乎什么也没做。 我也尝试过使用shadowDx和shadowDy等,但那没有任何作用

这是一个非常类似的问题,但我不认为9补丁是一个可行的解决方案,因为它是一个布局,而不是一个图像

如何在Android上创建阴影模糊效果?

更新

仍然没有找到一个成功的答案。我想要像这样的东西

其中,阴影效果位于电子邮件编辑文本上,颜色与黑色不同

尝试跟随支持凸面材质阴影的库


我从你的问题中了解到的是,首先你想投下阴影。下面是你可以做的一些事情来投下阴影。
只需将其添加到xml中的父布局中

android:background="@android:drawable/dialog_holo_light_frame"
查看此答案以了解更多信息。
让我知道这是否适合你

编辑: 请检查这个答案。这可能对你有帮助。
它可以通过使用。下面是一个简单的例子

  protected NinePatchDrawable bg;
  protected Paint paint;
  protected Rect padding = new Rect();
  protected Bitmap bmp;

      protected void init() {
        // decode the 9patch drawable
        bg = (NinePatchDrawable) getResources().getDrawable(R.drawable.balloon);

        // get paddings from the 9patch and apply them to the View
        bg.getPadding(padding);
        setPadding(padding.left, padding.top, padding.right, padding.bottom);

        // prepare the Paint to use below
        paint = new Paint();
        paint.setAntiAlias(true);
        paint.setColor(Color.rgb(255,255,255));
        paint.setStyle(Style.FILL);

        // this check is needed in order to get this code
        // working if target SDK>=11
        if( Build.VERSION.SDK_INT >= 11 )
          setLayerType(View.LAYER_TYPE_SOFTWARE, paint);

        // set the shadowLayer
        paint.setShadowLayer(
          padding.left * .2f, // radius
          0f, // blurX
          padding.left * .1f, // blurY
          Color.argb(128, 0, 0, 0) // shadow color
        );
      }
另外,请尝试这种颜色:

Color.argb(128, 0, 0, 0)

如何更改颜色?我需要一种特定的颜色,例如#acc5fe请使用
paint.setShadowLayout
而不是
int-glowColor=color.parseColor(#acc5fe”)
@John61590像one-link一样声明
扩展Android视图类以添加dropshadow
。因此,创建一个名为
MyLayout
的新类,并将其扩展到,比如说,
LinearLayout
,现在创建名为
init()
的方法,并以编程方式调用
MyLayout.init()