Skip to content

Commit

Permalink
video scale type demo
Browse files Browse the repository at this point in the history
  • Loading branch information
iielse committed Sep 6, 2022
1 parent fd282fe commit dd324c9
Show file tree
Hide file tree
Showing 6 changed files with 48 additions and 6 deletions.
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package com.github.iielse.imageviewer.demo.business

import android.os.Bundle
import android.view.View
import androidx.activity.viewModels
import androidx.appcompat.app.AppCompatActivity
import androidx.recyclerview.widget.GridLayoutManager
Expand All @@ -11,6 +12,7 @@ import com.github.iielse.imageviewer.demo.databinding.MainActivityBinding
import com.github.iielse.imageviewer.demo.utils.App
import com.github.iielse.imageviewer.demo.utils.statusBarHeight
import com.github.iielse.imageviewer.utils.Config
import com.github.iielse.imageviewer.widgets.video.ExoVideoView

class MainActivity : AppCompatActivity() {
private val binding by lazy { MainActivityBinding.inflate(layoutInflater) }
Expand Down Expand Up @@ -77,10 +79,28 @@ class MainActivity : AppCompatActivity() {
ViewerHelper.simplePlayVideo = !isSimplePlayVideo
binding.simplePlayVideo.text = if (!isSimplePlayVideo) "Video(simple)" else "Video(controlView)"
}
binding.videoScaleType.setOnClickListener {
when(ViewerHelper.videoScaleType) {
ExoVideoView.SCALE_TYPE_FIT_XY -> {
ViewerHelper.videoScaleType = ExoVideoView.SCALE_TYPE_CENTER_CROP
binding.videoScaleType.text = "videoScaleType(centerCrop)"
Config.VIDEO_SCALE_TYPE = ExoVideoView.SCALE_TYPE_CENTER_CROP
}
ExoVideoView.SCALE_TYPE_CENTER_CROP -> {
ViewerHelper.videoScaleType = ExoVideoView.SCALE_TYPE_FIT_CENTER
binding.videoScaleType.text = "videoScaleType(fitCenter)"
Config.VIDEO_SCALE_TYPE = ExoVideoView.SCALE_TYPE_FIT_CENTER
}
ExoVideoView.SCALE_TYPE_FIT_CENTER -> {
ViewerHelper.videoScaleType = ExoVideoView.SCALE_TYPE_FIT_XY
binding.videoScaleType.text = "videoScaleType(fitXY)"
Config.VIDEO_SCALE_TYPE = ExoVideoView.SCALE_TYPE_FIT_XY
}
}
}
binding.customTransition.setOnClickListener {
CustomTransitionHelper.show(it)
}

binding.recyclerView.layoutManager = GridLayoutManager(this, 3)
binding.recyclerView.adapter = adapter
adapter.setListener(::handleAdapterListener)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ import com.github.iielse.imageviewer.demo.core.viewer.SimpleTransformer
import com.github.iielse.imageviewer.demo.data.MyData
import com.github.iielse.imageviewer.demo.data.Service
import com.github.iielse.imageviewer.demo.utils.PAGE_SIZE
import com.github.iielse.imageviewer.widgets.video.ExoVideoView

/**
* viewer的自定义初始化方案
Expand All @@ -21,6 +22,7 @@ object ViewerHelper {
var loadAllAtOnce: Boolean = false
var fullScreen: Boolean = false
var simplePlayVideo: Boolean = true
var videoScaleType: Int = ExoVideoView.SCALE_TYPE_FIT_CENTER

fun provideImageViewerBuilder(context: FragmentActivity, clickedData: MyData): ImageViewerBuilder {
// 数据提供者 一次加载 or 分页
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,11 @@ class SimpleImageLoader : ImageLoader {
findLoadingView(viewHolder)?.visibility = View.VISIBLE
}
cover.postDelayed(loadingTask, Config.DURATION_TRANSITION + 1500)
when(exoVideoView.scaleType) {
ExoVideoView.SCALE_TYPE_FIT_XY -> cover.scaleType = ImageView.ScaleType.FIT_XY
ExoVideoView.SCALE_TYPE_CENTER_CROP -> cover.scaleType = ImageView.ScaleType.CENTER_CROP
ExoVideoView.SCALE_TYPE_FIT_CENTER -> cover.scaleType = ImageView.ScaleType.FIT_CENTER
}
Glide.with(exoVideoView).load(it)
.placeholder(cover.drawable)
.into(cover)
Expand Down
12 changes: 11 additions & 1 deletion app/src/main/res/layout/main_activity.xml
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,16 @@
app:layout_constraintBottom_toTopOf="@id/orientation"
app:layout_constraintStart_toStartOf="parent" />

<Button
android:id="@+id/videoScaleType"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="videoScaleType(fitCenter)"
android:textAllCaps="false"
android:textSize="10dp"
app:layout_constraintBottom_toBottomOf="@id/simplePlayVideo"
app:layout_constraintStart_toEndOf="@id/simplePlayVideo" />

<Button
android:id="@+id/customTransition"
android:layout_width="wrap_content"
Expand All @@ -57,5 +67,5 @@
android:textAllCaps="false"
android:textSize="10dp"
app:layout_constraintBottom_toBottomOf="@id/simplePlayVideo"
app:layout_constraintStart_toEndOf="@id/simplePlayVideo" />
app:layout_constraintStart_toEndOf="@id/videoScaleType" />
</androidx.constraintlayout.widget.ConstraintLayout>
4 changes: 2 additions & 2 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,6 @@ ext {
buildToolsVersion= "30.0.3"
minSdkVersion = 21
targetSdkVersion = 30
versionCode = 223
versionName = "2.1.17"
versionCode = 224
versionName = "2.1.18"
}
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,8 @@ open class ExoVideoView @JvmOverloads constructor(
private val listeners = mutableListOf<AnalyticsListener>()
private var playUrl: String? = null
protected var prepared = false
private var scaleType = Config.VIDEO_SCALE_TYPE
private var st = Config.VIDEO_SCALE_TYPE
val scaleType get() = st

fun prepare(url: String) {
playUrl = url
Expand Down Expand Up @@ -79,6 +80,10 @@ open class ExoVideoView @JvmOverloads constructor(
exoPlayer = null
}

fun setScaleType(st: Int) {
this.st = st
}

fun setVideoRenderedCallback(listener: VideoRenderedListener?) {
videoRenderedCallback = listener
}
Expand Down Expand Up @@ -123,7 +128,7 @@ open class ExoVideoView @JvmOverloads constructor(
}

private fun updateTextureViewSize(videoWidth: Int, videoHeight: Int) {
when (scaleType) {
when (st) {
SCALE_TYPE_FIT_CENTER -> fitCenter(videoWidth, videoHeight)
SCALE_TYPE_CENTER_CROP -> centerCrop(videoWidth, videoHeight)
SCALE_TYPE_FIT_XY -> fitXY(videoWidth, videoHeight)
Expand Down

0 comments on commit dd324c9

Please sign in to comment.