MDC Button MaterialShapeDrawable странные тени и без ряби - PullRequest
0 голосов
/ 04 июня 2019

Как и вложения в в этом выпуске , угловые тени моей кнопки выглядят довольно странно.Но с пользовательской обработкой края и закругленного угла кнопка, кажется, теряет высоту, и эффект ряби / щелчка отсутствует.Есть идеи, что я сделал неправильно?

enter image description here

Версия материала 1.1.0-alpha07

class CurvedEdgeTreatment (private val size: Float) : EdgeTreatment(), Cloneable {

    public override fun clone(): EdgeTreatment {
        return super<EdgeTreatment>.clone()
    }

    override fun getEdgePath(length: Float, center: Float, interpolation: Float, shapePath: ShapePath) {
        shapePath.quadToPoint(center, -size * interpolation, length, 0f)
    }
}

class ButtonActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_button)

        val shapeAppearanceModel = ShapeAppearanceModel().apply {
            setAllCorners(RoundedCornerTreatment(12.dpToPx(resources.displayMetrics).toFloat()))
            setAllEdges(CurvedEdgeTreatment(3.dpToPx(resources.displayMetrics).toFloat()))
        }

        val backgroundDrawable = MaterialShapeDrawable(shapeAppearanceModel).apply {
            setTint(ContextCompat.getColor(this@ButtonActivity, R.color.color_secondary))
            shadowCompatibilityMode = SHADOW_COMPAT_MODE_ALWAYS
            elevation = 12f
            setUseTintColorForShadow(true)
            paintStyle = Paint.Style.FILL
        }

        raisedContainedButton.background = backgroundDrawable
    }

    fun Int.dpToPx(displayMetrics: DisplayMetrics): Int = (this * displayMetrics.density).toInt()

    fun Int.pxToDp(displayMetrics: DisplayMetrics): Int = (this / displayMetrics.density).toInt()
}



<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:gravity="center"
        android:orientation="vertical">

        <FrameLayout
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:orientation="vertical"
                android:gravity="center"
                android:padding="16dp"
                android:clipChildren="false"
                android:clipToPadding="false">

            <com.google.android.material.button.MaterialButton
                    android:id="@+id/raisedContainedButton"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="I am a button la la la la la la"/>

        </FrameLayout>

</LinearLayout>
...