Add zoom param to glass material
Test: manual Change-Id: I80bb57261524fb9afcb8214590d2b66c05ba6aca
This commit is contained in:
@@ -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"
|
||||
|
||||
@@ -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")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user