【问题标题】:Draw line with shadow用阴影画线
【发布时间】:2019-09-27 09:03:54
【问题描述】:

现在我画线没有阴影:

override fun onDraw(canvas: Canvas, parent: RecyclerView, state: RecyclerView.State) {
        val dividerStart = parent.paddingStart
        val dividerEnd = parent.width - parent.paddingEnd
        val endIndex = parent.adapter?.itemCount ?: 0
        for (index in 0 until endIndex) {
            val currentChild = parent.getChildAt(index)
            if (needDrawBottomDelimiter(parent, currentChild)) {
                val topOfCurrentView = currentChild.top
                val startX = dividerStart.toFloat()
                val topY = topOfCurrentView.toFloat() - rectHeight
                val endX = dividerEnd.toFloat()
                val bottomY = topOfCurrentView.toFloat()
                canvas.drawRect(startX, topY, endX, bottomY, spacePaint)
                canvas.drawLine(startX, bottomY, endX, bottomY, dividerPaint)
            }
        }
    }

我知道什么可以帮助我着色,但不知道如何在这里使用它。

在这里告诉我如何使用shader

【问题讨论】:

标签: android canvas kotlin


【解决方案1】:

在你的布局中你可以这样做:

    <View
    android:layout_width="match_parent"
    android:layout_height="0.5dp"
    android:elevation="5dp"
    android:background="@color/colorBlack" />

【讨论】:

  • 我需要以编程方式设置而不是整个视图
【解决方案2】:

您只需尝试以下方法:

 Paint paint;

 paint = new Paint(Paint.ANTI_ALIAS_FLAG);
 paint.setShadowLayer(12, 0, 0, Color.YELLOW);

 // Important for certain APIs 
 setLayerType(LAYER_TYPE_SOFTWARE, paint);

    @Override
    protected void onDraw(Canvas canvas)
    {   
        canvas.drawRect(20, 20, 100, 100, paint);
    }

【讨论】:

    【解决方案3】:

    我用commentdeepak kumar解决了问题

    dividerPaint.setShadowLayer(12F, 0F, 0F, Color.YELLOW)
    setLayerType(parent, LAYER_TYPE_SOFTWARE, dividerPaint)
    

    【讨论】:

      猜你喜欢
      • 2020-09-26
      • 1970-01-01
      • 2017-08-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-25
      • 2014-05-26
      • 1970-01-01
      相关资源
      最近更新 更多