Add zoom param to glass material

Test: manual
Change-Id: I80bb57261524fb9afcb8214590d2b66c05ba6aca
This commit is contained in:
Lucas Dupin
2020-09-01 16:21:29 -07:00
parent b05a7e5972
commit e8761ca582
3 changed files with 58 additions and 4 deletions

View File

@@ -67,6 +67,21 @@
app:layout_constraintHorizontal_bias="1.0"
app:layout_constraintStart_toStartOf="parent" />
<SeekBar
android:id="@+id/zoom"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginBottom="16dp"
android:layout_marginEnd="12dp"
android:layout_marginStart="12dp"
android:min="-100"
android:max="100"
android:progress="-15"
app:layout_constraintBottom_toTopOf="@+id/blurRadiusTitle"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="1.0"
app:layout_constraintStart_toStartOf="parent" />
<SeekBar
android:id="@+id/blurRadius"
android:layout_width="0dp"
@@ -75,7 +90,7 @@
android:layout_marginEnd="12dp"
android:layout_marginStart="12dp"
android:max="150"
android:progress="50"
android:progress="20"
app:layout_constraintBottom_toTopOf="@+id/materialOpacityTitle"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="1.0"
@@ -131,6 +146,17 @@
app:layout_constraintBottom_toTopOf="@+id/materialOpacity"
app:layout_constraintStart_toStartOf="parent" />
<TextView
android:id="@+id/zoomTitle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="24dp"
android:layout_marginBottom="8dp"
android:text="Zoom"
android:textColor="@android:color/white"
app:layout_constraintBottom_toTopOf="@+id/zoom"
app:layout_constraintStart_toStartOf="parent" />
<TextView
android:id="@+id/blurRadiusTitle"
android:layout_width="wrap_content"
@@ -200,7 +226,7 @@
android:layout_marginStart="24dp"
android:layout_marginBottom="8dp"
android:text="Light Material"
app:layout_constraintBottom_toTopOf="@+id/blurRadiusTitle"
app:layout_constraintBottom_toTopOf="@+id/zoomTitle"
app:layout_constraintStart_toStartOf="parent" />
<TextView
@@ -212,6 +238,15 @@
app:layout_constraintBottom_toBottomOf="@+id/blurRadiusTitle"
app:layout_constraintStart_toEndOf="@+id/blurRadiusTitle" />
<TextView
android:id="@+id/zoomValue"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="TextView"
android:layout_marginLeft="8dp"
app:layout_constraintBottom_toBottomOf="@+id/zoomTitle"
app:layout_constraintStart_toEndOf="@+id/zoomTitle" />
<TextView
android:id="@+id/materialOpacityValue"
android:layout_width="wrap_content"

View File

@@ -39,11 +39,13 @@ class GlassActivity : Activity(), SeekBar.OnSeekBarChangeListener {
lateinit var noiseOpacitySeekBar: SeekBar
lateinit var materialOpacitySeekBar: SeekBar
lateinit var scrimOpacitySeekBar: SeekBar
lateinit var zoomSeekBar: SeekBar
lateinit var blurRadiusSeekBar: SeekBar
lateinit var noiseOpacityValue: TextView
lateinit var materialOpacityValue: TextView
lateinit var scrimOpacityValue: TextView
lateinit var blurRadiusValue: TextView
lateinit var zoomValue: TextView
lateinit var background: Bitmap
@@ -58,12 +60,14 @@ class GlassActivity : Activity(), SeekBar.OnSeekBarChangeListener {
materialView = requireViewById(R.id.materialView)
materialOpacitySeekBar = requireViewById(R.id.materialOpacity)
blurRadiusSeekBar = requireViewById(R.id.blurRadius)
zoomSeekBar = requireViewById(R.id.zoom)
noiseOpacitySeekBar = requireViewById(R.id.noiseOpacity)
scrimOpacitySeekBar = requireViewById(R.id.scrimOpacity)
noiseOpacityValue = requireViewById(R.id.noiseOpacityValue)
materialOpacityValue = requireViewById(R.id.materialOpacityValue)
scrimOpacityValue = requireViewById(R.id.scrimOpacityValue)
blurRadiusValue = requireViewById(R.id.blurRadiusValue)
zoomValue = requireViewById(R.id.zoomValue)
background = BitmapFactory.decodeResource(resources, R.drawable.background1)
backgroundView.setImageBitmap(background)
@@ -75,7 +79,7 @@ class GlassActivity : Activity(), SeekBar.OnSeekBarChangeListener {
scrimOpacitySeekBar.setOnSeekBarChangeListener(this)
arrayOf(blurRadiusSeekBar, materialOpacitySeekBar, noiseOpacitySeekBar,
scrimOpacitySeekBar).forEach {
scrimOpacitySeekBar, zoomSeekBar).forEach {
it.setOnSeekBarChangeListener(this)
onProgressChanged(it, it.progress, fromUser = false)
}
@@ -104,6 +108,10 @@ class GlassActivity : Activity(), SeekBar.OnSeekBarChangeListener {
materialView.scrimOpacity = progress / seekBar.max.toFloat()
scrimOpacityValue.text = progress.toString()
}
zoomSeekBar -> {
materialView.zoom = progress / seekBar.max.toFloat()
zoomValue.text = progress.toString()
}
else -> throw IllegalArgumentException("Unknown seek bar")
}
}

View File

@@ -70,6 +70,12 @@ class GlassView(context: Context, attributeSet: AttributeSet) : View(context, at
invalidate()
}
var zoom = 0.0f
set(value) {
field = value
invalidate()
}
var color = Color.BLACK
set(value) {
field = value
@@ -107,7 +113,12 @@ class GlassView(context: Context, attributeSet: AttributeSet) : View(context, at
}
override fun onDraw(canvas: Canvas?) {
src.set(left, top, right, bottom)
src.set(-width/2, -height/2, width/2, height/2)
src.scale(1.0f + zoom)
val centerX = left + width / 2
val centerY = top + height / 2
src.set(src.left + centerX, src.top + centerY, src.right + centerX, src.bottom + centerY)
dst.set(0, 0, width, height)
canvas?.drawBitmap(backgroundBitmap, src, dst, blurPaint)
canvas?.drawRect(dst, materialPaint)