diff --git a/OCH/charter/passenger/src/main/java/com/mogo/och/bus/passenger/ui/lockview/LockManager.kt b/OCH/charter/passenger/src/main/java/com/mogo/och/bus/passenger/ui/lockview/LockManager.kt new file mode 100644 index 0000000000..b87b227900 --- /dev/null +++ b/OCH/charter/passenger/src/main/java/com/mogo/och/bus/passenger/ui/lockview/LockManager.kt @@ -0,0 +1,71 @@ +package com.mogo.och.bus.passenger.ui.lockview + +import android.os.Handler +import android.os.HandlerThread +import android.os.Message +import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger +import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant +import java.util.concurrent.ConcurrentHashMap + +object LockManager { + + @Volatile + private var isLock:Boolean = false + private var handler:Handler?=null + + private const val TAG = "LockManager" + + private var mLockChnageListener = ConcurrentHashMap() + + fun startLoop4Lock(){ + val frequentThread = HandlerThread("frequent_drawer") + frequentThread.start() + handler = object : Handler(frequentThread.looper) { + override fun handleMessage(msg: Message) { + super.handleMessage(msg) + CallerLogger.d(SceneConstant.M_BUS_P + TAG, "2分钟没有触摸屏幕导致锁屏") + setLock(true) + } + } + reStartCountDown() + } + + fun stopLoop4Lock(){ + handler?.looper?.quitSafely() + handler = null + } + + fun setAutoStatusCallback(tag: String, callback: LockStatusCallback?) { + if (tag.isBlank()) return + if (callback == null) { + mLockChnageListener.remove(tag) + return + } + mLockChnageListener[tag] = callback + } + + + fun reStartCountDown(){ + handler?.removeMessages(1) + handler?.sendEmptyMessageDelayed(1,120_000) + } + + @Synchronized + fun isLocak():Boolean{ + CallerLogger.d(TAG,"锁定状态:${isLock}") + return isLock + } + @Synchronized + fun setLock(isLock: Boolean){ + if(this.isLock!=isLock){ + this.isLock = isLock + mLockChnageListener.forEach { + it.value.lockStatusChange(this.isLock) + } + } + } + + interface LockStatusCallback { + fun lockStatusChange(isLock: Boolean) + } +} \ No newline at end of file diff --git a/OCH/charter/passenger/src/main/java/com/mogo/och/bus/passenger/ui/lockview/LockViewConstrainLayout.kt b/OCH/charter/passenger/src/main/java/com/mogo/och/bus/passenger/ui/lockview/LockViewConstrainLayout.kt new file mode 100644 index 0000000000..2d1865a42e --- /dev/null +++ b/OCH/charter/passenger/src/main/java/com/mogo/och/bus/passenger/ui/lockview/LockViewConstrainLayout.kt @@ -0,0 +1,74 @@ +package com.mogo.och.bus.passenger.ui.lockview + +import android.content.Context +import android.util.AttributeSet +import android.view.MotionEvent +import androidx.constraintlayout.widget.ConstraintLayout +import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger +import com.mogo.och.bus.passenger.R + +class LockViewConstrainLayout : ConstraintLayout { + + private val TAG = "LockView" + + constructor(context: Context) : super(context) + + constructor(context: Context, attributeSet: AttributeSet) : super(context, attributeSet) + + constructor(context: Context, attributeSet: AttributeSet, defStyleAttr: Int) : super( + context, + attributeSet, + defStyleAttr + ) + + private var acivScreenLock:UnLockView?=null + + override fun onAttachedToWindow() { + super.onAttachedToWindow() + LockManager.startLoop4Lock() + } + + override fun onDetachedFromWindow() { + super.onDetachedFromWindow() + LockManager.stopLoop4Lock() + } + + override fun onInterceptTouchEvent(event: MotionEvent?): Boolean { + if (acivScreenLock == null) { + acivScreenLock = findViewById(R.id.aciv_screen_lock) + } + + LockManager.reStartCountDown() + + var needInterceptTouch = true + acivScreenLock?.apply { + event?.let { + val location = IntArray(2) + getLocationInWindow(location) + CallerLogger.d("LockViewConstrainLayout", "${location[0]}---${location[1]}--${location[0]+width}---${location[1]+height}---${it.rawX}----${it.rawY}") + val mleft = location[0] + val mtop = location[1] + val mright = location[0]+width + val mbottom = location[1]+height + if (it.rawX > mleft && it.rawX < mright && it.rawY > mtop && it.rawY < mbottom) { + // 不拦截 + needInterceptTouch = false + CallerLogger.d("LockViewConstrainLayout", "不拦截") + } + } + } + CallerLogger.d("LockViewConstrainLayout", "是否拦截 ${needInterceptTouch}") + return if(needInterceptTouch) { + if(LockManager.isLocak()){ + + true + }else{ + super.onInterceptTouchEvent(event) + } + }else{ + false + } + } + + +} \ No newline at end of file diff --git a/OCH/charter/passenger/src/main/java/com/mogo/och/bus/passenger/ui/lockview/UnLockView.kt b/OCH/charter/passenger/src/main/java/com/mogo/och/bus/passenger/ui/lockview/UnLockView.kt new file mode 100644 index 0000000000..be7d30d297 --- /dev/null +++ b/OCH/charter/passenger/src/main/java/com/mogo/och/bus/passenger/ui/lockview/UnLockView.kt @@ -0,0 +1,106 @@ +package com.mogo.och.bus.passenger.ui.lockview + +import android.content.Context +import android.util.AttributeSet +import android.view.MotionEvent +import android.view.ViewGroup +import android.widget.ImageView +import androidx.appcompat.widget.AppCompatImageView +import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger +import com.mogo.och.bus.passenger.R +import com.mogo.och.common.module.utils.RxUtils +import com.mogo.och.taxi.passenger.widget.animutils.AnimationsContainer +import io.reactivex.disposables.Disposable + +class UnLockView : AppCompatImageView, LockManager.LockStatusCallback { + + constructor(context: Context) : super(context) + + constructor(context: Context, attributeSet: AttributeSet) : super(context, attributeSet) + + constructor(context: Context, attributeSet: AttributeSet, defStyleAttr: Int) : super( + context, + attributeSet, + defStyleAttr + ) + + val TAG = "UnLockView" + + private var animations: AnimationsContainer?=null + private var aciv_screen_unlock_ani: ImageView?=null + private var unLockDelay: Disposable? = null + private var downType:DownType = DownType.NONE + + override fun dispatchTouchEvent(event: MotionEvent?): Boolean { + return super.dispatchTouchEvent(event) + } + + override fun onAttachedToWindow() { + super.onAttachedToWindow() + if (parent is ViewGroup) { + aciv_screen_unlock_ani = (parent as ViewGroup).findViewById(R.id.aciv_screen_unlock_ani) + aciv_screen_unlock_ani?.let { + animations = AnimationsContainer(R.array.openlock,12,it) + animations!!.setOnAnimStopListener(object :AnimationsContainer.OnAnimationStoppedListener{ + override fun AnimationStopped() { + it.setImageDrawable(null) + } + }) + } + } + LockManager.setAutoStatusCallback(TAG,this) + } + + override fun onTouchEvent(event: MotionEvent?): Boolean { + when (event?.action) { + MotionEvent.ACTION_DOWN -> { + if(LockManager.isLocak()){ + downType = DownType.LOCK + animations?.reStart() + RxUtils.disposeSubscribe(unLockDelay) + unLockDelay = RxUtils.createSubscribe { + LockManager.setLock(false) + animations?.stop() + } + }else{ + downType = DownType.UNLOCK + } + CallerLogger.d(TAG,"ACTION_DOWN") + } + MotionEvent.ACTION_MOVE -> {} + MotionEvent.ACTION_UP -> { + if(downType==DownType.LOCK) { + RxUtils.disposeSubscribe(unLockDelay) + animations?.stop() + }else{ + if (!LockManager.isLocak()) { + CallerLogger.d(TAG,"onClick") + LockManager.setLock(true) + } + } + CallerLogger.d(TAG,"ACTION_UP") + } + + MotionEvent.ACTION_CANCEL -> { + RxUtils.disposeSubscribe(unLockDelay) + animations?.stop() + CallerLogger.d(TAG,"ACTION_CANCEL") + } + + else -> {} + } + return true + } + + enum class DownType{ + NONE,LOCK,UNLOCK + } + + override fun lockStatusChange(isLock: Boolean) { + if(isLock){ + setImageResource(R.drawable.charter_p_lock) + }else{ + setImageResource(R.drawable.charter_p_unlock) + } + } +} \ No newline at end of file diff --git a/OCH/charter/passenger/src/main/java/com/mogo/och/bus/passenger/ui/orderinfo/OrderInfoView.kt b/OCH/charter/passenger/src/main/java/com/mogo/och/bus/passenger/ui/orderinfo/OrderInfoView.kt index 19fa1fec2a..9dd947ecbf 100644 --- a/OCH/charter/passenger/src/main/java/com/mogo/och/bus/passenger/ui/orderinfo/OrderInfoView.kt +++ b/OCH/charter/passenger/src/main/java/com/mogo/och/bus/passenger/ui/orderinfo/OrderInfoView.kt @@ -33,15 +33,6 @@ class OrderInfoView : ConstraintLayout, OrderInfoViewModel.ItineraryViewCallback defStyleAttr ) - constructor( - context: Context, - attributeSet: AttributeSet, - defStyleAttr: Int, - defStyleRes: Int - ) : super(context, attributeSet, defStyleAttr, defStyleRes){ - initView() - } - var goneViewListener: IClearViewCallback?=null var viewModel:OrderInfoViewModel?=null diff --git a/OCH/charter/passenger/src/main/java/com/mogo/och/bus/passenger/utils/animutils/AnimationsContainer.kt b/OCH/charter/passenger/src/main/java/com/mogo/och/bus/passenger/utils/animutils/AnimationsContainer.kt new file mode 100644 index 0000000000..f6144be7fd --- /dev/null +++ b/OCH/charter/passenger/src/main/java/com/mogo/och/bus/passenger/utils/animutils/AnimationsContainer.kt @@ -0,0 +1,152 @@ +package com.mogo.och.taxi.passenger.widget.animutils + +import android.graphics.Bitmap +import android.graphics.BitmapFactory +import android.graphics.drawable.BitmapDrawable +import android.os.Handler +import android.os.Looper +import android.widget.ImageView +import com.mogo.commons.AbsMogoApplication +import java.lang.ref.SoftReference + +class AnimationsContainer(resId: Int, fps: Int, imageView: ImageView) { + private lateinit var mFrames: IntArray // 帧数组 + private var mIndex = 0 // 当前帧 + private var mShouldRun = false // 开始/停止播放用 + private var mIsRunning = false // 动画是否正在播放,防止重复播放 + private var mSoftReferenceImageView: SoftReference? = null // 软引用ImageView,以便及时释放掉 + private var mHandler: Handler? = null + private var mDelayMillis = 0 + private var mOnAnimationStoppedListener: OnAnimationStoppedListener? = null//播放停止监听 + private var mBitmap: Bitmap? = null + private var mBitmapOptions: BitmapFactory.Options? = null //Bitmap管理类,可有效减少Bitmap的OOM问题 + + init { + createAnimation(imageView, getData(resId), fps) + } + + private fun createAnimation(imageView: ImageView, frames: IntArray, fps: Int) { + mHandler = Handler(Looper.myLooper()!!) + mFrames = frames + mIndex = -1 + mSoftReferenceImageView = SoftReference(imageView) + mShouldRun = false + mIsRunning = false + mDelayMillis = 1000 / fps //帧动画时间间隔,毫秒 + imageView.setImageResource(mFrames[0]) + + // 当图片大小类型相同时进行复用,避免频繁GC + val bmp = (imageView.drawable as BitmapDrawable).bitmap + val width = bmp.width + val height = bmp.height + val config = bmp.config + mBitmap = Bitmap.createBitmap(width, height, config) + mBitmapOptions = BitmapFactory.Options() + //设置Bitmap内存复用 + mBitmapOptions!!.inBitmap = mBitmap //Bitmap复用内存块,类似对象池,避免不必要的内存分配和回收 + mBitmapOptions!!.inMutable = true //解码时返回可变Bitmap + mBitmapOptions!!.inSampleSize = 1 //缩放比例 + } + + //循环读取下一帧 + private val next: Int + get() { + mIndex++ + if (mIndex >= mFrames.size) mIndex = 0 + return mFrames[mIndex] + } + + @Synchronized + fun reStart(){ + mIndex = 0 + start() + } + + /** + * 播放动画,同步锁防止多线程读帧时,数据安全问题 + */ + @Synchronized + fun start() { + mShouldRun = true + if (mIsRunning) return + val runnable: Runnable = object : Runnable { + override fun run() { + val imageView = mSoftReferenceImageView!!.get() + if (!mShouldRun || imageView == null) { + mIsRunning = false + if (mOnAnimationStoppedListener != null) { + mOnAnimationStoppedListener!!.AnimationStopped() + } + return + } + mIsRunning = true + //新开线程去读下一帧 + mHandler!!.postDelayed(this, mDelayMillis.toLong()) + if (imageView.isShown) { + val imageRes: Int = next + if (mBitmap != null) { // so Build.VERSION.SDK_INT >= 11 + var bitmap: Bitmap? = null + try { + bitmap = BitmapFactory.decodeResource( + imageView.resources, + imageRes, + mBitmapOptions + ) + } catch (e: Exception) { + e.printStackTrace() + } + if (bitmap != null) { + imageView.setImageBitmap(bitmap) + } else { + imageView.setImageResource(imageRes) + mBitmap!!.recycle() + mBitmap = null + } + } else { + imageView.setImageResource(imageRes) + } + } + } + } + mHandler!!.post(runnable) + } + + /** + * 停止播放 + */ + @Synchronized + fun stop() { + mShouldRun = false + } + + /** + * 设置停止播放监听 + * @param listener 设置监听 + */ + fun setOnAnimStopListener(listener: OnAnimationStoppedListener?) { + mOnAnimationStoppedListener = listener + } + + /** + * 从xml中读取帧数组 + * @param resId + * @return + */ + private fun getData(resId: Int): IntArray { + val array = AbsMogoApplication.getApp().resources.obtainTypedArray(resId) + val len = array.length() + val intArray = IntArray(array.length()) + for (i in 0 until len) { + intArray[i] = array.getResourceId(i, 0) + } + array.recycle() + return intArray + } + + /** + * 停止播放监听 + */ + interface OnAnimationStoppedListener { + fun AnimationStopped() + } +} \ No newline at end of file diff --git a/OCH/charter/passenger/src/main/res/drawable-nodpi/charter_p_lock.png b/OCH/charter/passenger/src/main/res/drawable-nodpi/charter_p_lock.png new file mode 100644 index 0000000000..6099b5f6b6 Binary files /dev/null and b/OCH/charter/passenger/src/main/res/drawable-nodpi/charter_p_lock.png differ diff --git a/OCH/charter/passenger/src/main/res/drawable-nodpi/charter_p_lock_bg.png b/OCH/charter/passenger/src/main/res/drawable-nodpi/charter_p_lock_bg.png new file mode 100644 index 0000000000..0d50a64803 Binary files /dev/null and b/OCH/charter/passenger/src/main/res/drawable-nodpi/charter_p_lock_bg.png differ diff --git a/OCH/charter/passenger/src/main/res/drawable-nodpi/charter_p_unlock.png b/OCH/charter/passenger/src/main/res/drawable-nodpi/charter_p_unlock.png new file mode 100644 index 0000000000..b800bf0d2f Binary files /dev/null and b/OCH/charter/passenger/src/main/res/drawable-nodpi/charter_p_unlock.png differ diff --git a/OCH/charter/passenger/src/main/res/drawable-nodpi/open_lock_000.png b/OCH/charter/passenger/src/main/res/drawable-nodpi/open_lock_000.png new file mode 100755 index 0000000000..07584d2e00 Binary files /dev/null and b/OCH/charter/passenger/src/main/res/drawable-nodpi/open_lock_000.png differ diff --git a/OCH/charter/passenger/src/main/res/drawable-nodpi/open_lock_001.png b/OCH/charter/passenger/src/main/res/drawable-nodpi/open_lock_001.png new file mode 100755 index 0000000000..4349516af9 Binary files /dev/null and b/OCH/charter/passenger/src/main/res/drawable-nodpi/open_lock_001.png differ diff --git a/OCH/charter/passenger/src/main/res/drawable-nodpi/open_lock_002.png b/OCH/charter/passenger/src/main/res/drawable-nodpi/open_lock_002.png new file mode 100755 index 0000000000..5dbbd6d4d2 Binary files /dev/null and b/OCH/charter/passenger/src/main/res/drawable-nodpi/open_lock_002.png differ diff --git a/OCH/charter/passenger/src/main/res/drawable-nodpi/open_lock_003.png b/OCH/charter/passenger/src/main/res/drawable-nodpi/open_lock_003.png new file mode 100755 index 0000000000..72f1ec561a Binary files /dev/null and b/OCH/charter/passenger/src/main/res/drawable-nodpi/open_lock_003.png differ diff --git a/OCH/charter/passenger/src/main/res/drawable-nodpi/open_lock_004.png b/OCH/charter/passenger/src/main/res/drawable-nodpi/open_lock_004.png new file mode 100755 index 0000000000..e2f4c2d849 Binary files /dev/null and b/OCH/charter/passenger/src/main/res/drawable-nodpi/open_lock_004.png differ diff --git a/OCH/charter/passenger/src/main/res/drawable-nodpi/open_lock_005.png b/OCH/charter/passenger/src/main/res/drawable-nodpi/open_lock_005.png new file mode 100755 index 0000000000..6968c68033 Binary files /dev/null and b/OCH/charter/passenger/src/main/res/drawable-nodpi/open_lock_005.png differ diff --git a/OCH/charter/passenger/src/main/res/drawable-nodpi/open_lock_006.png b/OCH/charter/passenger/src/main/res/drawable-nodpi/open_lock_006.png new file mode 100755 index 0000000000..3ea261d7a6 Binary files /dev/null and b/OCH/charter/passenger/src/main/res/drawable-nodpi/open_lock_006.png differ diff --git a/OCH/charter/passenger/src/main/res/drawable-nodpi/open_lock_007.png b/OCH/charter/passenger/src/main/res/drawable-nodpi/open_lock_007.png new file mode 100755 index 0000000000..c6ea721dda Binary files /dev/null and b/OCH/charter/passenger/src/main/res/drawable-nodpi/open_lock_007.png differ diff --git a/OCH/charter/passenger/src/main/res/drawable-nodpi/open_lock_008.png b/OCH/charter/passenger/src/main/res/drawable-nodpi/open_lock_008.png new file mode 100755 index 0000000000..e2219294b7 Binary files /dev/null and b/OCH/charter/passenger/src/main/res/drawable-nodpi/open_lock_008.png differ diff --git a/OCH/charter/passenger/src/main/res/drawable-nodpi/open_lock_009.png b/OCH/charter/passenger/src/main/res/drawable-nodpi/open_lock_009.png new file mode 100755 index 0000000000..5e233dd0a8 Binary files /dev/null and b/OCH/charter/passenger/src/main/res/drawable-nodpi/open_lock_009.png differ diff --git a/OCH/charter/passenger/src/main/res/drawable-nodpi/open_lock_010.png b/OCH/charter/passenger/src/main/res/drawable-nodpi/open_lock_010.png new file mode 100755 index 0000000000..449e270bd9 Binary files /dev/null and b/OCH/charter/passenger/src/main/res/drawable-nodpi/open_lock_010.png differ diff --git a/OCH/charter/passenger/src/main/res/drawable-nodpi/open_lock_011.png b/OCH/charter/passenger/src/main/res/drawable-nodpi/open_lock_011.png new file mode 100755 index 0000000000..c1d6418082 Binary files /dev/null and b/OCH/charter/passenger/src/main/res/drawable-nodpi/open_lock_011.png differ diff --git a/OCH/charter/passenger/src/main/res/drawable-nodpi/open_lock_012.png b/OCH/charter/passenger/src/main/res/drawable-nodpi/open_lock_012.png new file mode 100755 index 0000000000..5f86bf3902 Binary files /dev/null and b/OCH/charter/passenger/src/main/res/drawable-nodpi/open_lock_012.png differ diff --git a/OCH/charter/passenger/src/main/res/drawable-nodpi/open_lock_013.png b/OCH/charter/passenger/src/main/res/drawable-nodpi/open_lock_013.png new file mode 100755 index 0000000000..3e31eb0784 Binary files /dev/null and b/OCH/charter/passenger/src/main/res/drawable-nodpi/open_lock_013.png differ diff --git a/OCH/charter/passenger/src/main/res/drawable-nodpi/open_lock_014.png b/OCH/charter/passenger/src/main/res/drawable-nodpi/open_lock_014.png new file mode 100755 index 0000000000..4be5a3b734 Binary files /dev/null and b/OCH/charter/passenger/src/main/res/drawable-nodpi/open_lock_014.png differ diff --git a/OCH/charter/passenger/src/main/res/drawable-nodpi/open_lock_015.png b/OCH/charter/passenger/src/main/res/drawable-nodpi/open_lock_015.png new file mode 100755 index 0000000000..a54a81aa24 Binary files /dev/null and b/OCH/charter/passenger/src/main/res/drawable-nodpi/open_lock_015.png differ diff --git a/OCH/charter/passenger/src/main/res/drawable-nodpi/open_lock_016.png b/OCH/charter/passenger/src/main/res/drawable-nodpi/open_lock_016.png new file mode 100755 index 0000000000..3b2f0eb470 Binary files /dev/null and b/OCH/charter/passenger/src/main/res/drawable-nodpi/open_lock_016.png differ diff --git a/OCH/charter/passenger/src/main/res/drawable-nodpi/open_lock_017.png b/OCH/charter/passenger/src/main/res/drawable-nodpi/open_lock_017.png new file mode 100755 index 0000000000..42ba59b5e4 Binary files /dev/null and b/OCH/charter/passenger/src/main/res/drawable-nodpi/open_lock_017.png differ diff --git a/OCH/charter/passenger/src/main/res/drawable-nodpi/open_lock_018.png b/OCH/charter/passenger/src/main/res/drawable-nodpi/open_lock_018.png new file mode 100755 index 0000000000..7048cf4ac0 Binary files /dev/null and b/OCH/charter/passenger/src/main/res/drawable-nodpi/open_lock_018.png differ diff --git a/OCH/charter/passenger/src/main/res/drawable-nodpi/open_lock_019.png b/OCH/charter/passenger/src/main/res/drawable-nodpi/open_lock_019.png new file mode 100755 index 0000000000..c0cf67e866 Binary files /dev/null and b/OCH/charter/passenger/src/main/res/drawable-nodpi/open_lock_019.png differ diff --git a/OCH/charter/passenger/src/main/res/drawable-nodpi/open_lock_020.png b/OCH/charter/passenger/src/main/res/drawable-nodpi/open_lock_020.png new file mode 100755 index 0000000000..e1f1876d21 Binary files /dev/null and b/OCH/charter/passenger/src/main/res/drawable-nodpi/open_lock_020.png differ diff --git a/OCH/charter/passenger/src/main/res/drawable-nodpi/open_lock_021.png b/OCH/charter/passenger/src/main/res/drawable-nodpi/open_lock_021.png new file mode 100755 index 0000000000..fa1bdc528a Binary files /dev/null and b/OCH/charter/passenger/src/main/res/drawable-nodpi/open_lock_021.png differ diff --git a/OCH/charter/passenger/src/main/res/drawable-nodpi/open_lock_022.png b/OCH/charter/passenger/src/main/res/drawable-nodpi/open_lock_022.png new file mode 100755 index 0000000000..a8b258d421 Binary files /dev/null and b/OCH/charter/passenger/src/main/res/drawable-nodpi/open_lock_022.png differ diff --git a/OCH/charter/passenger/src/main/res/drawable-nodpi/open_lock_023.png b/OCH/charter/passenger/src/main/res/drawable-nodpi/open_lock_023.png new file mode 100755 index 0000000000..a6c2645eb3 Binary files /dev/null and b/OCH/charter/passenger/src/main/res/drawable-nodpi/open_lock_023.png differ diff --git a/OCH/charter/passenger/src/main/res/layout/m1_main_fragment.xml b/OCH/charter/passenger/src/main/res/layout/m1_main_fragment.xml index ec3ea80438..ad454095d7 100644 --- a/OCH/charter/passenger/src/main/res/layout/m1_main_fragment.xml +++ b/OCH/charter/passenger/src/main/res/layout/m1_main_fragment.xml @@ -1,5 +1,5 @@ - @@ -40,14 +40,33 @@ app:layout_constraintBottom_toTopOf="@+id/bb_boorombar" app:layout_constraintEnd_toEndOf="parent" /> - - + + + + + - \ No newline at end of file + \ No newline at end of file diff --git a/OCH/charter/passenger/src/main/res/values/arrays.xml b/OCH/charter/passenger/src/main/res/values/arrays.xml new file mode 100644 index 0000000000..75bc4c91eb --- /dev/null +++ b/OCH/charter/passenger/src/main/res/values/arrays.xml @@ -0,0 +1,31 @@ + + + + @drawable/open_lock_000 + @drawable/open_lock_001 + @drawable/open_lock_002 + @drawable/open_lock_003 + @drawable/open_lock_004 + @drawable/open_lock_005 + @drawable/open_lock_006 + @drawable/open_lock_007 + @drawable/open_lock_008 + @drawable/open_lock_009 + + @drawable/open_lock_010 + @drawable/open_lock_011 + @drawable/open_lock_012 + @drawable/open_lock_013 + @drawable/open_lock_014 + @drawable/open_lock_015 + @drawable/open_lock_016 + @drawable/open_lock_017 + @drawable/open_lock_018 + @drawable/open_lock_019 + + @drawable/open_lock_020 + @drawable/open_lock_021 + @drawable/open_lock_022 + @drawable/open_lock_023 + + \ No newline at end of file