Merge branch 'cv' into dev

This commit is contained in:
liujing
2020-09-17 10:03:31 +08:00
2 changed files with 37 additions and 30 deletions

View File

@@ -1,64 +1,71 @@
package com.mogo.module.v2x.utils.animation;
import android.graphics.drawable.AnimationDrawable;
import android.util.Log;
import android.os.Handler;
import android.os.Looper;
import android.os.Message;
import android.view.View;
import android.widget.ImageView;
import android.widget.ProgressBar;
import com.mogo.utils.ThreadPoolService;
import com.mogo.utils.UiThreadHandler;
public class V2XAnimationManager implements Animation {
private static final String TAG = "V2XAnimationManager";
private ProgressBar targetImageView;
private Animation delegate;
private boolean isStarted = false;
private int mStartIndex = 0;
private final static int MSG_LOOP = 3004;
private long INTERVAL = 100L;
private Handler mHandler = new Handler(Looper.getMainLooper()) {
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
switch (msg.what) {
case MSG_LOOP:
if (isStarted) {
// targetImageView.setImageResource( AnimationResources.loadingRes[mStartIndex++ % AnimationResources.loadingRes.length] );
mHandler.sendEmptyMessageDelayed(MSG_LOOP, INTERVAL);
}
break;
}
}
};
public void animationWithTarget(ProgressBar imageView, int[] resources, int duration) {
targetImageView = imageView;
ThreadPoolService.execute(() -> {
final AnimationDrawable drawable = new AnimationDrawable();
for (int i = 0; i < resources.length; i++) {
drawable.setOneShot(false);
drawable.addFrame(targetImageView.getResources().getDrawable(resources[i]), duration);
}
UiThreadHandler.post(() -> {
targetImageView.setBackground(drawable);
delegate = new DelegateDrawable(drawable);
start();
});
});
INTERVAL = duration;
start();
}
@Override
synchronized public void start() {
if (delegate != null && !isStarted) {
isStarted = true;
mHandler.sendEmptyMessage(MSG_LOOP);
if (targetImageView != null) {
targetImageView.setVisibility(View.VISIBLE);
isStarted = true;
delegate.start();
}
}
@Override
synchronized public void stop() {
if (delegate != null && isStarted) {
isStarted = false;
delegate.stop();
isStarted = false;
mHandler.removeMessages(MSG_LOOP);
if (targetImageView != null) {
targetImageView.setVisibility(View.INVISIBLE);
}
}
public void soptWithError(){
if (delegate != null && isStarted) {
isStarted = false;
delegate.stop();
public void soptWithError() {
stop();
if (targetImageView != null) {
targetImageView.setVisibility(View.VISIBLE);
}
}
public void release() {
delegate = null;
stop();
}
}

View File

@@ -36,7 +36,7 @@ public class V2XNetworkLoadingView extends RelativeLayout {
/*
添加动画图片资源
* */
// setLoadingImage(AnimationResources.loadingRes);
setLoadingImage(AnimationResources.loadingRes);
}
public V2XNetworkLoadingView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {