fix: Fix Only the original thread that created a view hierarchy can touch it's views
error (#2278)
* fix: Fix `Only the original thread that created a view hierarchy can touch its views` error * fix: Also call `SurfaceHolder` method on UI Thread
This commit is contained in:
parent
7fccee226c
commit
263065048c
@ -9,6 +9,7 @@ import android.view.Gravity
|
|||||||
import android.view.SurfaceHolder
|
import android.view.SurfaceHolder
|
||||||
import android.view.SurfaceView
|
import android.view.SurfaceView
|
||||||
import android.widget.FrameLayout
|
import android.widget.FrameLayout
|
||||||
|
import com.facebook.react.bridge.UiThreadUtil
|
||||||
import com.mrousavy.camera.extensions.bigger
|
import com.mrousavy.camera.extensions.bigger
|
||||||
import com.mrousavy.camera.extensions.getMaximumPreviewSize
|
import com.mrousavy.camera.extensions.getMaximumPreviewSize
|
||||||
import com.mrousavy.camera.extensions.getPreviewTargetSize
|
import com.mrousavy.camera.extensions.getPreviewTargetSize
|
||||||
@ -21,19 +22,21 @@ import kotlin.math.roundToInt
|
|||||||
class PreviewView(context: Context, callback: SurfaceHolder.Callback) : SurfaceView(context) {
|
class PreviewView(context: Context, callback: SurfaceHolder.Callback) : SurfaceView(context) {
|
||||||
var size: Size = getMaximumPreviewSize()
|
var size: Size = getMaximumPreviewSize()
|
||||||
set(value) {
|
set(value) {
|
||||||
|
field = value
|
||||||
|
UiThreadUtil.runOnUiThread {
|
||||||
Log.i(TAG, "Resizing PreviewView to ${value.width} x ${value.height}...")
|
Log.i(TAG, "Resizing PreviewView to ${value.width} x ${value.height}...")
|
||||||
holder.setFixedSize(value.width, value.height)
|
holder.setFixedSize(value.width, value.height)
|
||||||
requestLayout()
|
requestLayout()
|
||||||
invalidate()
|
invalidate()
|
||||||
field = value
|
}
|
||||||
}
|
}
|
||||||
var resizeMode: ResizeMode = ResizeMode.COVER
|
var resizeMode: ResizeMode = ResizeMode.COVER
|
||||||
set(value) {
|
set(value) {
|
||||||
if (value != field) {
|
field = value
|
||||||
|
UiThreadUtil.runOnUiThread {
|
||||||
requestLayout()
|
requestLayout()
|
||||||
invalidate()
|
invalidate()
|
||||||
}
|
}
|
||||||
field = value
|
|
||||||
}
|
}
|
||||||
|
|
||||||
init {
|
init {
|
||||||
|
Loading…
Reference in New Issue
Block a user