Для этого примера у меня есть ImageView внутри Nested Scroll View.
Я хочу сжать, уменьшить изображение, когда я делаю прокрутку вниз, а когда я делаю прокрутку вверх, изображение увеличивается доВаш исходный размер программно.
Пример: мои Image.PivotX и PivotY = 0,5F для изменения размера в центре справа?
Я уже получаю scrollY из своего «Вложенного», получаю мои scaleX и scaleY из своего изображения, но я не знаю, как соответствовать каждому изменению scrollY, меняющему масштаб или размер моего изображения.
Это мой MainActivity
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
implementScrollListener()
}
private fun implementScrollListener() {
nestedScrollView.getViewTreeObserver()
.addOnScrollChangedListener(ViewTreeObserver.OnScrollChangedListener {
/* get the maximum height which I have scroll before performing any action (half of the screen for this example)*/
val maxDistance = nestedScrollView.scrollBarSize / 2
/* how much I have scrolled */
val movement = nestedScrollView.getScrollY()
if (movement >= 0 && movement <= maxDistance) {
ivNested3.pivotX = 0.5F
ivNested3.pivotY = 0.5F
ivNested3.getScaleX()
ivNested3.getScaleY()
//I should do the Shrink here??
}
nestedScrollView.setOnScrollChangeListener(
NestedScrollView.OnScrollChangeListener { v, scrollX, scrollY, oldScrollX, oldScrollY ->
if (scrollY > oldScrollY) {
Log.i("SCROLL", "Scroll DOWN")
}
if (scrollY < oldScrollY) {
Log.i("SCROLL", "Scroll UP")
}
})
})
}
fun scaleImage(v: View, barSize: Size) {
//I have to create another function to shrink the image?
v.pivotX = 0.5F
v.pivotY = 0.5F
}
}
И мой XML
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/colorPrimary"
tools:context=".MainActivity">
<androidx.core.widget.NestedScrollView
android:id="@+id/nestedScrollView"
android:layout_width="match_parent"
android:layout_height="0dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:id="@+id/ivNested"
android:layout_width="250dp"
android:layout_height="275dp"
android:layout_marginTop="100dp"
android:layout_marginStart="50dp"
android:layout_marginEnd="50dp"
android:background="@drawable/minion"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"/>
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.core.widget.NestedScrollView>
</androidx.constraintlayout.widget.ConstraintLayout>
Я ищу в других местах, но они используют анимацию, но я хочу выполнить это с помощью прокрутки, я установил минимумизображение может достигнуть, и исходный размер, а затем выполнить прокрутку вниз изображения, уменьшит достижение минимально допустимого размера, и при прокрутке вверх изображение вернется к исходному размеру.
Может кто-нибудь помочь с этой задачей/ проблема? Я не могу понять, как это сделать