Change image on swipe
This commit is contained in:
parent
cda09a4e8a
commit
cb07227cb7
@ -6,6 +6,7 @@ import androidx.appcompat.app.AppCompatActivity
|
|||||||
import androidx.fragment.app.Fragment
|
import androidx.fragment.app.Fragment
|
||||||
import apps.amine.bou.readerforselfoss.R
|
import apps.amine.bou.readerforselfoss.R
|
||||||
import kotlinx.android.synthetic.main.fragment_article.view.webcontent
|
import kotlinx.android.synthetic.main.fragment_article.view.webcontent
|
||||||
|
import kotlin.math.abs
|
||||||
|
|
||||||
class ImageFragment : Fragment() {
|
class ImageFragment : Fragment() {
|
||||||
|
|
||||||
@ -31,6 +32,28 @@ class ImageFragment : Fragment() {
|
|||||||
view.webcontent.settings.setSupportZoom(true)
|
view.webcontent.settings.setSupportZoom(true)
|
||||||
view.webcontent.settings.setBuiltInZoomControls(true)
|
view.webcontent.settings.setBuiltInZoomControls(true)
|
||||||
view.webcontent.settings.setDisplayZoomControls(false)
|
view.webcontent.settings.setDisplayZoomControls(false)
|
||||||
|
|
||||||
|
val gestureDetector = GestureDetector(activity, object : GestureDetector.SimpleOnGestureListener() {
|
||||||
|
override fun onFling(e1: MotionEvent?, e2: MotionEvent?, velocityX: Float, velocityY: Float): Boolean {
|
||||||
|
val SWIPE_MIN_DISTANCE = 120
|
||||||
|
val SWIPE_MAX_OFF_PATH = 250
|
||||||
|
val SWIPE_THRESHOLD_VELOCITY = 200
|
||||||
|
if (abs(e1!!.y - e2!!.y) > SWIPE_MAX_OFF_PATH)
|
||||||
|
return false
|
||||||
|
if (e1.x - e2.x > SWIPE_MIN_DISTANCE
|
||||||
|
&& abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) {
|
||||||
|
changeImage(1)
|
||||||
|
}
|
||||||
|
else if (e2.x - e1.x > SWIPE_MIN_DISTANCE
|
||||||
|
&& abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) {
|
||||||
|
changeImage(-1)
|
||||||
|
}
|
||||||
|
|
||||||
|
return super.onFling(e1, e2, velocityX, velocityY);
|
||||||
|
}
|
||||||
|
})
|
||||||
|
view.webcontent.setOnTouchListener { _, event -> gestureDetector.onTouchEvent(event)}
|
||||||
|
|
||||||
view.webcontent.loadUrl(allImages[position])
|
view.webcontent.loadUrl(allImages[position])
|
||||||
|
|
||||||
return view
|
return view
|
||||||
@ -45,6 +68,16 @@ class ImageFragment : Fragment() {
|
|||||||
super.onDestroy()
|
super.onDestroy()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun changeImage(change : Int) {
|
||||||
|
position += change
|
||||||
|
if (position < 0 || position >= allImages.size) {
|
||||||
|
position -= change
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
view!!.webcontent.loadUrl(allImages[position])
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
private const val ARG_POSITION = "position"
|
private const val ARG_POSITION = "position"
|
||||||
private const val ARG_IMAGES = "allImages"
|
private const val ARG_IMAGES = "allImages"
|
||||||
|
Loading…
Reference in New Issue
Block a user