首页 > 解决方案 > ChildView 是否可以 setSaturation 值大于 Parent?

问题描述

我有一个布局,一个 ImageView 在一个 FrameLayout 中,ImageView 的原色是红色。首先我将 FrameLayout 设置为灰色。代码如下:

public GrayFramLayout(@NonNull Context context, @Nullable AttributeSet attrs) {
        super(context, attrs);
        ColorMatrix cm = new ColorMatrix();
        cm.setSaturation(0);
        mPaint.setColorFilter(new ColorMatrixColorFilter(cm));
    }

    public GrayFramLayout(@NonNull Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
    }

    @Override
    protected void dispatchDraw(Canvas canvas) {
        canvas.saveLayer(null, mPaint, Canvas.ALL_SAVE_FLAG);
        super.dispatchDraw(canvas);
        canvas.restore();
        //canvas.save();

    }

   @Override
  public void onClick(View v) {
  if(ivTest != null) {
    ColorMatrix cm = new ColorMatrix();
    cm.setSaturation(1);
    mPaint.setColorFilter(new ColorMatrixColorFilter(cm));
   ivTest.setLayerType(View.LAYER_TYPE_HARDWARE, mPaint);

   }
}

运行应用程序后,ImageView 是灰色的,然后我点击 ImageView,调用代码,但 ImageView 不能是原来的红色!任何人都可以帮助我吗?

标签: android

解决方案


推荐阅读