diff --git a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/utils/FrameAnimatorContainer.kt b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/utils/FrameAnimatorContainer.kt index a68c11dca2..fbeda056df 100644 --- a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/utils/FrameAnimatorContainer.kt +++ b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/utils/FrameAnimatorContainer.kt @@ -7,9 +7,10 @@ import android.os.Handler import android.os.Looper import android.widget.ImageView import com.mogo.commons.AbsMogoApplication +import java.lang.RuntimeException import java.lang.ref.SoftReference -class FrameAnimatorContainer (resId: Int, fps: Int, imageView: ImageView,initFirstFrame:Boolean = true){ +class FrameAnimatorContainer (resId: Int, fps: Int, imageView: ImageView,initFirstFrame:Boolean = true,width:Int = -1,height:Int = -1){ private lateinit var mFrames: IntArray // 帧数组 private var mIndex = 0 // 当前帧 private var mShouldRun = false // 开始/停止播放用 @@ -22,10 +23,17 @@ class FrameAnimatorContainer (resId: Int, fps: Int, imageView: ImageView,initFir private var mBitmapOptions: BitmapFactory.Options? = null //Bitmap管理类,可有效减少Bitmap的OOM问题 init { - createAnimation(imageView, getData(resId), fps,initFirstFrame) + createAnimation(imageView, getData(resId), fps,initFirstFrame,width,height) } - private fun createAnimation(imageView: ImageView, frames: IntArray, fps: Int, initFirstFrame:Boolean) { + private fun createAnimation( + imageView: ImageView, + frames: IntArray, + fps: Int, + initFirstFrame: Boolean, + width: Int, + height: Int + ) { mHandler = Handler(Looper.myLooper()!!) mFrames = frames mIndex = -1 @@ -36,13 +44,25 @@ class FrameAnimatorContainer (resId: Int, fps: Int, imageView: ImageView,initFir if(initFirstFrame) { imageView.setImageResource(mFrames[0]) } - + var widthImage = -1 + var heightImage = -1 + var config = Bitmap.Config.ARGB_8888 + if(width>0&&height>0){ + widthImage = width + heightImage = height + }else{ + try { + val bmp = (imageView.drawable as BitmapDrawable).bitmap + widthImage = bmp.width + heightImage = bmp.height + config = bmp.config + }catch (e:Exception){ + throw RuntimeException("请设置图片或传递大小") + } + } // 当图片大小类型相同时进行复用,避免频繁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) + + mBitmap = Bitmap.createBitmap(widthImage, heightImage, config) mBitmapOptions = BitmapFactory.Options() //设置Bitmap内存复用 mBitmapOptions!!.inBitmap = mBitmap //Bitmap复用内存块,类似对象池,避免不必要的内存分配和回收 diff --git a/OCH/taxi/driver/src/main/java/com/mogo/och/taxi/ui/BaseTaxiTabFragment.java b/OCH/taxi/driver/src/main/java/com/mogo/och/taxi/ui/BaseTaxiTabFragment.java index 88f8b9baac..8f34ee8a99 100644 --- a/OCH/taxi/driver/src/main/java/com/mogo/och/taxi/ui/BaseTaxiTabFragment.java +++ b/OCH/taxi/driver/src/main/java/com/mogo/och/taxi/ui/BaseTaxiTabFragment.java @@ -22,6 +22,7 @@ import androidx.annotation.Nullable; import androidx.constraintlayout.widget.Group; import androidx.fragment.app.FragmentTransaction; +import com.mogo.commons.AbsMogoApplication; import com.mogo.commons.mvp.IView; import com.mogo.commons.mvp.MvpFragment; import com.mogo.commons.mvp.Presenter; @@ -38,6 +39,7 @@ import com.mogo.eagle.core.function.hmi.ui.msgbox.DriverMsgBoxListView; import com.mogo.eagle.core.function.view.MapBizView; import com.mogo.eagle.core.function.smp.view.SmallMapView; import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger; +import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant; import com.mogo.eagle.core.utilcode.mogo.view.OnPreventFastClickListener; import com.mogo.eagle.core.utilcode.util.ToastUtils; import com.mogo.eagle.core.utilcode.util.UiThreadHandler; @@ -45,12 +47,14 @@ import com.mogo.map.listener.IMogoMapListener; import com.mogo.map.uicontroller.IMogoMapUIController; import com.mogo.map.uicontroller.VisualAngleMode; import com.mogo.och.common.module.utils.AnimatorDrawableUtil; +import com.mogo.och.common.module.utils.FrameAnimatorContainer; import com.mogo.och.taxi.R; import java.util.Arrays; import java.util.Objects; import bag_manager.BagManagerOuterClass; +import me.jessyan.autosize.utils.AutoSizeUtils; import mogo.telematics.pad.MessagePad; import record_cache.RecordPanelOuterClass; @@ -94,61 +98,8 @@ public abstract class BaseTaxiTabFragment CallerLogger.d(SceneConstant.M_TAXI_P + TAG, "自动驾驶动画暂停")); + startManCOAnimator = new FrameAnimatorContainer(R.array.nim_flow_man_co, 20,mAnimFlowIv,false,width,height); + startManCOAnimator.setOnAnimStopListener(() -> CallerLogger.d(SceneConstant.M_TAXI_P + TAG, "平行驾驶动画暂停")); } @Override @@ -423,52 +382,51 @@ public abstract class BaseTaxiTabFragment + + + @drawable/anim_flow_00000 + @drawable/anim_flow_00001 + @drawable/anim_flow_00002 + @drawable/anim_flow_00003 + @drawable/anim_flow_00004 + @drawable/anim_flow_00005 + @drawable/anim_flow_00006 + @drawable/anim_flow_00007 + @drawable/anim_flow_00008 + @drawable/anim_flow_00009 + + @drawable/anim_flow_00010 + @drawable/anim_flow_00011 + @drawable/anim_flow_00012 + @drawable/anim_flow_00013 + @drawable/anim_flow_00014 + @drawable/anim_flow_00015 + @drawable/anim_flow_00016 + @drawable/anim_flow_00017 + @drawable/anim_flow_00018 + @drawable/anim_flow_00019 + + @drawable/anim_flow_00020 + @drawable/anim_flow_00021 + @drawable/anim_flow_00022 + @drawable/anim_flow_00023 + @drawable/anim_flow_00024 + @drawable/anim_flow_00025 + @drawable/anim_flow_00026 + @drawable/anim_flow_00027 + @drawable/anim_flow_00028 + @drawable/anim_flow_00029 + + + @drawable/anim_flow_00030 + @drawable/anim_flow_00031 + @drawable/anim_flow_00032 + @drawable/anim_flow_00033 + @drawable/anim_flow_00034 + @drawable/anim_flow_00035 + @drawable/anim_flow_00036 + @drawable/anim_flow_00037 + @drawable/anim_flow_00038 + @drawable/anim_flow_00039 + + @drawable/anim_flow_00040 + @drawable/anim_flow_00041 + @drawable/anim_flow_00042 + @drawable/anim_flow_00043 + @drawable/anim_flow_00044 + @drawable/anim_flow_00045 + @drawable/anim_flow_00046 + @drawable/anim_flow_00047 + @drawable/anim_flow_00048 + @drawable/anim_flow_00049 + + @drawable/anim_flow_00050 + @drawable/anim_flow_00051 + @drawable/anim_flow_00052 + @drawable/anim_flow_00053 + @drawable/anim_flow_00054 + @drawable/anim_flow_00055 + @drawable/anim_flow_00056 + @drawable/anim_flow_00057 + @drawable/anim_flow_00058 + @drawable/anim_flow_00059 + + + + + @drawable/anim_flow_man_co_00000 + @drawable/anim_flow_man_co_00001 + @drawable/anim_flow_man_co_00002 + @drawable/anim_flow_man_co_00003 + @drawable/anim_flow_man_co_00004 + @drawable/anim_flow_man_co_00005 + @drawable/anim_flow_man_co_00006 + @drawable/anim_flow_man_co_00007 + @drawable/anim_flow_man_co_00008 + @drawable/anim_flow_man_co_00009 + @drawable/anim_flow_man_co_00010 + @drawable/anim_flow_man_co_00011 + @drawable/anim_flow_man_co_00012 + @drawable/anim_flow_man_co_00013 + @drawable/anim_flow_man_co_00014 + @drawable/anim_flow_man_co_00015 + @drawable/anim_flow_man_co_00016 + @drawable/anim_flow_man_co_00017 + @drawable/anim_flow_man_co_00018 + @drawable/anim_flow_man_co_00019 + @drawable/anim_flow_man_co_00020 + @drawable/anim_flow_man_co_00021 + @drawable/anim_flow_man_co_00022 + @drawable/anim_flow_man_co_00023 + @drawable/anim_flow_man_co_00024 + @drawable/anim_flow_man_co_00025 + @drawable/anim_flow_man_co_00026 + @drawable/anim_flow_man_co_00027 + @drawable/anim_flow_man_co_00028 + @drawable/anim_flow_man_co_00029 + @drawable/anim_flow_man_co_00030 + @drawable/anim_flow_man_co_00031 + @drawable/anim_flow_man_co_00032 + @drawable/anim_flow_man_co_00033 + @drawable/anim_flow_man_co_00034 + @drawable/anim_flow_man_co_00035 + @drawable/anim_flow_man_co_00036 + @drawable/anim_flow_man_co_00037 + @drawable/anim_flow_man_co_00038 + @drawable/anim_flow_man_co_00039 + @drawable/anim_flow_man_co_00040 + @drawable/anim_flow_man_co_00041 + @drawable/anim_flow_man_co_00042 + @drawable/anim_flow_man_co_00043 + @drawable/anim_flow_man_co_00044 + @drawable/anim_flow_man_co_00045 + @drawable/anim_flow_man_co_00046 + @drawable/anim_flow_man_co_00047 + @drawable/anim_flow_man_co_00048 + @drawable/anim_flow_man_co_00049 + @drawable/anim_flow_man_co_00050 + @drawable/anim_flow_man_co_00051 + @drawable/anim_flow_man_co_00052 + @drawable/anim_flow_man_co_00053 + @drawable/anim_flow_man_co_00054 + @drawable/anim_flow_man_co_00055 + @drawable/anim_flow_man_co_00056 + @drawable/anim_flow_man_co_00057 + @drawable/anim_flow_man_co_00058 + @drawable/anim_flow_man_co_00059 + + + + \ No newline at end of file diff --git a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/base/BaseTaxiTabFragment.kt b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/base/BaseTaxiTabFragment.kt index 0ee272ed4a..5fbb56c5db 100644 --- a/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/base/BaseTaxiTabFragment.kt +++ b/OCH/taxi/unmanned-driver/src/main/java/com/mogo/och/taxi/ui/base/BaseTaxiTabFragment.kt @@ -10,6 +10,7 @@ import android.view.View import android.view.animation.LinearInterpolator import androidx.fragment.app.FragmentTransaction import androidx.localbroadcastmanager.content.LocalBroadcastManager +import com.mogo.commons.AbsMogoApplication import com.mogo.commons.mvp.IView import com.mogo.commons.mvp.MvpFragment import com.mogo.commons.mvp.Presenter @@ -28,7 +29,7 @@ import com.mogo.eagle.core.utilcode.mogo.view.OnPreventFastClickListener import com.mogo.eagle.core.utilcode.util.UiThreadHandler import com.mogo.map.listener.IMogoMapListener import com.mogo.map.uicontroller.VisualAngleMode -import com.mogo.och.common.module.utils.AnimatorDrawableUtil +import com.mogo.och.common.module.utils.FrameAnimatorContainer import com.mogo.och.common.module.wigets.StartAutopilotAnimationView import com.mogo.och.taxi.R import com.mogo.och.taxi.constant.TaxiUnmannedConst @@ -57,6 +58,7 @@ import kotlinx.android.synthetic.main.taxi_base_fragment.taxi_switch_icon import kotlinx.android.synthetic.main.taxi_base_fragment.viewDriverMsgBoxBubble import kotlinx.android.synthetic.main.taxi_base_fragment.viewDriverMsgBoxButton import kotlinx.android.synthetic.main.taxi_base_fragment.viewDriverMsgBoxList +import me.jessyan.autosize.utils.AutoSizeUtils import kotlin.math.abs /** @@ -78,61 +80,8 @@ abstract class BaseTaxiTabFragment> : MvpFragment> : MvpFragment> : MvpFragment> : MvpFragment> : MvpFragment> : MvpFragment> : MvpFragment + + + @drawable/anim_flow_00000 + @drawable/anim_flow_00001 + @drawable/anim_flow_00002 + @drawable/anim_flow_00003 + @drawable/anim_flow_00004 + @drawable/anim_flow_00005 + @drawable/anim_flow_00006 + @drawable/anim_flow_00007 + @drawable/anim_flow_00008 + @drawable/anim_flow_00009 + + @drawable/anim_flow_00010 + @drawable/anim_flow_00011 + @drawable/anim_flow_00012 + @drawable/anim_flow_00013 + @drawable/anim_flow_00014 + @drawable/anim_flow_00015 + @drawable/anim_flow_00016 + @drawable/anim_flow_00017 + @drawable/anim_flow_00018 + @drawable/anim_flow_00019 + + @drawable/anim_flow_00020 + @drawable/anim_flow_00021 + @drawable/anim_flow_00022 + @drawable/anim_flow_00023 + @drawable/anim_flow_00024 + @drawable/anim_flow_00025 + @drawable/anim_flow_00026 + @drawable/anim_flow_00027 + @drawable/anim_flow_00028 + @drawable/anim_flow_00029 + + + @drawable/anim_flow_00030 + @drawable/anim_flow_00031 + @drawable/anim_flow_00032 + @drawable/anim_flow_00033 + @drawable/anim_flow_00034 + @drawable/anim_flow_00035 + @drawable/anim_flow_00036 + @drawable/anim_flow_00037 + @drawable/anim_flow_00038 + @drawable/anim_flow_00039 + + @drawable/anim_flow_00040 + @drawable/anim_flow_00041 + @drawable/anim_flow_00042 + @drawable/anim_flow_00043 + @drawable/anim_flow_00044 + @drawable/anim_flow_00045 + @drawable/anim_flow_00046 + @drawable/anim_flow_00047 + @drawable/anim_flow_00048 + @drawable/anim_flow_00049 + + @drawable/anim_flow_00050 + @drawable/anim_flow_00051 + @drawable/anim_flow_00052 + @drawable/anim_flow_00053 + @drawable/anim_flow_00054 + @drawable/anim_flow_00055 + @drawable/anim_flow_00056 + @drawable/anim_flow_00057 + @drawable/anim_flow_00058 + @drawable/anim_flow_00059 + + + + + @drawable/anim_flow_man_co_00000 + @drawable/anim_flow_man_co_00001 + @drawable/anim_flow_man_co_00002 + @drawable/anim_flow_man_co_00003 + @drawable/anim_flow_man_co_00004 + @drawable/anim_flow_man_co_00005 + @drawable/anim_flow_man_co_00006 + @drawable/anim_flow_man_co_00007 + @drawable/anim_flow_man_co_00008 + @drawable/anim_flow_man_co_00009 + @drawable/anim_flow_man_co_00010 + @drawable/anim_flow_man_co_00011 + @drawable/anim_flow_man_co_00012 + @drawable/anim_flow_man_co_00013 + @drawable/anim_flow_man_co_00014 + @drawable/anim_flow_man_co_00015 + @drawable/anim_flow_man_co_00016 + @drawable/anim_flow_man_co_00017 + @drawable/anim_flow_man_co_00018 + @drawable/anim_flow_man_co_00019 + @drawable/anim_flow_man_co_00020 + @drawable/anim_flow_man_co_00021 + @drawable/anim_flow_man_co_00022 + @drawable/anim_flow_man_co_00023 + @drawable/anim_flow_man_co_00024 + @drawable/anim_flow_man_co_00025 + @drawable/anim_flow_man_co_00026 + @drawable/anim_flow_man_co_00027 + @drawable/anim_flow_man_co_00028 + @drawable/anim_flow_man_co_00029 + @drawable/anim_flow_man_co_00030 + @drawable/anim_flow_man_co_00031 + @drawable/anim_flow_man_co_00032 + @drawable/anim_flow_man_co_00033 + @drawable/anim_flow_man_co_00034 + @drawable/anim_flow_man_co_00035 + @drawable/anim_flow_man_co_00036 + @drawable/anim_flow_man_co_00037 + @drawable/anim_flow_man_co_00038 + @drawable/anim_flow_man_co_00039 + @drawable/anim_flow_man_co_00040 + @drawable/anim_flow_man_co_00041 + @drawable/anim_flow_man_co_00042 + @drawable/anim_flow_man_co_00043 + @drawable/anim_flow_man_co_00044 + @drawable/anim_flow_man_co_00045 + @drawable/anim_flow_man_co_00046 + @drawable/anim_flow_man_co_00047 + @drawable/anim_flow_man_co_00048 + @drawable/anim_flow_man_co_00049 + @drawable/anim_flow_man_co_00050 + @drawable/anim_flow_man_co_00051 + @drawable/anim_flow_man_co_00052 + @drawable/anim_flow_man_co_00053 + @drawable/anim_flow_man_co_00054 + @drawable/anim_flow_man_co_00055 + @drawable/anim_flow_man_co_00056 + @drawable/anim_flow_man_co_00057 + @drawable/anim_flow_man_co_00058 + @drawable/anim_flow_man_co_00059 + + + + \ No newline at end of file