问题描述
我想使用ConstraintSet编程地更改约束连接,并在检测到QR码时使用TransitionManager对其进行动画处理,但是它不起作用。约束连接不变。当我检测到QR码,最小化该应用程序并再次转到该应用程序时,我观察到约束连接发生了变化,但没有激活。如果单击按钮效果良好,则更改约束连接
代码:
class HireFragment : Fragment() {
private val requestCodeCameraPermission = 1001
private lateinit var cameraSource : CameraSource
private lateinit var detector : BarcodeDetector
private lateinit var v : View
override fun onCreateView(inflater: LayoutInflater,container: ViewGroup?,savedInstanceState: Bundle?): View? {
v = inflater.inflate(R.layout.fragment_hire,container,false)
if(ContextCompat.checkSelfPermission(requireContext(),android.Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED){
askForCameraPermission()
}else{
setupControls()
}
v.buttonStartHire.setonClickListener {
anim() //------------------------------------------------------------- WORK
}
return v
}
private fun setupControls(){
detector = BarcodeDetector.Builder(requireContext()).build()
cameraSource = CameraSource.Builder(requireContext(),detector).setAutoFocusEnabled(true).build()
v.surfaceView.holder.addCallback(surfaceCallBack)
detector.setProcessor(processor)
}
private fun askForCameraPermission(){
ActivityCompat.requestPermissions(requireActivity(),arrayOf(android.Manifest.permission.CAMERA),requestCodeCameraPermission)
}
override fun onRequestPermissionsResult(requestCode: Int,permissions: Array<out String>,grantResults: IntArray) {
super.onRequestPermissionsResult(requestCode,permissions,grantResults)
if(requestCode == requestCodeCameraPermission && grantResults.isNotEmpty()){
if(grantResults[0] == PackageManager.PERMISSION_GRANTED)
setupControls()
else
Toast.makeText(requireContext(),getText(R.string.hire_CameraPermsDenied),Toast.LENGTH_SHORT).show()
}
}
private val surfaceCallBack = object : SurfaceHolder.Callback{
override fun surfaceChanged(p0: SurfaceHolder,p1: Int,p2: Int,p3: Int) {
}
override fun surfaceDestroyed(p0: SurfaceHolder) {
cameraSource.stop()
}
@SuppressLint("MissingPermission")
override fun surfaceCreated(surfaceHolder: SurfaceHolder) {
try{
cameraSource.start(surfaceHolder)
}catch (e : Exception){
Toast.makeText(requireContext(),"Coś poszło nie tak",Toast.LENGTH_SHORT).show()
}
}
}
private val processor = object : Detector.Processor<Barcode> {
override fun release() {
}
override fun receiveDetections(detections: Detector.Detections<Barcode>?) {
if (detections != null && detections.detectedItems.isNotEmpty()) {
val qrCodes: SparseArray<Barcode> = detections.detectedItems
val code = qrCodes.valueAt(0)
codeDetected(code.displayValue)
}
}
}
private fun codeDetected(code : String){
if(code.length in 5..6) {
v.editTextStartMotorId.text =
Editable.Factory.getInstance().newEditable(code)
anim() //---------------------------------------------------------- DON'T WORK
}
}
private fun anim(){
val cSet = ConstraintSet()
cSet.clone(constLayParentHire)
cSet.clear(R.id.constLay1,ConstraintSet.BottOM)
cSet.connect(R.id.constLay1,ConstraintSet.BottOM,R.id.surfaceView,ConstraintSet.BottOM)
val trans = AutoTransition()
trans.duration = 500
trans.interpolator = AccelerateDecelerateInterpolator()
TransitionManager.beginDelayedTransition(constLayParentHire,trans)
cSet.applyTo(constLayParentHire)
}
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)